线性回归问题

首先做一些符号上的说明:

\(x^{(i)}\):特征(feature)
\(y^{(i)}\):目标变量(target variables)
\(\mathcal{X}\):特征空间
\(\mathcal{Y}\):目标变量空间
\((x^{(i)}, y^{(i)})\):训练样本(training example)
\(\left\{(x^{(i)}, y^{(i)})| i = 1, 2, \dots, m\right\}\):训练集(training set)
\(m\):样本的数量
\(n\):特征的个数
\(h: \mathcal{X} \rightarrow \mathcal{Y}\):假设(hypothesis)

我们的第一个假设函数是:
\[
h_{\theta}(x) = \theta_{0} + \theta_{1}x_{1} + \cdots + \theta_{n}x_{n}=\theta^{T}x
\]
也就是说,我们假设\(y\)是\(x\)的线性函数。上式中的\(\theta\)称为参数(parameter),一组参数确定一个假设函数,其中\(n\)是特征的个数,为了方便,我们引入一个截距项(intercept term)\(x_{0} = 1\),令\(\theta\)和\(x\)是\(n+1\)维的向量,\(h_{\theta}(x)\)可以简单地记作\(h_{\theta}(x) = \theta^{T}x\)。

有了假设函数,我们应该如何确定参数\(\theta\)呢?一种很自然的思路是,找一组\(\theta\)使得\(h_{\theta}(x^{(i)})\)与\(y^{(i)}\)的差距最小,因此,我们定义一种代价函数
\[
J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}) -y^{(i)})^{2}
\]
代价函数是参数\(\theta\)的函数,我们用它来度量\(h_{\theta}(x^{(i)})\)与\(y^{(i)}\)的差距,这样一来,我们的目标就是找到令\(J(\theta)\)最小的\(\theta\)

LMS算法

我们知道,函数的梯度方向是函数值增长最快的方向,所以一个很自然的思路,就是选定一个\(\theta\)的初始值,计算该点处的梯度,令\(\theta\)沿着负梯度的方向移动一小段距离,得到一个新的\(\theta\),再计算梯度,再移动,重复上述过程直至收敛,这就是所谓的梯度下降法(gradient descent),形式化地,我们有以下的更新方程:
\[
\theta_{j} := \theta_{j} - \alpha \frac{\partial}{\partial \theta_{j}} J(\theta), \quad j=0,1,\dots, n
\]
其中\(\alpha\)称为学习率(learning rate),需要注意的是,在每一轮迭代中,对于\(j=0, 1, \dots, n\),\(\theta_j\)是同步更新的,也就是说,我们是利用上一轮迭代得到的\(\theta\)计算梯度,然后同时更新\(\theta\)的各个分量。

