Kernel Ridge Regression 详解过程

Kernel Ridge Regression(KRR,核脊回归) 是Ridge Regression(RR,脊回归)的kernel版本,与Support Vector Regression(SVR,支持向量回归)类似。所以,在这里,我们先大致了解RR的来源,由此引入KRR,再来了解KRR与RR、KRR与SVR等之间的关系,最后再详细推导KRR的整个过程。

 

Why RR?

在线性回归的过程中,我们一般用最小二乘法计算线性回归模型的参数w。如果数据的集合矩阵(或设计矩阵,design matrix)X存在多重线性时,则该最小二乘法会对噪音十分敏感,使得所得结果不稳定。为了解决这个问题,Ridge Regression(RR)就诞生了。

具体一点来说,当设计矩阵X存在多重线性时(在数学上被称为病态矩阵),由最小二乘法计算出的参数w在数值上会非常大,使得在线性模型y=w^Tx中,当输入变量x有微小的变动时,输出变量y就会变化很大。这就是该类型的线性回归模型对输入变量x的噪音很敏感的原因。 

所以 如果能够限制参数w的数值大小,使得它不会变的特别大,对噪音的敏感度降低,那就能解决问题了。而这就是脊回归(RR)或Lasso回归的基本思想。RR和Lasso回归的限制方法是:在原来最小二乘法模型的基础上加一个惩罚项,这个过程也叫作正则化(Regularization)。如果惩罚项是参数wl_2范数,则是RR;如果是参数wl_1范数,则是Lasso回归。[1]

 

所以,脊回归的目标函数为:

J(w)=(y-Xw)^T(y-Xw)+\lambda ||w||^2,

其中,XN \times D的k设计矩阵,x \in \mathbb{R}^D是特征向量,\lambda是平衡损失与正则项之间的一个系数,\lambda \geq 0。我们需要最小化该目标函数。对以上的目标函数的参数w求导,并令其等于0,可以得到最优解为[2]:

w=\left( X^{T}X +\lambda I_{D}\right)^{-1} X^{T}y=\left(\sum_i x_ix_i^T+\lambda I_D \right )^{-1}X^Ty

linear RR 与KRR的不同之处在于,RR更加restricted,KRR更加flexible。这两种方法是efficiency与flexibility的较量[4]。

RRKRR
More restrictedMore flexible
O\left(D^3+D^2N \right ) for trainingO \left(N^3 \right ) for training
O \left(D \right ) for predictionO \left( N \right )  for prediction
Efficient when N \gg DHard for big data

 

Why inducing Kernel?

从以上对RR的简述,我们可以知道,实际上,RR的目的是学习得到特征X与因变量y之间的映射关系。至于为什么需要在目标函数中引入第二项的正则项,除了上述的原因之外,我们也可以这么理解:因为特征X有时可能会很高维(样本数量少于变量个数),使得所学的参数w可能会很大,所以有必要限制w的大小。

而至于为什么需要引入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的学习形式是相同的。两个都有l_2正则项,只是两者的损失函数不同。KRR使用的是均方误差,而SVR使用的是epsilon-insensitive的损失函数,即,\max \left(0,\left | y- h_{\theta}\left(x)\right | - \epsilon \right )

 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的是稀疏的(\epsilon > 0),所以此时KRR速度会慢于SVR。

.

Kernel Ridge Regression

在Why RR?这一小节中,我们提到RR的最优解为:w=\left( X^{T}X +\lambda I_{D}\right)^{-1} X^{T}y=\left(\sum_i x_ix_i^T+\lambda I_D \right )^{-1}X^Ty。为了扩展到核空间,我们必须把这个参数w的最优转换成具有内积的形式。如何做呢?我们可以使用The matrix inverse lemma[2],重写为:w= X^{T} \left( X X^{T} +\lambda I_{N }\right)^{-1} y ,即,我们可以直接扩展在核空间下:w=\phi ( X)^{T}\left( \phi ( X) \phi ( X)^{T} +\lambda I_{N}\right)^{-1} \phi (y)。具体转换的过程如下:

The matrix inverse lemma为\left( P^{-1} +B^{T} R^{-1} B\right)^{-1} B^{T} R^{-1} =PB^{T}\left( BPB^{T} +R\right)^{-1}。令

B=X ,P=\dfrac{1}{\lambda } I_{D } ,R=I_{N},则有,

\left( X^{T} X +\lambda I_{D}\right)^{-1} X^{T} = \dfrac{1}\lambda I_{D} X^T (X \dfrac{1}\lambda I_{D} X^T + I_N)^{-1}

                                  = \dfrac{1}\lambda X^T (\dfrac{1}\lambda X X^T + I_N)^{-1}

                                  = X^T (X X^T +\lambda I_N)^{-1}

所以,

w=\left( X^{T} X+\lambda I_{D}\right)^{-1}X^{T} y =X^{T}\left( XX^{T} +\lambda I_{N}\right)^{-1} y

定义对偶变量\alpha(dual variables):\alpha = \left( K_X + \lambda I_N \right )^{-1} y (N*D = N*N * N*D)

所以我们的原始变量w(primal variable)为:w = X^T \alpha = \sum _{i=1}^{N} \alpha_i \bf{x}_i   (D*D =  D*N * N*D = D*1 * 1*D) \alpha应转置

因此,w实际上是一个N个训练样本的线性组合形式。在计算预测均值时,我们会有:

\hat f (x) = w^T \bf{x} = \sum_{i=1}^N \alpha_i x_i^T x = \sum_{i=1}^N \alpha_i \kappa(x,x_i)

 

也就是,同理,我们令

B=\phi ( X) ,P=\dfrac{1}{\lambda } I_{\infty } ,R=I_{N},则有,

