Kernel Methods (3) Kernel Linear Regression

来源:互联网 发布:box怎么创建centos 编辑:程序博客网 时间:2024/06/06 13:15

Linear Regression

线性回归应该算得上是最简单的一种机器学习算法了吧. 它的问题定义为:

  • 给定训练数据集\(D\), 由\(m\)个二元组\(x_i, y_i\)组成, 其中:
    • \(x_i\)\(n\)维列向量
    • \(y_i\)的值服从正态分布\(N(f(x_i), \sigma_i^2)\), \(f(x_i)\)是关于\(x_i\)的线性函数: \(f(x_i) = w^Tx_i + b\).
      为方便起见, 令\(x_i \gets [x_{i0} = 1, x_{i1}, \dots, x_{in}] = [1, x_i^T]^T, w \gets [b, w^T]^T\), \(\therefore f(x_i) = w^Tx_i\), 以期望值作为预测值, 即\(y_i = f(x_i)\)
  • 对于测试样本\(x\), 预测\(x\)对应的\(y=f(x)\).

问题对应的损失函数:
\[L(w) = \sum_{i =1}^m (f(x_i) - y_i)^2 = \sum_{i =1}^m (w^Tx_i - y_i)^2 = ||Xw - Y||^2\]
其中,
\[X = \left[\begin{matrix}x_1^T \\ x_2^T \\ \vdots \\ x_m^T\end{matrix}\right], Y = [y_1, \dots, y_m]^T\]
加上正则项后,
\[L(w) = ||Xw - Y||^2 + \lambda w^Tw = (Xw - Y)^T(Xw - Y) + \lambda w^Tw, (\lambda > 0)\]

\[w = argmin L(w)\]
要使\(L(w)\)取最得小值,
\[\to \frac {\partial L}{\partial w} = 2X^T(Xw -Y) + 2\lambda w = 0\]
\[\to X^TXw + \lambda w =(X^TX + \lambda I) w = X^TY\]
(\(I\)是一个\(n\)维的单位矩阵)
\[\to w = (X^TX + \lambda I)^{-1} X^TY\]
(因为有\(\lambda I\)在, 所以\(X^TX + \lambda I\)一定是可逆的.)

Kernel-based Linear Regression:Theory

不带kernel的线性回归算法得到的模型是一个线性函数 \(f(x) = w^Tx\). 要将它变成非线性的, 一个很常见的做法是手动构造新的多项式特征, 例如: \((a, b) \to (a^2, ab, b^2)\). 这个做法从本质上来说就是一种kernel方法, 只不过因为是手动构造的feature space, 它的feature mapping function \(\Phi\) 是已知了. 当原始输入空间的维度不高时, 这种手动方式当然是一个不错的选择, 但是当维度变高后, 例如100维, 代价就太高了.
使用kernel之后, 上面的损失函数变为:
\[L(w) = ||Zw - Y||^2 + \lambda w^Tw = (Zw - Y)^T(Zw - Y) + \lambda w^Tw\]
其中,
\[Z = \left[\begin{matrix}\Phi(x_1)^T \\ \Phi(x_2)^T \\ \vdots \\ \Phi(x_m)^T\end{matrix}\right]\]
最后得到的\(w\)也相应的变为:
\[w = (Z^TZ + \lambda I)^{-1} Z^TY\]
之前已经反复讲过, 使用kernel method \(\kappa\)时, 它对应的\(\Phi\)是未知的. 对kernel linear regression也是如此. 所以现在得到的\(w\)是没法直接用于预测新样本的.
但是当一个新样本\(x\)进来时, (\(x\)不包含1, 但是\(\Phi(x)\)已经像上面那样已经包含了增广项1, 所以式子仍然没有显式的出现\(b\))
\[y = w^T\Phi(x) = Y^TZ(Z^TZ + \lambda I)^{-1}\Phi(x)\]
利用等式\(Z(Z^TZ + \lambda I_{n\times n})^{-1} = (ZZ^T + \lambda I_{m\times m})^{-1}Z\),(这个等式通过左右同时乘以相同的矩阵很容易验证.)
\[y =w^T\Phi(x) = Y^T (ZZ^T + \lambda I)^{-1})Z \Phi(x) = Y^T (K + \lambda I)^{-1} Z\Phi(x) = Y^T (K + \lambda I)^{-1} \left[\begin{matrix}\kappa(x_1, x)\\\kappa(x_2, x)\\\vdots\\\kappa(x_m, x)\end{matrix}\right]\]
其中, \(K = ZZ^T\)是kernel matrix.
这样一来, 我们在\(\Phi(x)\)未知的情况下得到了测试样本\(x\)的预测值\(y\).


0 0