线性回归问题

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

\(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. LeetCode 题解之 Positions of Large Groups

    1.题目描述 2.问题分析 从头遍历字符串,使用一个局部迭代器和局部变量记录该字符个数.如果个数>= 3 ,则将此时的迭代器位置和局部迭代器的位置保存到局部vector中.再将这个局部vecto ...

  2. PHP将Base64图片转换为本地图片并保存

    本文出至:新太潮流网络博客 /** * [将Base64图片转换为本地图片并保存] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB h ...

  3. Online, Cheap -- and Elite

    Online, Cheap -- and Elite Analysis of Georgia Tech’s MOOC-inspired online master's in computer scie ...

  4. [Spark Core] Spark 实现气温统计

    0. 说明 聚合气温数据,聚合出 MAX . MIN . AVG 1. Spark Shell 实现 1.1 MAX 分步实现 # 加载文档 val rdd1 = sc.textFile(" ...

  5. IE 8 下sharepoint 2013 难看的字体的解决方案

    将 corev15.css 中的有关"Segoe UI","Segoe",Tahoma,移除即可. 一共二处 C:\Program Files\Common F ...

  6. 有关于分布式缓存Hazelcast

    如果在内网段中部署或者启动缓存服务.不能存在相同的组名称.如同使用dubbo一样,会导致无法连接到缓存节点

  7. pyspider爬取数据导入mysql--1.安装驱动

    接上篇,刚装好的pyspider,我们打算大显身手,抓一批数据到mysql中. 然而,出师未捷,提示我们:ImportError: No module named MySQLdb 这是因为还没有安装M ...

  8. 网页设计之字体和 CSS 调整

    调整 CSS 首先,我们先来看看问题的源头.CSS 的出现曾是技术的一大进步.你可以用一个集中式的样式表来装饰多个网页.如今很多 Web 开发者都会使用 Bootstrap 这样的框架. 这些框架当然 ...

  9. iis配置绑定二级域名的问题

    最近用destoon给客户做一个网站,涉及到站内企业网站的二级域名解析的问题,iis怎么配置绑定子目录绑定二级域名呢,查了好多资料,没有一个给出具体步骤的 基本是一些概念,不过看了这些东西基本理解了泛 ...

  10. linux固定ip地址

    最近自己搭jenkins发现ifconfig出来ip老是变来变去决定固定服务ip,原来配置: [root@bogon bin]# cat /etc/sysconfig/network-scripts/ ...