多元线性回归的表现形式是(1)hθ(x)=y=θ0+θ1x1+θ2x2+...+θnxnh_\theta(x)=y=\theta_0 + \theta_1x_1 + \theta_2x_2+...+\theta_nx_n \tag{1}hθ​(x)=y=θ0​+θ1​x1​+θ2​x2​+...+θn​xn​(1)

其中x1...xnx_1...x_nx1​...xn​是nnn个变量,θ0...θn\theta_0...\theta_nθ0​...θn​是n+1n+1n+1个参数。hhh是hypothesis的简称。如果定义x0=1x_0 = 1x0​=1,(1)式可以变为(2)式:
(2)hθ(x)=y=θ0x0+θ1x1+θ2x2+...+θnxnh_\theta(x)=y=\theta_0x_0 + \theta_1x_1 + \theta_2x_2+...+\theta_nx_n \tag{2}hθ​(x)=y=θ0​x0​+θ1​x1​+θ2​x2​+...+θn​xn​(2)
其中x0=1x_0 = 1x0​=1.

令: X=[x0x1⋮xn],Θ=[θ0θ1⋮θn]X = \begin{bmatrix} x_0 \\ x_1 \\ \vdots \\ x_n \end{bmatrix}, \Theta = \begin{bmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_n \end{bmatrix} X=⎣⎢⎢⎢⎡​x0​x1​⋮xn​​⎦⎥⎥⎥⎤​,Θ=⎣⎢⎢⎢⎡​θ0​θ1​⋮θn​​⎦⎥⎥⎥⎤​
(2)式可简记为(3)式:
(3)hθ(x)=ΘTXh_\theta(x) = \Theta^{\rm T}X \tag{3}hθ​(x)=ΘTX(3)

例如下表,我们要根据房屋属性预测房屋价格。那么在该例中,一共有4个属性,分别是Size, Number of bedrooms, Number of floors, Age of home,表示为x1,x2,x3,x4x_1, x_2, x_3, x_4x1​,x2​,x3​,x4​. Price是要预测的值,即yyy,这里表示为hθ(x)h_\theta(x)hθ​(x).

上表中有很多行,每一行称为一个训练样本(training example/sample). 为方便描述,定义以下符号:
nnn: 属性数量
mmm: 训练样本数量
x(i)x^{(i)}x(i): 第iii个训练样本的属性
xj(i)x^{(i)}_jxj(i)​: 第iii个训练样本的第jjj个属性

从(3)式可知,如果我们知道了参数矩阵ΘT\Theta^{\rm T}ΘT的每一个值,就可以用方程(3)来预测未知样本的值。如何求得ΘT\Theta^{\rm T}ΘT?机器学习中的一个重要任务就是估计ΘT\Theta^{\rm T}ΘT. 足够好的ΘT\Theta^{\rm T}ΘT必定会使得预测值无限接近于真实值,如果设计一个关于ΘT\Theta^{\rm T}ΘT的函数用来表示预测值与真实值之间的差异,那么求得一个足够小的差异,就可以解出ΘT\Theta^{\rm T}ΘT,这个函数通常成为代价函数(cost function),简记为J(θ)J(\boldsymbol{\theta})J(θ).

代价函数及其参数的估计

多元线性回归方程的代价函数定义如下:
(4)J(θ0,θ1,...,θn)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0, \theta_1, ..., \theta_n) = \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)} ) - y^{(i)})^2 \tag{4}J(θ0​,θ1​,...,θn​)=2m1​i=1∑m​(hθ​(x(i))−y(i))2(4)
其中hθ(x(i))h_\theta(x^{(i)})hθ​(x(i))是预测值,y(i)y^{(i)}y(i)是真实值。特意在右项乘以12m\frac{1}{2m}2m1​是为了之后计算方便(求极值需求导,可约去)。代价函数的直观理解是若J(θ)J(\boldsymbol{\theta})J(θ)越小,表示预测值与真实值之间的差异越小,一定程度上说明我们的假设hθ(x)h_\theta(x)hθ​(x)比较好;反之差异越大,hθ(x)h_\theta(x)hθ​(x)不够好。

梯度下降法估计参数

