Kernel Methods (3) Kernel Linear Regression

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\).

posted @ 2016-05-22 01:03  宁静是一种习惯  阅读(2249)  评论(4编辑  收藏  举报