线性回归问题

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

\(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. linux下搭建hexo环境

    最近对搭建个人博客比较感兴趣,但是刚搭建好next主题基本博客,电脑就坏了,借了一台电脑继续搞,不想在他电脑中弄太多环境,所以我准备在自己电脑的服务器上搭建hexo环境 服务器环境: (1)cento ...

  2. git版本超前了N个版本且落后了N个版本的解决办法

    当遇到该问题的时候,一般情况下我们会首先拉取,紧接着就出现了一系列问题………… 其实当输入命令,git pull的时候,会报错,这时瞬间就感到凌乱了&……*%%*%………… 莫慌…… 这时输入 ...

  3. c# 通过GroupBy 进行分组

    有时候我们需要数据根据一些字段进行分组,这时候用orderBy很方便.不多说了.直接上代码: class Ma { public int number { get; set; } public str ...

  4. eclipse neon配置tomcat8无法显示默认页面解决方法

    下载对应tomcat8版本到本地后,在eclipse中添加tomcat8的对应目录,输入http://localhost:8080时无法显示tomcat的index.jsp页面(会显示404页面).原 ...

  5. MySQL 8.0有什么新功能

    https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/ 我们自豪地宣布MySQL 8.0的一般可用性. 现在下载 ...

  6. MySQL生产环境下的主从复制启动项

    MySQL的复制参数除了我们之前搭建主从时遇到的那几个之外,还有以下两个: 1.log-slave-updates 这个参数用来配置从库上是否启动了二进制日志的功能,默认是不开启的,如果开启了那么从库 ...

  7. PyQt5--Buttons

    # -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...

  8. 使用PhotoShop将视频转为gif格式

    由于文档中不方便上传视频,尤其是一些短视频,将其制作成gif格式更便于浏览,刚好PhotoShop中有这种功能,笔者在这里分享一下. 在PS中打开需要转换格式的视频文件,选择文件选项导出中的导出为We ...

  9. BZOJ 1087 互不侵犯King 状态压缩DP

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1087 题目大意; 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国 ...

  10. luogu P1891 疯狂LCM

    嘟嘟嘟 这题跟上一道题有点像,但是我还是没推出来--菜啊 \[\begin{align*} ans &= \sum_{i = 1} ^ {n} \frac{i * n}{gcd(i, n)} ...