高斯过程是什么?
本文译自: Duane Rich 的文章Which is your favorite Machine Learning algorithm?
几乎所有的有监督机器学习算法都专注于找到一个函数,这个函数是从特征到标签的映射的一个近似。通常情况下一个函数的参数决定了一个函数。根据数据,我们通过确定这些参数的(后验)分布来确定可能的函数。
高斯过程允许我们根据一组任意有限的输入和输出来引用函数。我们通过一个分布来指定函数:
其中和是给定的函数,分别叫做mean函数和kernel函数。为了理解这一点,你可以想象你能从这个GP中采样出大量的函数,不妨称它们为。如果你能在一个特定的中评估这N个函数,你会发现者N个函数的输出的平均值是。同样的,如果你在两个输入中评估这些函数,这些输出的协方差是。
正如你可以从一个随机变量的分布中采样出一些值一样,你也可以从高斯过程中采样出函数。举个例子,如果你指定。你采样出来的函数可能长这样:
因此,一个高斯过程包括一个指定的先验分布,。然后以我们数据为条件,确定出一个函数的后验分布。
在实际应用中,我们会使用一个向量对kernel进行参数化,然后选择一个可以最大化我们的数据和的特定向量。这个技术的真正艺术之处在于选择合适的Kernel function。
最后,我们将使用一个优化好的,它可以由于评估任何给定的输入,我们不需要得到一个输出值,而是得到一个关于输出的分布。
好了,让我们现在来使用高斯过程吧!
下面是我6个月的体重:
你能看出什么规律么?其实我也看不出来。但是:
- 这些时刻很接近
- 这些时刻在一些周期的同一部分(一周或者一个月中的同一天等)
所以,让我们来构造出我们的kernel metric吧。
考虑到,这些时间特征并不是影响体重唯一的因素,应该还有其他特征来影响体重,所以我们应该在我们的kernel中加入一些噪音。
最后,我的体重应该有一些长期趋势,比如我可能在两周里吃了太多的披萨。或者我在某些日子生病了导致身体日渐消瘦。考虑到这些因素,我们将使用Matern Kernel。
好,现在让我们测试一下。我们将隐藏25%的数据用于预测。我将根据测试结果画出一个和两个标准偏差的置信区间。因此我们得到了:
从图中可以看出规律已经比较清晰了。我的体重大约有个时长一周的周期,并且会在几周内趋于正常。 样本不足,我们得到了不错的预测,因为它依赖于周期性并且不会从虚假的趋势中推断出来。分布的输出似乎对数据进行了很好的校准。
总之,高斯过程很灵活,你可以将你的一些直觉插入模型中,用于解决一些小问题。但是这不是一个通用的模型,他的拓展性不太好。