针对线性回归问题,如果只有一个训练样本,即\(m=1\),我们可以计算得到:
\[
\frac{\partial}{\partial \theta_{j}} J(\theta) = (h_{\theta}(x)-y)x_{j}
\]
因此,我们可以得到线性回归问题中的参数更新规则,对于单个训练样本\((x^{(i)}, y^{(i)})\):
\[
\theta_{j} := \theta_{j} - \alpha (h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j
\]
这一规则被称为LMS规则(least mean squares),进一步地,我们一般有两种求\(\theta\)的搜索算法。

批处理梯度下降(batch gradient descent, BGD):

Repeat until convergence {
 \(\theta_{j} := \theta_{j} - \alpha\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_{j}\), \(j = 0, 1, \dots, n\)
}

这种方法每一次迭代都要用到整个训练集,当训练集规模较大时,效率较低,但是收敛性较好

随机梯度下降(stochastic gradient descent, SGD):

Loop {
 for i = 1 to m {
  \(\theta_j := \theta_{j} - \alpha(h_{\theta}(x^{(i)}) - y^{(i)})x^{(i)}_{j}\), \(j = 0, 1, \dots, n\)
 }
}

随机梯度下降每次迭代只用到一个训练样本,效率高,但准确度下降

正规方程

正规方程(normal equation)给出了线性回归问题的解的公式形式,吴恩达老师在他的课程材料中给出了完整的推导过程,这里直接给出结果:

令\(X = \begin{bmatrix}(x^{(1)})^{T}\\(x^{(2)})^{T}\\\cdots\\(x^{(m)})^{T}\\\end{bmatrix}\),\(y = \begin{bmatrix}y^{(1)}\\y^{(2)}\\\cdots\\y^{(m)}\\\end{bmatrix}\),则\(\theta = (X^{T}X)^{-1}X^{T}y\)

公式解有着简洁的形式,但是矩阵乘法和矩阵求逆都是比较耗时的,所以维度较大时,梯度下降是更好的选择。

我们可以将求解\(\theta\)的过程看作是求解线性方程组\(X\theta = y\),这里\(X\)是系数矩阵,\(\theta\)是未知数,如果方程组有解,则我们可以用高斯消元的方法得到\(\theta\)使得\(J(\theta) = 0\),然而大部分时候,方程组无解,所以将其转换为正规方程\(X^{T}X\theta = X^{T}y\),一般\(X^{T}X\)是非奇异的,所以可以得到\(\theta = (X^{T}X)^{-1}X^{T}y\)。

概率解释

此前我们直接给出了代价函数\(J(\theta)\),现在我们给出一些概率假设(probabilistic assumptions),基于这些假设,我们尝试推导出代价函数。

假设\(y^{(i)} = \theta^{T}x^{(i)} + \epsilon^{(i)}\),其中\(\epsilon^{(i)}\)是误差项,它代表着未被考虑的特征以及一些噪声,进一步地,假设\(\epsilon^{(i)}\)是独立同分布(IID)的,且\(\epsilon^{(i)} \sim \mathcal{N}(0, \sigma^{2})\),则:
\[
p(\epsilon^{(i)}) = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(\epsilon^{(i)})^2}{2\sigma^{2}}), \quad i = 1, 2, \dots, m
\]
所以,我们可以得到:
\[
y^{(i)}|x^{(i)};\theta \sim \mathcal{N}(\theta^{T}x^{(i)}, \sigma^{2})
\]
以\(\theta\)为参数,在\(x^{(i)}\)的条件下,\(y^{(i)}\)服从以\(\theta^{T}x^{(i)}\)为均值,以\(\sigma^2\)为方差的正态分布,我们可以得到其概率密度函数:
\[
p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^{2}}), \quad i = 1, 2, \dots, m
\]
我们假设\(\epsilon^{(i)}\)是独立同分布的,所以\(y^{(i)}|x^{(i)};\theta\)是独立的,从而我们可以得到似然函数(likelihood function):
\[
\begin{align*}
L(\theta) &= p(y|X;\theta)\\
&= \prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)\\
&= \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^{2}})\\
\end{align*}
\]

根据最大似然(maximum likelihood)原则,我们要选出令\(L(\theta)\)最大的\(\theta\),为了求导的方便,我们可以最大化似然函数的对数值(因为对数函数是定义域上的单调递增函数,所以\(\log L(\theta)\)和\(L(\theta)\)的最大值点是一样的):
\[
\begin{align*}
l(\theta) &= \log L(\theta)\\
&= \log \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^{2}})\\
&= \sum_{i=1}^{m} \log \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^{2}})\\
&= \sum_{i=1}^{m} \log \frac{1}{\sqrt{2\pi}\sigma}-\frac{(y^{(i)}-\theta^{T}x^{(i)})^2}{2\sigma^{2}}\\
&= m\log \frac{1}{\sqrt{2\pi}\sigma} - \frac{1}{\sigma ^2} \sum_{i=1}^{m}\frac{1}{2}(y^{(i)}-\theta^{T}x^{(i)})^2\\
\end{align*}
\]
所以,我们需要的\(\theta\)就是使\(\sum_{i=1}^{m}\frac{1}{2}(y^{(i)}-\theta^{T}x^{(i)})^2=J(\theta)\)最小的\(\theta\),这也就是说,前文所述的代价函数对应着在本节给定的概率假设下,最大化似然函数值的一种选择。

局部加权线性回归

局部加权线性回归(locally weighted linear regression, LWR)针对每一次预测都会重新学习一次参数,并且在学习参数的时候,对不同的训练样本会赋予不同的权重,具体地讲,如果某一次预测的输入是\(x\),LWR的目标是:

  1. 找到参数\(\theta\)使得\(\sum_{i=1}^{m}w^{(i)}(\theta^{T}x^{(i)} - y^{(i)})^{2}\)最小
  2. 输出\(\theta ^{T}x\)

其中,\(w^{(i)}\)是第\(i\)个样本的权重,\(w^{(i)}\)的一种选择是:
\[
w^{(i)} = \exp(-\frac{(x^{(i)}-x)^{T}(x^{(i)}-x)}{2 \tau^2})
\]
离\(x\)比较近的样本权重大,离\(x\)比较远的样本权重小,我们可以近似认为,LWR用预测点附近的一些样本而不是所有样本做线性回归。LWR是一种无参数学习算法(non-parametric learning algorithm),不存在固定的参数,每次预测都会重新算出一组参数,所以需要将所有的训练数据都保存下来;相反地,有参数学习算法有一组固定的参数,只需要训练一次,参数一旦得到,就不会再变,将其保存起来即可。显然,当训练集较大时,无参数学习算法需要较大的存储空间,而且,由于每次预测都要用所有的训练数据进行一次训练,所以效率较低。

