Kernel Ridge Regression(KRR,核脊回归) 是Ridge Regression(RR,脊回归)的kernel版本,与Support Vector Regression(SVR,支持向量回归)类似。所以,在这里,我们先大致了解RR的来源,由此引入KRR,再来了解KRR与RR、KRR与SVR等之间的关系,最后再详细推导KRR的整个过程。
Why RR?
在线性回归的过程中,我们一般用最小二乘法计算线性回归模型的参数。如果数据的集合矩阵(或设计矩阵,design matrix)
存在多重线性时,则该最小二乘法会对噪音十分敏感,使得所得结果不稳定。为了解决这个问题,Ridge Regression(RR)就诞生了。
具体一点来说,当设计矩阵存在多重线性时(在数学上被称为病态矩阵),由最小二乘法计算出的参数
在数值上会非常大,使得在线性模型
中,当输入变量
有微小的变动时,输出变量
就会变化很大。这就是该类型的线性回归模型对输入变量
的噪音很敏感的原因。
所以 如果能够限制参数的数值大小,使得它不会变的特别大,对噪音的敏感度降低,那就能解决问题了。而这就是脊回归(RR)或Lasso回归的基本思想。RR和Lasso回归的限制方法是:在原来最小二乘法模型的基础上加一个惩罚项,这个过程也叫作正则化(Regularization)。如果惩罚项是参数
的
范数,则是RR;如果是参数
的
范数,则是Lasso回归。[1]
所以,脊回归的目标函数为:
,
其中,是
的k设计矩阵,
是特征向量,
是平衡损失与正则项之间的一个系数,
。我们需要最小化该目标函数。对以上的目标函数的参数
求导,并令其等于0,可以得到最优解为[2]:
linear RR 与KRR的不同之处在于,RR更加restricted,KRR更加flexible。这两种方法是efficiency与flexibility的较量[4]。
RR | KRR |
More restricted | More flexible |
Efficient when | Hard for big data |
Why inducing Kernel?
从以上对RR的简述,我们可以知道,实际上,RR的目的是学习得到特征与因变量
之间的映射关系。至于为什么需要在目标函数中引入第二项的正则项,除了上述的原因之外,我们也可以这么理解:因为特征
有时可能会很高维(样本数量少于变量个数),使得所学的参数
可能会很大,所以有必要限制
的大小。
而至于为什么需要引入kernel呢?其实,将kernel trick应用到distance-based的方法中是很直接的,因为kernel函数本身就是一个distance-based的函数。可能我们会发现,基于distance的方法,都会有对应的一个kernel版本的扩展。此外,从实际应用来看, 因为数据可能是非线性的,单纯地假设真实数据服从线性关系,并用线性模型来回归真实的非线性数据,效果想必不会好。所以,引入kernel还能有一个好处,就是:引入kernel的RR,也就是KRR,能够处理非线性数据,即,将数据映射到某一个核空间,使得数据在这个核空间上线性可分。一句话,就是:KRR learns a linear function in the space induced by the respective kernel which corresponds to a non-linear function in the original space. The linear function in the kernel space is chosen based on the mean-squared error loss with ridge regularization.[5]
Relationship with SVR
KRR与SVR的学习形式是相同的。两个都有正则项,只是两者的损失函数不同。KRR使用的是均方误差,而SVR使用的是epsilon-insensitive的损失函数,即,
。
In contrast to SVR, fitting a KRR model can be done in closed-form and is typically faster for medium-sized datasets. On the other hand, the learned model is non-sparse and thus slower than SVR, which learns a sparse model for epsilon > 0, at prediction-time.[3] 这是引自[3]中的一句原话,我的理解是:在训练的过程中,KRR能够得出解析解,而且在处理中度规模的数据集时,会很有速度;但是,在做预测时,因为KRR所学到的参数是非稀疏的,而SVR的是稀疏的(),所以此时KRR速度会慢于SVR。
.
Kernel Ridge Regression
在Why RR?这一小节中,我们提到RR的最优解为:。为了扩展到核空间,我们必须把这个参数
的最优转换成具有内积的形式。如何做呢?我们可以使用The matrix inverse lemma[2],重写为:
,即,我们可以直接扩展在核空间下:
。具体转换的过程如下:
The matrix inverse lemma为。令
,则有,
所以,
定义对偶变量(dual variables):
(N*D = N*N * N*D)
所以我们的原始变量(primal variable)为:
(D*D = D*N * N*D = D*1 * 1*D)
应转置
因此,实际上是一个
个训练样本的线性组合形式。在计算预测均值时,我们会有:
。
也就是,同理,我们令
,则有,
或者,我们可以写成:
In the feature space, matrix form:
通过用Gram矩阵代替
,参数
转换成,
。
即估计的函数为:
.
Example
可以参考scikit-learn中给出的例子。[6]
如有错误,欢迎指正。联系方式:yanazeng013@gmail.com。
References
[1] https://blog.youkuaiyun.com/daunxx/article/details/51578787
[2] Kevin P. Murphy “Machine Learning: A Probabilistic Perspective”, The MIT Press chapter 14.4.3, pp. 492-493
[4] https://redstonewill.com/477/