> For the complete documentation index, see [llms.txt](https://kerasnoone.gitbook.io/garnet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kerasnoone.gitbook.io/garnet/ji-qi-xue-xi/chao-can-shu-tiao-jie/bei-ye-si-you-hua/0x02-qian-zhi-ji-chu-gao-si-guo-cheng-hui-gui.md).

# 0x02 前置基础 高斯过程回归

## 引入

对于实际问题, 假设我们有$$n$$个的实际的样本点, 对应的**指示变量**(训练集)的值为$$x\_1,x\_2,\cdots,x\_n$$, 在这些点上的观测值分别为$$y\_1,y\_2,\cdots,y\_n$$. 假设这些样本都来自于**高斯过程**$$f(x)$$.

我们认为$$x\_1,x\_2,\cdots,x\_n$$就是系统所对应的**高斯过程**$$f(x)$$的采样, 在这$$n$$个点抽样组成了一个$$n$$维的**多维高斯分布**. 而观测值$$y\_1,y\_2,\cdots,y\_n$$是这个$$n$$维的**多维高斯分布**中采样得到的一个点.

注意上面两个采样的区别:

* 前者是对随机过程的采样, 组成一个多维随机变量的分布, 是在指示变量维度上进行的采样
* 后者是对多维随机变量的采样, 得到的是具体的观测值

我们把$$y$$看为是一个$$n$$维的的**多维高斯分布**, $$y\_1,y\_2,\cdots,y\_n$$是这个多维高斯分布的观测值. 由于观测通常是带噪声的, 所以$$y$$的表示如下:

$$y=f(x)+N(0,\sigma\_n^2)$$

其中, $$y=y(x)$$, $$f(x)$$是随机过程在$$n$$个样本点上采样得到的$$n$$维的多维高斯分布, $$N(0,\sigma\_n^2)$$是一个$$n$$维的**高斯噪声**.

准确来说, $$f(x)$$本身就是一个**随机过程**, 表示为$$f\sim{GP(0,K)}$$, 上式中的$$f(x)$$其实是它自身在指示变量上的采样得到的多维高斯分布. 其中, **协方差函数**$$K(x,x^{'})$$一般是某个**核函数**. 核函数可以有多种选择. 由于均值函数为零函数, 因此高斯过程完全由协方差函数决定, 这样简化了我们分析计算的过程, 而模型结果最后的好坏完全取决于协方差函数即核函数的选择, 不同的核函数对应于不同的高斯过程.

由此可见, 观测值的分布完全是由协方差函数即核函数决定的, 更准确的说, 是由选择的核函数的形式以及这个核函数的参数决定的.

**高斯回归过程**就是根据训练样本集确定核函数参数从而确定模型的. 对于新的样本(指示变量)$$x$$, 到对应的观测值得分布. 注意与其他的回归预测不同, 此处的预测得到的不是一个具体值, 而是一个分布.

## 本质

高斯过程回归的本质就是: 把低维空间(训练样本数量决定的多维高斯分布)映射到高维空间(高斯过程对应的无限维空间). 用若干样本推测整个空间上分布的情况.

## 高斯过程定义

通过一个**一元**的**均值函数**以及一个**二元**的**核函数**(协方差函数), 我们就能定义一个高斯过程. 常见的核函数如下图:

![](https://images2017.cnblogs.com/blog/1303172/201801/1303172-20180104104413065-324397649.png)

## 学习方法

这里的学习指的是**高斯过程回归**, 即根据训练集确定高斯过程的**参数**.

我们假定训练集和测试集(预测样本集合)来自于同一高斯随机过程, 因此可以得到训练集合测试集组成的联合多维高斯分布. 只需要根据条件分布$$P(y^*|y)$$就可以得到测试集$$y^*$$的分布, 可以使用$$y^\*$$分布的均值作为回归结果.

结合一个例子解释高斯过程回归的学习过程:

未知函数$$f: R\to{R}$$, 就是我们最后要估计的高斯过程(当然这里还是一个分布).

如下图所示, 我们知道3个样本点$$x\_1,x\_2,x\_3$$及其观测值$$f\_1,f\_2,f\_3$$

![](http://dataunion.org/wp-content/uploads/2015/05/gaussian1.png)

根据$$y=f(x)+N(0,\sigma\_n^2)$$及$$f\sim{GP(0,K)}$$, 可以得到如下的三维高斯分布:

![](http://dataunion.org/wp-content/uploads/2015/05/gaussian2-1024x202.png)

这时因为$$f(x)$$也是一个均值向量零向量的三维高斯分布, 而噪声也是一个均值向量零向量的三维高斯分布, 将两个高斯分布相加, 用一个综合的三维高斯分布表示, 这个三维高斯分布的均值向量仍然是零向量. 而这里协方差矩阵中的每个值, 都是根据**核函数**得到的, 例如我们使用高斯核就能得到如下的协方差矩阵:

![](http://dataunion.org/wp-content/uploads/2015/05/gaussian4-1024x652.png)

现在测试集中一个待预测的样本点$$x^*$$, 我们希望得到它对应的观测值的预测$$y^*$$:

![](http://dataunion.org/wp-content/uploads/2015/05/gaussian5.png)

之前说过, 我们假设训练集样本与测试集样本来自于一个随机过程, 那么就能组成一个新的**四维联合分布**, 而且这个分布也是**多维高斯分布**:

![](http://dataunion.org/wp-content/uploads/2015/05/gaussian6-1024x564.png)

黄色部分是原来训练集中样本之间的协方差矩阵, 绿色部分为新增的样本$$x^*$$与原来的三个样本通过**核函数**计算得到的, 组成新的四维的协方差矩阵. 那么$$(f,f^*)$$的**联合分布**$$P(f,f^*)$$也就得到了. 这里的$$f^*$$是一个一维的**高斯分布**.

高斯分布的参数可以由下图中的公式得到:

![](http://dataunion.org/wp-content/uploads/2015/05/gaussian7-1024x416.png)

这样, 就得到了关于新样本观测值的一个预测**分布**, 注意这里得到是一个分布, 而不是一个具体的值. 如果我们需要具体的值, 可以用分布的期望等来代替.

至此, GPR的步骤就完成了.
