线性回归问题

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

\(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. python基础一数据类型之元祖

    摘要: python基础一中写到数据类型元祖,那么这篇主要讲元祖. 1,元祖定义 tuple1 = (1,2,'a','b') 元祖是不可变数据,所以又名只读列表.那么如何让是元祖可变呢?可以在元祖中 ...

  2. 2. DAS,NAS,SAN在数据库存储上的应用

    一. 硬盘接口类型1. 并行接口还是串行接口(1) 并行接口,指的是并行传输的接口,比如有0~9十个数字,用10条传输线,那么每根线只需要传输一位数字,即可完成.从理论上看,并行传输效率很高,但是由于 ...

  3. Oracle EBS INV 更新状态

    使用API改变现有物料状态,改成如下:On-Hand, Subinventory, Locator, Lot & Serial.参数使用如下:H, O, S, Z, L.对应如下: 'H' - ...

  4. Oracle EBS AR 收款调整取值

    SELECT ct.trx_number ,adj.adjustment_number ,ad.amount_dr ,ad.amount_cr ,ad.source_table ,ad.source_ ...

  5. C# 利用VS自带的WSDL工具生成WebService服务类(转载)

    WebService有两种使用方式,一种是直接通过添加服务引用,另一种则是通过WSDL生成. 添加服务引用大家基本都用过,这里就不讲解了. 那么,既然有直接引用的方式,为什么还要通过WSDL生成呢? ...

  6. 2019 wannafly winter camp day 3

    2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...

  7. leetcode 2. Add Two Numbers [java]

    注意点: 最后的进位 (l1 == null || l1.next == null) break; public ListNode addTwoNumbers(ListNode l1, ListNod ...

  8. Excel 怎样去掉单元格中的回车符号

    1.同时按下 CTRL+H调出"查找---替换"对话框:2.在查找中输入:按住ALT ,小键盘输入 10 ,然后松开ALT:3.在替换中写入要替换的符号:这样就将回车符换成其他符号 ...

  9. Mysql双主 keepalived+lvs实现mysql高可用性

    MySQL复制 能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现 ...

  10. python内置模块

    time--时间模块 时间三大类: 时间戳 time.time() 结构化时间(年月日时分秒 一周内第几天,一年内第几天,是否夏令时) time.localtime()  time.gmtime() ...