Kernel Ridge Regression

本文将介绍kernel ridge regression算法

理论

kernel ridge regresion算法是将核技巧(kernel trick)应用于ridge regression而得来的。

目标:

我们的目标是最小化以下损失函数:

$$ J(w)=(y-Xw)^{T}(y-Xw)+ \lambda||w||^2 $$

其中$X \in \mathbb{R}^{N\times D}$表示数据集中的$N$个样本且每个样本中含有$D$个特征,向量$y \in \mathbb{R}^N$表示每个样本的真实值。$w$表示模型的参数,$\lambda$表示正则项的系数。

解析解

对于以上损失函数我们可以求得其的解析解为: $$ w = (X^T X + \lambda I_D)^{-1}X^Ty = (\sum_{i} x_ix_i^T + \lambda I_D)^{-1}X^Ty $$

矩阵逆定理(matrix inversion lemma) $$ ( A-BD^{-1}C)^{-1} = A^{−1} + A^{−1} B ( D − C A^{-1} B )^{-1} C A^{−1} $$

对于这个解析解我们可以利用矩阵逆定理(matrix inversion lemma)进行下变换表示如下: $$ w=X^T(XX^T + \lambda I_N)^{-1}y \tag{1.1} $$

此时我们可以定义: $$ \alpha=(K+\lambda I_N)^{-1}y $$ 所以公式$(1.1)$可以表示为: $$ w = X^T\alpha = \sum_{i=1}^N \alpha_ix_i $$

由此可以看出模型参数$w$的解只是$N$个样本向量的线性求和。当我们用该模型进行预测的时候,我们可以得到: $$ \hat{f}(x) = w^Tx=\sum_{i=1}^N \alpha_i x_i^T x = \sum_{i=1}^N \alpha_i \mathcal{k}(x,x_i) $$ 其中$\mathcal{k}(x,x_i)$表示的是核(kernel)。

实现

在实现上,模型中保存的参数并不是$w$,而是$\alpha$,并且模型还需要保存训练所使用的矩阵$X$,因为在之后预测阶段还需要用$X$跟新输入样本向量$x$进行核的计算。所以该方法并不适合训练数据集很大的场景,因为数据集$X$需要保存在模型内,且$X$越大预测时所需的计算会越多。

updatedupdated2021-11-062021-11-06