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. AppStore ipa (苹果内购)笔记

    内购示意图 准备条件 苹果的开发者证书,已经为应用启用App内购,并在Xcode更新配置文件 itunes store设置 itunes中创建App及其它设置 参考:iOS应用程序内购/内付费(一)  ...

  2. 杭电OJ——1198 Farm Irrigation (并查集)

    畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...

  3. Android驱动入门-LED--HAL硬件访问服务层②

    硬件平台: FriendlyARM Tiny4412 Cortex-A9 操作系统: UBUNTU 14.04 LTS 时间:2016-09-21  16:58:56 为了避免访问冲突,则创建了硬件访 ...

  4. HTML 学习笔记 CSS(轮廓)

    轮廓(outline)是绘制于元素周围的一条线 位于边框边缘的外围 可起到突出元素的作用 CSS outline属性规定元素轮廓的样式 颜色和宽度 话不多说 来几个例子 看一看 1:在元素周围画线 & ...

  5. Firefox访问https出现 ssl_error_weak_server_ephemeral_dh_key错误

    一个自签名的内部网站当ff访问时出现以下错误 SSL received a weak ephemeral Diffie-Hellman key in Server Key Exchange hands ...

  6. Java集合系列:-----------05LinkedList的底层实现

    前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类--LinkedList.和学习ArrayList一样,接下来呢,我们先对LinkedList ...

  7. 使用spring boot+mybatis+mysql 构建RESTful Service

    开发目标 开发两个RESTful Service Method Url Description GET /article/findAll POST /article/insert 主要使用到的技术 j ...

  8. MySQL分表(Partition)学习研究报告

    最近在开发一个新的项目,可能会产生大数据量,需要对部分表进行分表操作,故来研究学习MySQL的分表功能. 由于实验报告已经写成Exlce文件了,各位看过就直接下载吧:MySQL分表分析报告.xls 以 ...

  9. HTTP错误代码

    服务器错误代码大全 ·400 - 错误的请求. ·401 - 访问被拒绝.IIS 定义了许多不同的 401 错误,它们指明更为具体的错误原因.这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显 ...

  10. 利用Spring MVC搭建REST Service

    之前写过一篇 利用JAX-RS快速开发RESTful 服务 今天来看下spring-mvc框架如何实现类似的功能: 一.pom.xml <?xml version="1.0" ...