估计θ\thetaθ (本文中θ=ΘT\theta = \Theta^{\rm T}θ=ΘT)的本质是在代价函数J(θ)J(\boldsymbol{\theta})J(θ)取最小值(局部最小值)的情况下θ\thetaθ的取值。梯度下降(Gradient descent)法估计参数就是不断对每一个θi\theta_iθi​求偏导,得到新的参数θi∗\theta^*_iθi∗​,迭代一定次数或新的参数θi∗\theta^*_iθi∗​与上一个参数相比不再变化或变化很小时,即求得θ\thetaθ.

例如,对θj\theta_jθj​求偏导,

(5)∂J(θ)∂θj=−1m∑i=1m(hθ(x(i))−y(i))xj(i)\frac{\partial J(\boldsymbol{\theta})}{\partial \theta_j} = -\frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \tag{5} ∂θj​∂J(θ)​=−m1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​(5)

梯度是函数上某一点增长最快的方向。在参数估计中,我们需要降低cost,因此选择梯度的反方向作为更新的方向。故更新θj\theta_jθj​时,用上一步的θj\theta_jθj​加上梯度的负数,即

θj:=θj−∂J(θ)∂θj\theta_j := \theta_j - \frac{\partial J(\boldsymbol{\theta})}{\partial \theta_j} θj​:=θj​−∂θj​∂J(θ)​

(6)⇒θj:=θj+1m∑i=1m(hθ(x(i))−y(i))xj(i)\Rightarrow \theta_j :=\theta_j + \frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \tag{6} ⇒θj​:=θj​+m1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​(6)

更新θj\theta_jθj​时,可以使用所有样本来更新((6)式中对样本的数量mmm求和),这就是所谓的BGD(批量梯度下降,Batch Gradient Descent)。

实际应用时会在更新θj\theta_jθj​时乘以一个系数,如下:

Repeat (until converged or reach the maximum iteration times):
θj:=θj−α∂∂θjJ(θ0,θ1,...,θn)\theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j}J(\theta_0, \theta_1, ..., \theta_n)θj​:=θj​−α∂θj​∂​J(θ0​,θ1​,...,θn​)
(7)⇒θj:=θj+α1m∑i=1m(hθ(x(i))−y(i))xj(i)\Rightarrow \theta_j :=\theta_j + \alpha \frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \tag{7}⇒θj​:=θj​+αm1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​(7)

