What does GP do?
- GP是一种回归方法,但也能够用来分类和聚类
- 均值表示数据最有可能出现的位置
多变量高斯分布
- X ∼ N ( μ , Σ ) X\sim N(\mu,\Sigma) X∼N(μ,Σ): 包含的信息有每个变量的均值和协方差矩阵
- 均值决定分布中心
- 协方差矩阵确定形状
Marginalization & Conditioning
- 高斯过程的基础:边缘分布和条件分布依然是高斯
- 边缘分布:从联合概率分布分离出一个随机变量的概率分布
- 条件分布:从两个变量的概率分布得到条件随机变量的概率分布
高斯过程
- 函数的离散化表示:
- test point: 我们感兴趣预测的一系列离散的、具体的点
- 高斯过程是一个随机过程,是一个随机变量序列。假设这个序列的长度为 n n n,则这些序列就构成一个 n n n维高斯分布
- 高斯过程将训练点 Y Y Y和测试点 X X X放在一起建模为一个 n = ∣ X ∣ + ∣ Y ∣ n=|X|+|Y| n=∣X∣+∣Y∣维的高斯分布
- 把这个过程看做一个贝叶斯推断问题:随着新信息的获取而更新假设
获取 n n n维高斯分布的均值和协方差
-
kernel: 一个用于决定协方差的函数,又称作covariance function k ( ⋅ ) k(\cdot) k(⋅)
-
kernel输入为两个样本点,输出一个表示两个点的相似程度的标量值
- 对每个两两组合获取这个similarity metrix,作为样本点间的协方差
- 核函数的选择需要保证生成的矩阵满足协方差矩阵的性质
-
对 n n n维高斯分布进行的每一次采样就是取到了一系列函数值
-
先验分布:
- 在没有拿到任何数据时的分布称为先验分布 P X P_X PX
- 不同的核函数对应出不同的采样函数!
-
后验分布:
- 后验分布是拿到训练数据 Y Y Y后的分布 P X ∣ Y P_{X|Y} PX∣Y
- 首先构造一个 ∣ X ∣ + ∣ Y ∣ |X|+|Y| ∣X∣+∣Y∣维的联合概率分布,用核函数计算出协方差矩阵
- 根据联合概率分布得到条件概率分布 P X ∣ Y P_{X|Y} PX∣Y
- 通过取条件分布,被预测函数被强行限制穿过样本
代码实现
步骤
- 核函数选择:表述数据点之间的相似度
- 核参数优化:(可省略)自动进行参数调优
- 预测:利用训练数据和核参数,通过GP的闭合形式解或者通过采样方法来预测新的数据点
参数含义
在高斯过程回归中,三个主要的参数具有以下含义:
-
长度尺度( l l l):长度尺度决定了不同输入点之间的相似度衰减的速度。较大的长度尺度意味着输入点的相似度衰减得较慢,产生更平滑的函数;而较小的长度尺度会产生更为波动的函数。
-
输出尺度( s f sf sf):输出尺度控制了函数值的变化范围。较大的输出尺度将导致函数值变化的范围更大。
-
噪声标准差( s n sn sn):噪声标准差参数表示观测噪声的大小。它帮助模型了解观测数据中的噪声程度,从而在预测时考虑到这种不确定性。
Matlab实现
% 生成示例数据
x = linspace(-5, 5, 20)'; % 输入数据
y = sin(x) + 0.1*randn(size(x)); % 输出数据
% 高斯过程参数
ell = 1; % 长度尺度:越大函数越平滑
sf = 1; % 输出尺度:越大函数值变化越大
sn = 0.1; % 噪声标准差:增加泛化性
% 计算核矩阵
K = sf^2 * exp(-0.5/ell^2 * (x - x').^2);
Ks = sf^2 * exp(-0.5/ell^2 * (x - x(end)).^2);
Kss = sf^2;
% 预测新数据点
xs = linspace(-6, 6, 100)';
K_star = sf^2 * exp(-0.5/ell^2 * (xs - x').^2);
K_star_star = sf^2 * exp(-0.5/ell^2 * (xs - xs').^2);
mu = K_star / (K + sn^2*eye(size(x,1))) * y;
cov = K_star_star - K_star / (K + sn^2*eye(size(x,1))) * K_star';
% 绘制结果
figure;
scatter(x, y); % 绘制原始数据
hold on;
plot(xs, mu, 'r'); % 绘制高斯过程拟合
legend('Original Data', 'Gaussian Process Fit');
Result: