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

Kernel Methods (3) Kernel Linear Regression的更多相关文章

  1. Kernel Methods (5) Kernel PCA

    先看一眼PCA与KPCA的可视化区别: 在PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?里已经推导过PCA算法的小半部分原理. 本文假设你已经知道了PCA算法的基本原理和步骤. 从原始输入 ...

  2. Kernel Methods (2) Kernel function

    几个重要的问题 现在已经知道了kernel function的定义, 以及使用kernel后可以将非线性问题转换成一个线性问题. 在使用kernel 方法时, 如果稍微思考一下的话, 就会遇到以下几个 ...

  3. Kernel Methods (4) Kernel SVM

    (本文假设你已经知道了hard margin SVM的基本知识.) 如果要为Kernel methods找一个最好搭档, 那肯定是SVM. SVM从90年代开始流行, 直至2012年被deep lea ...

  4. Kernel Methods - An conclusion

    Kernel Methods理论的几个要点: 隐藏的特征映射函数\(\Phi\) 核函数\(\kappa\): 条件: 对称, 正半定; 合法的每个kernel function都能找到对应的\(\P ...

  5. Kernel Methods (1) 从简单的例子开始

    一个简单的分类问题, 如图左半部分所示. 很明显, 我们需要一个决策边界为椭圆形的非线性分类器. 我们可以利用原来的特征构造新的特征: \((x_1, x_2) \to (x_1^2, \sqrt 2 ...

  6. Kernel methods on spike train space for neuroscience: a tutorial

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 时序点过程:http://www.tensorinfinity.com/paper_154.html Abstract 在过去的十年中,人 ...

  7. PRML读书会第六章 Kernel Methods(核函数,线性回归的Dual Representations,高斯过程 ,Gaussian Processes)

    主讲人 网络上的尼采 (新浪微博:@Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:16:05 今天的主要内容:Kernel的基本知识,高斯过程.边思考边打字,有点慢, ...

  8. Linear Regression with machine learning methods

    Ha, it's English time, let's spend a few minutes to learn a simple machine learning example in a sim ...

  9. 核方法(Kernel Methods)

    核方法(Kernel Methods) 支持向量机(SVM)是机器学习中一个常见的算法,通过最大间隔的思想去求解一个优化问题,得到一个分类超平面.对于非线性问题,则是通过引入核函数,对特征进行映射(通 ...

随机推荐

  1. Remote Displayer for Android V1.2

    VERSION LOG for Android Remote Displayer Features:The app allows you to see your Android device remo ...

  2. NOIP2009靶形数独[DFS 优化]

    描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z博士请教,Z 博士拿出了他最近发明的“靶形数独 ...

  3. NOIP2008传纸条[DP]

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...

  4. 学习ROS的基本知识,节点、话题、服务等

    之前我在电脑上安装的ROS版本为jade版的. 可是后来发现各个教程安装的是indigo版的 于是我又去看了看ROS官网,在官网上有这样的一句话. 而且又因为indigo版的资料多一些,于是我就换了r ...

  5. code blocks 如何实现一键代码格式化

    问题:code blocks 如何实现一键代码格式化 解答:直接右键,选择format use ASstyle

  6. js原生碰撞检测

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Android fragment之间消息传递

    1. 在Fragment里定义一个内部接口, 在Fragment初始化方法里, 把父Activity转换成这个接口, 赋值给成员变量 public class DummyFragment extend ...

  8. X200s,Debian 8(Jessie) 安装流水帐

    1. U盘启动安装 a. 因为无线网卡驱动是non-free,需要另外下载,对应X200s,文件是iwlwifi-5000-5.ucode,下完放到安装U盘的根目录下,安装时就不会再提示而是直接安装  ...

  9. ListView实现原理

    转载:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了 ...

  10. Html代码保存为Pdf文件

    前段时间Insus.NET有实现了<上传Text文档并转换为PDF>http://www.cnblogs.com/insus/p/4313092.html 和<截取视图某一段另存为部 ...