以上过程要同时求出所有的θ0,...,θn\theta_0, ..., \theta_nθ0​,...,θn​并同时更新所有的θ0,...,θn\theta_0, ..., \theta_nθ0​,...,θn​. 上式中的α\alphaα称为learning rate,它控制了学习的速率。当α\alphaα赋值很大时,上述迭代过程有可能不收敛;但当α\alphaα赋值太小时,对大数据量而言,收敛过程可能会很慢。理想的α\alphaα赋值会使的θj\theta_jθj​会随着迭代次数的增大而逐步减小(每一个新的迭代θj\theta_jθj​的值都会比上一次迭代周期中的值小。

迭代终止的条件是:
达到指定的迭代的次数,或者
新的θj\theta_jθj​与上次的θj\theta_jθj​差值在某个阈值之内

正规方程求解参数

正规方程(Normal Equation)求解参数是解析法求解,不需要迭代过程。
过程參考正规方程推导(我不想輸公式了)

代价函数的概率解释与推导

上面给出了代价函数的定义与参数估计的过程。代价函数的定义如(4)式,直觉上很好理解,但为何代价函数要定义成这个样子?下面给出一个概率上的解释。

文章最开始给出了线性回归模型的表现形式,如(1)式。更准确的写法应该是:
(1’)hθ(x)=y=θ0+θ1x1+θ2x2+...+θnxn+εh_\theta(x)=y=\theta_0 + \theta_1x_1 + \theta_2x_2+...+\theta_nx_n+\varepsilon \tag{1'}hθ​(x)=y=θ0​+θ1​x1​+θ2​x2​+...+θn​xn​+ε(1’)
多出来的ε\varepsilonε是误差项,表示线性回归的假设方程包含未知的误差和随机噪声。通常假设误差项是独立同分布(iid, Independent Identically Distribution),且服从均值为0,方差为σ2\sigma^2σ2的正态分布。假设误差项服从正态分布的原因是:

  1. 数学上处理的便利
  2. 根据中心极限定理,独立的随机变量的和,即多种随机误差的累积,其总的影响是接近正态分布的。实际应用中,诸多独立随机变量的分布是服从正态分布的。

因此,对于每一个训练样本,其误差ε(i)\varepsilon^{(i)}ε(i)的密度函数为:
(7)p(ε(i))=12πσexp(−(ε(i))22σ2)p(\varepsilon^{(i)}) = \frac{1}{\sqrt{2\pi}\sigma}exp({-\frac{(\varepsilon^{(i)})^2}{2\sigma^2})} \tag{7}p(ε(i))=2π​σ1​exp(−2σ2(ε(i))2​)(7)
再由(1’)式和(3)式,改写成机器学习中常见的条件概率形式,有:
(8)p(y(i)∣x(i);θ)=12πσexp(−(y(i)−ΘTx(i))22σ2)p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\sigma}exp({-\frac{(y^{(i)} - \Theta^{\rm T}x^{(i)})^2}{2\sigma^2})} \tag{8}p(y(i)∣x(i);θ)=2π​σ1​exp(−2σ2(y(i)−ΘTx(i))2​)(8)
简记为:
(9)p(y(i)∣x(i);θ)∼N(ΘTx(i),σ2)p(y^{(i)}|x^{(i)};\theta) \sim N( \Theta^{\rm T}x^{(i)}, \sigma^2) \tag{9}p(y(i)∣x(i);θ)∼N(ΘTx(i),σ2)(9)
上式表示,若给定参数θ\thetaθ,在已知随机变量(训练样本)为x(i)x^{(i)}x(i)的情况下,y(i)y^{(i)}y(i)的概率密度分布。

注意到x(i)x^{(i)}x(i)是iid,对所有随机变量(训练样本)x(i)x^{(i)}x(i)的联合概率密度可以写成连乘的形式:
L(θ)=p(y∣X;Θ)=∏i=1mp(y(i)∣x(i);θ)L(\theta) = p(y|X;\Theta) = \prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)L(θ)=p(y∣X;Θ)=i=1∏m​p(y(i)∣x(i);θ)
(10)⇒L(θ)=∏i=1m12πσexp(−(y(i)−ΘTx(i))22σ2)\Rightarrow L(\theta) = \prod_{i=1}^{m}{\frac{1}{\sqrt{2\pi}\sigma}exp({-\frac{(y^{(i)} - \Theta^{\rm T}x^{(i)})^2}{2\sigma^2})}} \tag{10}⇒L(θ)=i=1∏m​2π​σ1​exp(−2σ2(y(i)−ΘTx(i))2​)(10)

L(θ)L(\theta)L(θ)称为似然(likelihood)函数。注意到似然函数是关于参数θ\thetaθ的函数,求解参数θ\thetaθ的过程称为参数的极大似然估计。含义是找到一个θ\thetaθ,使得L(θ)L(\theta)L(θ)的值最大。显然,对L(θ)L(\theta)L(θ)求θ\thetaθ的导数并令该导数等于0,此时求得的θ\thetaθ即为最小值或极小值(对于单变量的线性回归方程,可以求得最小值,但是对于多变量线性回归,一般求得极小值)。

对(9)式两边取对数,将连乘化为求和:
(11)l(θ)=log⁡L(θ)=mlog⁡(12πσ−1σ212∑i=1m(y(i)−ΘTx(i))2)l(\theta) = \log{L(\theta)} = m \log(\frac{1}{\sqrt{2\pi}\sigma} - \frac{1}{\sigma^2} \frac{1}{2} \sum_{i=1}^{m}(y^{(i)} - \Theta^{\rm T}x^{(i)})^2 ) \tag{11}l(θ)=logL(θ)=mlog(2π​σ1​−σ21​21​i=1∑m​(y(i)−ΘTx(i))2)(11)
显然,要使得l(θ)l(\theta)l(θ)最小,则上式中的∑i=1m(y(i)−ΘTx(i))2\sum_{i=1}^{m}(y^{(i)} - \Theta^{\rm T}x^{(i)})^2∑i=1m​(y(i)−ΘTx(i))2要最大。将该项中的y(i)y^{(i)}y(i)替换为hθ(x(i))h_\theta(x^{(i)})hθ​(x(i)), ΘTx(i)\Theta^{\rm T}x^{(i)}ΘTx(i)替换为y(i)y^{(i)}y(i)即得(4)式中的形式。

