CS229笔记:线性回归
线性回归问题
首先做一些符号上的说明:
\(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的目标是:
- 找到参数\(\theta\)使得\(\sum_{i=1}^{m}w^{(i)}(\theta^{T}x^{(i)} - y^{(i)})^{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笔记:线性回归的更多相关文章
- CS229 笔记03
CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the ...
- CS229 笔记08
CS229 笔记08 Kernel 回顾之前的优化问题 原始问题为: \[ \min_{w,b} \frac{1}{2}||w||^2\\[1.5em] {\text{s.t.}}y^{(i)}\le ...
- CS229 笔记07
CS229 笔记07 Optimal Margin Classifier 回顾SVM \[ \begin{eqnarray*} h_{w,b}&=&g(w^{\rm T}x+b)\\[ ...
- CS229 笔记06
CS229 笔记06 朴素贝叶斯 事件模型 事件模型与普通的朴素贝叶斯算法不同的是,在事件模型中,假设文本词典一共有 \(k\) 个词,训练集一共有 \(m\) 封邮件,第 \(i\) 封邮件的词的个 ...
- CS229 笔记05
CS229 笔记05 生成学习方法 判别学习方法的主要思想是假设属于不同target的样本,服从不同的分布. 例如 \(P(x|y=0) \sim {\scr N}(\mu_1,\sigma_1^2) ...
- CS229 笔记04
CS229 笔记04 Logistic Regression Newton's Method 根据之前的讨论,在Logistic Regression中的一些符号有: \[ \begin{eqnarr ...
- CS229 笔记02
CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ $ {\bf {\t ...
- Andrew Ng机器学习公开课笔记 -- 线性回归和梯度下降
网易公开课,监督学习应用.梯度下降 notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf 线性回归(Linear Regression) 先看个 ...
- CS229笔记:生成学习算法
在线性回归.逻辑回归.softmax回归中,学习的结果是\(p(y|x;\theta)\),也就是给定\(x\)的条件下,\(y\)的条件概率分布,给定一个新的输入\(x\),我们求出不同输出的概率, ...
随机推荐
- python 中* 和**的作用
先举个 ** 使用的例子: data = {"a": 1, "b": 2} def foo(**kwargs): print kwargs foo(a=1, b ...
- 看jQuery的这几天
现在在做SPA时,有很多非常好用而且流行的前端框架,比如Vue,React,Angular等,jQuery似乎要逐渐退出前端的舞台了.不得不说,'write less,do more' 这句话吸引了我 ...
- SendMessage,BroadcastMessage
三者比较 用于向某个GameObject发送一条信息,让它完成特定功能.其实本质是调用绑定GameObject里面的Script里面的函数,可以跨语言的,例如Javascript可以调用C#的函数,我 ...
- touch创建文件
创建文件 在cs目录下创建1.txt和2.txt文件 touch ./文件名.txt 或者 touch /root/cs 文件名.txt 或者 echo > ./文件名.txt 或者 >. ...
- [IDEA_1] IDEA 使用指南
1. IDEA 安装与配置 具体细节待补充... 2. 优化编程体验 2.1.1 新建类后自动添加自定义的注释 在主界面使用快捷键 Ctrl + Alt + S 进入 Settings 页面 依次打开 ...
- Hadoop HBase概念学习系列之HRegion服务器(三)
所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRe ...
- PyQt5 的几个核心模块作用
QtCore 包含了核心的非GUI功能.此模块用于处理时间.文件和目录.各种数据类型.流.URL.MIME类型.线程或进程. QtGui 包含类窗口系统集成.事件处理.二维图形.基本成像.字体和文 ...
- nginx 服务器在上传文件出现413代码的解决方法
打开nginx主配置文件nginx.conf 找到http{}段,添加client_max_body_size 20m;
- 根据拼音首字母进行过滤的combobox
keywords: 拼音 首字母 过滤 在combobox中输入汉字拼音的首字母时,下面列出对应的可选项,就像下面这样 1. 首先在数据库中需要设计一个表,专门用来存放药物及对应的拼音首字母,这样当用 ...
- 【转】浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)
1.概要 从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程.下面我将依靠自己的经验,总结一下整个过程.如有错漏,欢迎指正. ...