\left( \phi ( X)^{T} \phi ( X) +\lambda I_{\infty }\right)^{-1} \phi ( X)^{T} =\dfrac{1}{\lambda } I_{\infty } \phi ( X)^{T}\left( \phi ( X)\dfrac{1}{\lambda } I_{\infty } \phi ( X)^{T} +I_{N}\right)^{-1}

                                                  =\dfrac{1}{\lambda } \phi ( X)^{T}\left(\dfrac{1}{\lambda }\left( \phi ( X) \phi ( X)^{T} +\lambda I_{N}\right)\right)^{-1}

                                                  =\phi ( X)^{T}\left( \phi ( X) \phi ( X)^{T} +\lambda I_{N}\right)^{-1}

或者,我们可以写成:

In the feature space, matrix form: $\displaystyle \phi ( y) =F( X) +\phi ( E) =\phi ( X) \times w+\phi ( E)$

通过用Gram矩阵K代替XX^T,参数w转换成,

w=\left( \phi ( X)^{T} \phi ( X) +\lambda I_{\infty }\right)^{-1} \phi ( X)^{T} \phi\left(y \right ) =\phi (X)^{T}\left( \phi ( X) \phi ( X)^{T} +\lambda I_{N}\right)^{-1} \phi\left(y \right )

                                                                  = \phi ( X)^{T}\left(K_X +\lambda I_{N}\right)^{-1} \phi (y)

即估计的函数F为:

\hat F(X)=\phi ( X) \times w =\phi ( X) \phi ( X)^{T}\left( \phi ( X)^{T} \phi ( X) +\lambda I_{\ }_{N}\right)^{-1} \phi ( y)

                                 =K_{X}( K_{X} +\lambda I_{N})^{-1} \phi (y).

 

Example

可以参考scikit-learn中给出的例子。[6]

 

如有错误,欢迎指正。联系方式:yanazeng013@gmail.com。

References

[1] https://blog.csdn.net/daunxx/article/details/51578787

[2] Kevin P. Murphy “Machine Learning: A Probabilistic Perspective”, The MIT Press chapter 14.4.3, pp. 492-493

[3] https://scikit-learn.org/stable/modules/generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge  

[4] https://redstonewill.com/477/

[5] https://scikit-learn.org/stable/auto_examples/gaussian_process/plot_compare_gpr_krr.html#sphx-glr-auto-examples-gaussian-process-plot-compare-gpr-krr-py

[6] https://scikit-learn.org/stable/modules/generated/sklearn.kernel_ridge.KernelRidge.html#sklearn.kernel_ridge.KernelRidge

 

  • 21
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Kernel Ridge Regression是一种非参数回归方法,它通过将数据映射到高维空间中,利用核函数对数据进行非线性变换,从而实现对非线性关系的建模。与传统的岭回归方法相比,Kernel Ridge Regression可以更好地处理非线性问题,并且具有更好的泛化能力。它在机器学习、模式识别、数据挖掘等领域中得到了广泛的应用。 ### 回答2: Kernel Ridge Regression(KRR)是一种解决回归问题的机器学习算法。它是Ridge Regression在核技巧上的扩展,使用核函数对特征进行转换,将数据从低维度非线性映射到高维度甚至是无限维度,从而实现非线性回归。 KRR的目标是最小化带有L2正则化的平方误差,其中正则化参数是可以调整的: \begin{aligned} \min_{f\in H} \ \frac{1}{n} \sum_{i=1}^{n} (y_i - f(x_i))^2 + \lambda \lVert f \rVert_{\mathcal H}^2 \\ \end{aligned} 其中,y是训练样本的target,f是模型的输出,x是训练样本的特征向量,H是希尔伯特空间,λ是正则化参数。 核函数是KRR的核心,在特征空间中定义距离,在计算数据点之间的内积时起到了重要的作用。常用的核函数有Radial-Basis Function(RBF)和Sigmoid核函数等,它们可以定义在不同的空间,从而实现对不同类型数据的适配。 应用KRR时需要进行模型的训练和预测。在训练时,需要选择合适的核函数和正则化参数,通过交叉验证等方式进行调参。在预测时,需要使用训练时得到的模型对测试数据进行预测,得到回归结果。 KRR具有许多优点,包括适用于非线性回归问题、可解释性好、容易调整参数等。但也存在一些缺点,如容易出现过拟合、计算量大等。此外,KRR还可以与其他机器学习算法(如支持向量回归、神经网络等)相结合,实现更加复杂的回归任务。 ### 回答3: Kernel Ridge Regression(KRR)是一种非线性回归技术,是在传统线性回归之上的扩展。其主要思想是将输入特征映射到高维空间,在此空间内进行线性回归,最后通过反映射回原始空间,得到非线性回归的结果。 在KRR中,使用的是核函数来把低维特征映射到高维空间。常用的核函数有径向基函数(RBF)、多项式函数和Sigmoid函数等。KRR的损失函数由两部分组成:第一部分是平方误差,即模型的预测值与真实值之间差异的平方,第二部分是系数的平方和。其本质是一种正则化方法,通过引入系数平方和来防止过拟合的发生。 在训练KRR模型时,需要确定核函数的类型和参数。核函数的类型可以通过交叉验证来确定,而参数则需要通过优化算法求解。最常用的求解方法是基于梯度下降的迭代算法。KRR还可以通过岭回归的思想来进一步改进,KRR中的正则化系数被称为核参数,可以通过交叉验证来选择最优的核参数。 KRR在许多领域都有广泛的应用,包括金融预测、文本分类、图像识别等。它能够解决许多与线性回归相关的问题,并能够通过改变核函数的类型和参数来适应特定的数据集。此外,KRR还可以通过优化算法的改进,如随机梯度下降等,来提高模型的训练速度和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值