CS229笔记:线性回归的更多相关文章

  1. CS229 笔记03

    CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the ...

  2. CS229 笔记08

    CS229 笔记08 Kernel 回顾之前的优化问题 原始问题为: \[ \min_{w,b} \frac{1}{2}||w||^2\\[1.5em] {\text{s.t.}}y^{(i)}\le ...

  3. CS229 笔记07

    CS229 笔记07 Optimal Margin Classifier 回顾SVM \[ \begin{eqnarray*} h_{w,b}&=&g(w^{\rm T}x+b)\\[ ...

  4. CS229 笔记06

    CS229 笔记06 朴素贝叶斯 事件模型 事件模型与普通的朴素贝叶斯算法不同的是,在事件模型中,假设文本词典一共有 \(k\) 个词,训练集一共有 \(m\) 封邮件,第 \(i\) 封邮件的词的个 ...

  5. CS229 笔记05

    CS229 笔记05 生成学习方法 判别学习方法的主要思想是假设属于不同target的样本,服从不同的分布. 例如 \(P(x|y=0) \sim {\scr N}(\mu_1,\sigma_1^2) ...

  6. CS229 笔记04

    CS229 笔记04 Logistic Regression Newton's Method 根据之前的讨论,在Logistic Regression中的一些符号有: \[ \begin{eqnarr ...

  7. CS229 笔记02

    CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ ​ $ {\bf {\t ...

  8. Andrew Ng机器学习公开课笔记 -- 线性回归和梯度下降

    网易公开课,监督学习应用.梯度下降 notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf 线性回归(Linear Regression) 先看个 ...

  9. CS229笔记:生成学习算法

    在线性回归.逻辑回归.softmax回归中,学习的结果是\(p(y|x;\theta)\),也就是给定\(x\)的条件下,\(y\)的条件概率分布,给定一个新的输入\(x\),我们求出不同输出的概率, ...

随机推荐

  1. 5,注释、分支结构、循环结构、伪“选择结构”

    注释: python使用#作为行注释符,使用三引号作为多行注释符 分支结构: if-else: a=int(input("你的成绩是:")) if a>60: print(& ...

  2. 13 款惊艳的 Node.js 框架——第2部分

    [编者按]本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站.丰富 API 以及实时应用的开发流程.本文系国内 ITOM 管理平台 OneAPM ...

  3. oracle--ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效

    SELECT sid, serial#, username, osuser FROM v$session where sid in(select session_id from v$locked_ob ...

  4. JBoss 7 里一个EJB依赖其他jar的几种方式

    JBoss 7 与之前的版本有了巨大的变化,最核心的类的加载方式变了,有点类似OSGI那样搞起来了分模块的类加载方式,而不是以前的分层类加载.按以前的类加载方式,在加载树底下的那些类,总是能看到父节点 ...

  5. 误删mysql表物理文件的解决方法(不涉及恢复数据)

    该方法只介绍了如何救回这个表名(数据不恢复) 如果想要恢复原来数据 直接用extundelete把文件恢复后放回去即可 并且是适用于平时没有全备的情况下  如果有全备 直接那全备的frm和idb文件放 ...

  6. NOIP2018考前抱佛脚——图论基础复习

    目录 存图方式 邻接矩阵存图 邻接表存图 链式前向星 最小生成树 例1 P1536 村村通 题目描述 输入输出格式 输入输出样例 标程 例2 P1546 最短网络 Agri-Net 题目背景 题目描述 ...

  7. SDN 第五次上机作业

    1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 s1: s2: s3: s4: 3.抓包分析验证负载均衡 s4-eth1: s4-eth2: s4-eth3

  8. Django商城项目笔记No.10用户部分-登录接口

    Django商城项目笔记No.10用户部分-登录接口 添加url路由 接下来第二步,增加返回内容: 增加结果如下: 配置:上边的方法定义了返回的内容都有哪些,那这个方法jwt还不知道,需要配置: 修改 ...

  9. Java多线程学习笔记之二缓存

    1.高速缓存 由来:处理器处理能力原因大于主内存(DRAM)访问速率,为了弥补这个差距,引入了高速缓存. 高速缓存是一种存取速率远比主内存大而容量远比主内存小的存储部件,每一个处理器都有其高速缓存.在 ...

  10. wx.aui.AuiManager部分/布局翻译

    wx.aui.AuiManager wx.aui.AuiManager 是AUI框架类中的主要类 wx.aui.AuiManager管理于指定的wx.Frame相关联的窗口,通过使用窗口的wx.aui ...