之前看过高斯过程(GP),不过当时也没太看懂,最近花时间认真研究了一下,感觉总算是明白咋回事了,本文基于回归问题解释GP模型的思想和方法。文中的想法是自己思考总结得来,并不一定准确,也可能存在错误性。
为什么要用GP?
回顾一下我们之前在解决回归问题时,就拿线性回归举例,我们为了学习映射函数,总是把函数参数化,例如假设
![equation?tex=f%28%5Cmathbf+x%29+%3D+%5Cmathbf+w%5E%7B%5Crm+T%7D%5Cmathbf+x](https://i-blog.csdnimg.cn/blog_migrate/a02e4656a6d68d3d8448e86a6641984e.png)
,然后计算参数
![equation?tex=%5Cmathbf+w](https://i-blog.csdnimg.cn/blog_migrate/331488787eb2671d3a3dcc3395d915a4.png)
的后验分布,把参数估计出来之后,就得到了我们想要学习的函数,接着就可以用这个函数去做预测了。
但是有时候我们并不知道数据到底用什么形式的函数去拟合比较好(是1次的,2次的还是10次的?)。这个时候高斯过程(GP)就闪亮登场了,GP说:“我不需要用参数去刻画函数,你就告诉我训练数据是什么,你想要预测哪些数据,我就能给你预测出结果。“这样一来,我们就省去了去选择刻画函数参数的这样一个过程。
GP是怎么来的?
那么GP是怎么做到的呢?我们先来看这样一件有趣的事情:
假设我们的函数定义域和值域都是
![equation?tex=%5Cmathbf+R](https://i-blog.csdnimg.cn/blog_migrate/9e2ddf6301e056b7b171f1e4faeffb1e.png)
,那么如果你的训练集是包含了所有定义域的,那么这个函数
![equation?tex=%5Cmathbf+f%5E%2A](https://i-blog.csdnimg.cn/blog_migrate/4f33677a207dd3810bdf03112e25d60a.png)
我们就得到了,你给任何一个点,我都能通过查表的方式告诉你结果是多少。第二种情况我们的训练集中缺少了
![equation?tex=%5C%7B1%2C2%2C3%2C4%5C%7D](https://i-blog.csdnimg.cn/blog_migrate/9376edd52b1479a3e3492c69eb7cf19e.png)
这四个点,并且这四个点就是我们需要进行预测的点,如果我们可以通过某种方式建立一个4维的概率分布
![equation?tex=p%28%5Cmathbf%7Bf1%2Cf2%2Cf3%2Cf4%7D%29](https://i-blog.csdnimg.cn/blog_migrate/4e9b0dd86542c7311fa368a8a9edce7c.png)
,其中
![equation?tex=%28%5Cmathbf+%7Bf1%2Cf2%2Cf3%2Cf4%7D%29](https://i-blog.csdnimg.cn/blog_migrate/6b1ce3e7b547d1c3a1f185e22a65c033.png)
分别代表
![equation?tex=%5C%7B1%2C2%2C3%2C4%5C%7D](https://i-blog.csdnimg.cn/blog_migrate/9376edd52b1479a3e3492c69eb7cf19e.png)
的预测值,那么我们是不是就可以就可以利用这个概率分布,找到对应的概率最高的点把最终的结果给估计出来。
然而,事实上虽然很多实际问题(比如房价的预测),它的定义域和值域都是
![equation?tex=%5Cmathbf+R](https://i-blog.csdnimg.cn/blog_migrate/9e2ddf6301e056b7b171f1e4faeffb1e.png)
(或者是某个连续的区间),但是我们的训练数据是有限的,而基于这些训练数据,我们要对整个实数域进行预测,如果我们继续利用上面的思想的话,我们需要建立一个无穷维度的概率分布(因为我们需要进行预测的数据点事无穷个的),这显然不可能,不过庆幸的是,在每一次我们需要进行预测的时候,我们所需要进行预测的数据是有限的。假设有N个训练数据
![equation?tex=%28%5Cmathbf+X%2C%5Cmathbf+Y%29](https://i-blog.csdnimg.cn/blog_migrate/ef76b60e18bf6f7f99368fb2b363f8fe.png)
,有N*个需要进行预测的数据