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)\)取最得小值,
(\(I\)是一个\(n\)维的单位矩阵)
(因为有\(\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之后, 上面的损失函数变为:
其中,
最后得到的\(w\)也相应的变为:
之前已经反复讲过, 使用kernel method \(\kappa\)时, 它对应的\(\Phi\)是未知的. 对kernel linear regression也是如此. 所以现在得到的\(w\)是没法直接用于预测新样本的.
但是当一个新样本\(x\)进来时, (\(x\)不包含1, 但是\(\Phi(x)\)已经像上面那样已经包含了增广项1, 所以式子仍然没有显式的出现\(b\))
利用等式\(Z(Z^TZ + \lambda I_{n\times n})^{-1} = (ZZ^T + \lambda I_{m\times m})^{-1}Z\),(这个等式通过左右同时乘以相同的矩阵很容易验证.)
其中, \(K = ZZ^T\)是kernel matrix.
这样一来, 我们在\(\Phi(x)\)未知的情况下得到了测试样本\(x\)的预测值\(y\).
Daniel的学习笔记
浙江大学计算机专业15级硕士在读, 方向: Machine Learning, Deep Learning, Computer Vision.
blog内容是我个人的学习笔记, 由于个人水平限制, 肯定有不少错误或遗漏. 若发现, 欢迎留言告知, Thanks!