线性回归的规范化

拿到training data,提取属性后,构造(4)式作为代价函数,通过梯度下降或正规方程可以得到回归方程的参数,将参数代入(2)式即可预测未知数据。但是如果数据的属性很多,例如一个语料库(corpus)用了2000个不同的单词,将这些单词全部作为线性回归方程的输入,那么属性数量n=2000n=2000n=2000,最后需要求解的参数θ\thetaθ数量为2001个。若以单词是否出现作为属性值,即某篇文章中,一个单词出现记为1,反之记为0,那么属性矩阵XXX将是一个十分稀疏的矩阵。

通常规范化(regularization)为了解决以下问题:

  1. 相对于训练样本数量,属性数量太多,容易造成过度拟合(over-fitting)
  2. 属性数量太多且属性矩阵是个稀疏矩阵

线性回归的主要任务是计算代价函数的最小值得到参数。线性方程的规范化(Regularized Linear Regression)就从改造代价函数开始。

如下图,若要根据房屋面积预测房价,根据图中的训练样本分布(那些叉叉),一个二次多项式足够了。

但是如果用更高次的多项式呢?如下图,可以将训练样本拟合得更加好;然而此时用下圖预测,结果肯定惨不忍睹。

注意到两个方程之间只差了θ3x3\theta_3x^3θ3​x3和θ4x4\theta_4x^4θ4​x4两项。若令θ3\theta_3θ3​和θ4\theta_4θ4​足够小,这两项会趋近于0,进而相当与二次多项式。规范化即以此为理念,如果参数太多,就将多余的参数的缩小。但实际上不知道哪些参数是多余的,因此将所有参数都缩小,改造一下代价函数,得到:
(12)J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2]J(\theta) = \frac{1}{2m}[\sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda \sum_{j=1}^{n}\theta_j^2] \tag{12}J(θ)=2m1​[i=1∑m​(hθ​(x(i))−y(i))2+λj=1∑n​θj2​](12)
其中λ\lambdaλ称为规范化系数(regularization parameter)。在迭代过程中,最后的θ1,...,θn\theta_1, ..., \theta_nθ1​,...,θn​会变小。

规范化后的梯度下降过程

略加推导,规范化后的线性回归梯度下降估计参数过程变为:

Repeat:
θj:=θj−α∂∂θjJ(θ0,θ1,...,θn)\theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j}J(\theta_0, \theta_1, ..., \theta_n)θj​:=θj​−α∂θj​∂​J(θ0​,θ1​,...,θn​)
⇒θj:=θj−α[1m∑i=1m(hθ(x(i))−y(i))xj(i)+λmθj]\Rightarrow \theta_j :=\theta_j - \alpha [\frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} + \frac{\lambda}{m}\theta_j]⇒θj​:=θj​−α[m1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​+mλ​θj​]
(13)⇒θj:=θj(1−αλm)−α1m∑i=1m(hθ(x(i))−y(i))xj(i)\Rightarrow \theta_j :=\theta_j (1- \alpha \frac{\lambda}{m}) - \alpha \frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \tag{13} ⇒θj​:=θj​(1−αmλ​)−αm1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​(13)

规范化后的正规方程

规范化后的正规方程形式如下(我也不知道怎么推导):

(14)θ=(XTX+λA)−1XTy\theta = (X^TX + \lambda A)^{-1}X^Ty \tag{14}θ=(XTX+λA)−1XTy(14)
其中A是对角线上除了第一个元素为0的对角方阵:
A=[011⋱1]A = \left[ \begin{matrix} 0 & & & \\ & 1 & & \\ & &1 & \\ & & & \ddots \\ & & & &1 \\ \end{matrix} \right]A=⎣⎢⎢⎢⎢⎡​0​1​1​⋱​1​⎦⎥⎥⎥⎥⎤​

Reference

以上例子、公式、圖片來源於Coursera Machine Learning在線課程。
回归模型的代价函数的推导过程参考:回归模型的概率解释。

Multivariate Linear Regression的参数估计相关推荐

  1. ML Notes: Week 2 - Multivariate Linear Regression

    1. The basic theory of the multivariate linear regression Hypothesis: hθ(x)=θ0x0+θ1x1+-+θnxn=θTXh_\t ...

  2. Machine Learning experiment2 Multivariate Linear Regression 详解+源代码实现

    数据预处理: 根据题目,我们得知,该数据为房价关于住房面积,卧室数量的相关数据,共47组数据,我们可以观测到住房面积接近等于卧室数量的1000倍左右,所以我们需要对数据进行标准化. 首先,我们作图如下 ...

  3. Machine Learning week 2 quiz: Linear Regression with Multiple Variables

    Linear Regression with Multiple Variables 5 试题 1. Suppose m=4 students have taken some class, and th ...

  4. Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)

    Machine Learning – Coursera Octave for Microsoft Windows GNU Octave官网 GNU Octave帮助文档 (有900页的pdf版本) O ...

  5. AI(006) - 笔记 - 回顾线性回归(Linear Regression)

    线性回归(Linear Regression) 之前并未做过笔记,所以这篇文章是对线性模型的回顾,对应: 第一周:(06)1.6 线性回归模型 第一周:(07)1.6 线性回归模型-优化算法 第一周: ...

  6. 生物统计学(Biostatistics)笔记第七讲-Linear regression and correlation analysis

    Linear regression and correlation analysis •第五章中,我们介绍了如何研究两个定性变量是否有关系的问题. •实际工作中,我们经常需要研究两个或两个以上定量变量 ...

  7. python实现贝叶斯回归_贝叶斯线性回归(Bayesian Linear Regression)

    贝叶斯线性回归(Bayesian Linear Regression) 标签(空格分隔): 监督学习 @ author : duanxxnj@163.com @ time : 2015-06-19 本 ...

  8. 【cs229-Lecture2】Linear Regression with One Variable (Week 1)(含测试数据和源码)

    从Ⅱ到Ⅳ都在讲的是线性回归,其中第Ⅱ章讲得是简单线性回归(simple linear regression, SLR)(单变量),第Ⅲ章讲的是线代基础,第Ⅳ章讲的是多元回归(大于一个自变量). 本文的 ...

  9. Linear Regression(一)——

    Linear Regression(一)-- 机器学习 回归 定义 回归的定义 在平面上存在这些点我希望能用一条直线尽可能经过它们. 于是我们画了下面的一条直线 这样的过程就叫做回归. 这个过程中我们 ...

最新文章

  1. 数组的有关属性和方法
  2. 硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题
  3. 阿里云全球19个地域节点,哪个节点的服务器好,速度快?...
  4. iOS 开发_..和self...的区别以及使用
  5. linux链接curl库,Linux利用curl库快速开发http应用
  6. SpringMVC教程--Validation校验
  7. ubuntu查看网关
  8. php xml 四种,xml中常见的四种解析方式是什么?
  9. java实现递归算法_如何在Java中实现二进制搜索算法而无需递归
  10. lisp 读取dwg 统计信息_预制梁厂 BIM 技术和自动化、信息化应用方案
  11. FFmpeg 2.1 试用(新版支持HEVC,VP9)
  12. Echarts笔记-折线图定制(Y轴百分数,鼠标移动显示百分数,显示X轴,Y轴值)
  13. 数据结构之顺序表和有序表查找其实现
  14. mysql孤立锁_SQL Server解决孤立用户浅析
  15. python基础: 选择语句
  16. linux 无线投屏windows,无线投屏器投屏与大屏幕系统无关
  17. 浏览器cookie怎么清除,彻底清除上网痕迹只需这几步
  18. ElasticSearch IK分词器配置远程词典
  19. java基础——多态
  20. 微信小游戏《头脑王者》答题辅助脚本

热门文章

  1. linux-安装-MySQL
  2. AWS EC2怎么动态增加磁盘空间
  3. JavaWeb14-HTML篇笔记(一)
  4. 数据库索引优化原理,索引的工作机制
  5. mysql show
  6. 十天冲刺开发第一天个人工作总结
  7. UVa 1600 Patrol Robot (习题 6-5)
  8. 在windows下python,pip,numpy,scipy,matplotlib的安装
  9. 你所不知道的模块调试技巧 - npm link #17
  10. Tomcat8史上最全优化实践