机器学习笔记02:多元线性回归、梯度下降和Normal equation

《机器学习笔记01》中已经讲了关于单变量的线性回归以及梯度下降法。今天这篇文章作为之前的扩展,讨论多变量(特征)的线性回归问题、多变量梯度下降、Normal equation(矩阵方程法),以及其中需要注意的问题。

单元线性回归

首先来回顾一下单变量线性回归的假设函数:

Size(feet2) Price($1000)
2104 460
1416 232
1534 315
852 178

我们的假设函数为 hθ(x)=θ0+θ1x


多元线性回归

下面介绍多元线性回归(Linear Regression with Multiple features/variables)。同样以预测房价为例,假设我们对房价的预测涉及到4个因素:Size、Number of bedrooms、Number of floors、Age of house。假设我们的训练集如下:

Size(feet2) Number of bedrooms Number of floors Age of house(years) Price($1000)
2104 5 1 43 460
1416 3 2 40 232
1534 3 2 30 315
852 2 1 36 178

符号说明(Notation):

符号 含义
n number of features(特征的数量,上表中为4)
x(i) input(features) of ith training example(第i组训练数据,比如x2表示上表中第二行)
xij value of feature j in ith training example(第i组训练接的第j个特征值,比如x32表示上表中的第三行第二列的值2)
m number of training examples(训练集样本的数量,比如上表为4)

1、假设函数(Hypothesis function)

既然是线性回归,我们的假设函数当然应该是一条直线:

hθ(x)=θ0+θ1x1+θ2x2+θ3x3+...+θnxn

或者

hθ(x)=θ0x0+θ1x1+θ2x2+θ3x3+...+θnxn

其中x0始终为1。所以上面两个函数是等价的。

为了方便,我们记

X=????????x0x1x2...xn????????;θ=????????θ0θ1θ2...θn????????

所以有

hθ(x)=θ0+θ1x1+θ2x2+θ3x3+...+θnxn=[θ0θ1θ2...θn]????????x0x1x2...xn????????=θTX

其中,θT是一个规模为1×(n+1)的矩阵,X是一个规模为(n+1)×1的矩阵。假设函数的说明就到这里,下面我们来看看多变量的梯度下降法。


2、多变量梯度下降(Gradient descent for Multiple Variables)

  1.假设函数(Hypothesis function):

hθ(x)=θ0+θ1x1+θ2x2+θ3x3+...+θnxn=θTX

  2.误差函数(Cost function):

J(θ0,θ1,...,θn)=12m∑i=1m(hθ(x(i))?y(i))2

J(θ)=12m∑i=1m(θTx(i)?y(i))2

J(θ)=12m∑i=1m(∑j=0nθjx(i)j)?y(i))2

注意:上面三种形式都是等价的。

在单元线性回归中,我们只对θ0和θ1使用了梯度下降法,在多元变量的梯度下降中,我们将对每个θ都求偏导。其形式如下:

Repeat until convergence:{ //重复直到收敛

θj=θj?α??θjJ(θ)

} (Notice: simultaneously update θj for every j=0,1,2,...,n)

注意:在一次迭代过程中,必须同时更新每个θ。例如不能在更新了θ1之后,就把新的θ1用于更新后面的θ2,而应该使用上一次迭代产生的θ1来更新这一次迭代中的θ2。

上面的

θj=θj?α??θjJ(θ)

等价于

θ0=θ0?α1m∑i=1m(hθ(x(i))?y(i))xi0

θ1=θ1?α1m∑i=1m(hθ(x(i))?y(i))xi1

θ2=θ2?α1m∑i=1m(hθ(x(i))?y(i))xi2

...

θn=θn?α1m∑i=1m(hθ(x(i))?y(i))xin

在执行足够次数的迭代 (iteration) 之后,我们就能取得最佳的 θj 的值。但是在特征(features)数量很大的情况下会遇到一个问题,那就是梯度下降算法可能会非常的慢,下面来看看原因与解决办法。


3、特征缩放(Feature scaling)

我们来考虑这样一个实例:还是预测房价,但是假设每个训练样本有两个特征:

Size(feet2) Number of bedrooms
Range 0-2000 1-5

如果直接进行梯度下降的话,速度可能会非常的慢。至于为什么我们先来看看 J(θ) 的等高线图(contour):

假如只考虑假设函数的θ1和θ2,令

hθ(x)=θ1x1+θ2x2



J(θ1,θ2)=12m∑i=12(hθ(x(i))?y(i))2

由上面这个函数可以看出,因为x1的取值范围很大,即便是θ1微小的变化,θ1x1的值也可能会发生很大的变化;而因为x2的取值范围较小,即所以在同程度上θ2的变化,不会使得θ2x2的值发生很大的变化。所以我们得到了刚才那幅等高线图,因此,我们需要一种方法来解决这个问题。我们用的方法很简单,叫做特征缩放(feature scaling)

特征缩放(feature scaling),顾名思义,就是将特征的取值范围进行缩放,我们采用如下公式对特征进行缩放(还是以上面那个例子来解释):

x1=Size(feet2)2000?0≤x1≤1

x2=NumberOfBedrooms5?0≤x2≤1

当我们对每个特征值进行了类似的缩放之后,我们得到了如下的等高线图:

由此可见,缩放之后的等高线图更接近一个圆,而不是一个很扁的椭圆,这样梯度下降法将运行得更加快速。

另外需要说的是,我们一般会希望将每个特征的范围都缩放到 -1 与 1 之间,并且对于偏离这个范围不太大的特征不进行缩放(当然也可以按自己喜好进行缩放)。例如:

Origin range Need feature scaling?
0≤x1≤3 not need
?2≤x2≤0.5 not need
?100≤x3≤100 need
?0,0001≤x4≤0.0001 need

上面的need和not need并没有一个准确的界限,大可酌情而定。


3、均值归一化(Mean normalization)

正如上面提到的,我们希望将每个特征的范围都缩放到 -1 与 1 之间,并且对于偏离这个范围不太大的特征不进行缩放。

Mean normalization的具体方法是用x(i)j?μj来代替x(i)j以将特征的范围大致的约束在0的附近(一般为-1到1),注意我们不必对x(i)0=1进行归一化。其中μj表示特征xj的平均值。我们可将均值归一化公式总结为:

x(i)j=x(i)j?μjS(j)

其中μj的意义已经说明了,S(j)表示第j个特征的范围。


4、学习速率 α(Learning rate α)

关于学习速率 α 我们需要注意两点:

1.确保梯度下降(gradient descent)能够正确地工作。

一方面,我们先来思考一下梯度下降的速率,先来看一个关于梯度下降的图:

注意到,在100次迭代之后,误差还是很大的,在200次迭代之后误差任然很可观,但是在300次迭代之后,误差算是比较小了,在400次迭代之后,误差也比较令人满意。但这里我们的关注点在300和400这两个阶段上,300次迭代之后,我们发现误差还比较令人满意,而却需要花费额外的100次才能使得误差好那么一点点,所以我们可以声明一个低度下降的下界,比如将 10?3 作为一个下降的下界来避免不必要的额外计算花费。但是,这个下界通常是很难选取的。

另一方面,来看看,梯度下降无法正常工作的情况,看图:

出现这三种情况的原因都是因为学习速率 α 过大,只要逐渐减小学习速率 α 直到正常工作即可。至于为什么是学习速率 α 过大,参考《机器学习笔记01》。可以明确的一点是,只要 α 足够小,J(θ) 会在每次迭代中都减小,但是如果 α 太小的话,梯度下降将会变得很慢。所以我么可以总结如下:

Causes Results
If α is too small Slow convergence
If α is too large J(θ) may not decrease on every iteration; may not converge

2.如何选取一个合适的 α。

如何选取一个合适的 α 关乎到 Gradient descent 的速率。一般的方法如下:

在自己选定的一个大致范围内进行debug。一般间隔为三倍的关系:

...,0.001,0.003,0.01,0.03,0.1,0.3,1,...

通过试验,选择一个最佳的学习速率,比如0.03。


5、特征和多项式回归(Features and Polynomial Regression)

这部分只是额外的一些关于选择假设函数的东西。下面看个例子,还是房价预测。

假设函数为:

hθ(x)=θ0+θ1×frontage+θ2×depth



x=Area=frontage×depth



hθ(x)=θ0+θ1x

假设训练数据的分布如下:

我们可能选则次数更高的函数比如二次函数(红色)

hθ(x)=θ0+θ1x+θ2x2

但是如图,我们发现二次函数的后半部分明显不符合数据的走向,总不可房子越大,价钱越低吧。

再来看看三次函数(绿色)

hθ(x)=θ0+θ1x+θ2x2+θ3x3

这个函数是比较合理的一个,另外还有一个函数也比较合适:

hθ(x)=θ0+θ1x+θ2x√

以上就是关于这个例子的一些候选函数。

另外,我们需要注意一下特征缩放。加入有一个假设函数为:

hθ(x)=θ0+θ1x+θ2x2+θ3x3=θ0+θ1(size)+θ2(size)2+θ3(size)3

他们的范围如下:

features range
x1=(size) 1?1,000
x2=(size)2 1?1,000,000
x3=(size)3 1?109

在进行feature scaling的时候一定要注意除以对应的正确的range。


5、Normal equation(矩阵方程法)

由于篇幅限制,而且normal equation内容较多,所以暂时留个位置在这里,或者会新开一篇。



上面就是多元变量线性回归的大概内容,希望能帮助到大家。

如有错误,期望您能纠正,留言或者是e-mail:[email protected]

——–转载请注明出处——–

时间: 2024-10-23 14:32:32

机器学习笔记02:多元线性回归、梯度下降和Normal equation的相关文章

猪猪机器学习笔记(六)梯度下降和拟牛顿

梯度下降和拟牛顿 作者:樱花猪   摘要:     本文为七月算法(julyedu.com)12月机器学习第六次次课在线笔记.本节课主要介绍了一种在机器学习需要经常使用到的计算方法——梯度下降法并在最后提出了另一种下降法的思路——拟牛顿法.梯度下降法是一个连接理论和计算机计算的桥梁,这种方法通过迭代来逐步完成对于目标函数的演化,将离散和连续有机的结合起来.实际上梯度下降法在许多有关偏微分方程算法中也有所用到,例如水平集.主动轮廓模型等.通过本次课程的学习,我们能够更加具体和感性的理解梯度下降,从

机器学习笔记:线性规划,梯度下降

主要内容来自stanford Andrew Ng视频课程的总结. 讲的非常好,还有相应的习题,课程能够在以下站点搜索到. https://www.coursera.org/ 机器学习的目的是在训练数据的基础上得出一个模型,该模型对于给定的输入x.给出对应的输出y. 用公式表示就是:y = h(x). 注意x表示一维向量,x={x1,x2,x3...}.这里的xi也就是特征(feature),h就是模型. 若输出y是连续值.则是回归预測问题.若y是离散值,则是分类问题.假设给定的训练数据是(输入-

机器学习笔记 1 LMS和梯度下降(批梯度下降) 20170617

# 概念 LMS(least mean square):(最小均方法)通过最小化均方误差来求最佳参数的方法. GD(gradient descent) : (梯度下降法)一种参数更新法则.可以作为LMS的参数更新方法之一. The normal equations : (正则方程式,将在下一篇随笔中介绍)一种参数更新法则.也可以作为LMS的参数更新方法之一. 三者的联系和区别:LMS是一种机器学习算法.但是最小化均方误差的方法不唯一,采用GD或者正则方程式都是方法之一. # 准备样本  必须要先

机器学习(一):梯度下降、神经网络、BP神经网络

这几天围绕论文A Neural Probability Language Model 看了一些周边资料,如神经网络.梯度下降算法,然后顺便又延伸温习了一下线性代数.概率论以及求导.总的来说,学到不少知识.下面是一些笔记概要. 一. 神经网络 神经网络我之前听过无数次,但是没有正儿八经研究过.形象一点来说,神经网络就是人们模仿生物神经元去搭建的一个系统.人们创建它也是为了能解决一些其他方法难以解决的问题. 对于单一的神经元而言,当生物刺激强度达到一定程度,其就会被激发,然后做出一系列的反应.模仿这

机器学习笔记01:线性回归(Linear Regression)和梯度下降(Gradient Decent)

最近在Coursera上看吴大神的Machine Learning,感觉讲的真的很棒.所以觉得应该要好好做做笔记,一方面是加强自己对ML中一些方法的掌握程度和理解,另一方面也能方便自己或者同样爱好ML的同学. 线性回归(Linear Regression) 线性回归(Linear Regression)应该是机器学习中最基本的东西了.所谓回归,想必大家在高中时期的课程里面就接触过,给定一系列离散的点(x0,y0),求一条直线 f(x)=ax+b 以使得最小.在machine learning 中

【吴恩达机器学习】学习笔记——2.7第一个学习算法=线性回归+梯度下降

梯度下降算法: 线性回归模型: 线性假设: 平方差成本函数: 将各个公式代入,对θ0.θ1分别求偏导得: 再将偏导数代入梯度下降算法,就可以实现寻找局部最优解的过程了. 线性回归的成本函数总是一个凸函数,故梯度下降算法执行后只有一个最小值. "批"梯度下降:每一个步骤都使用所有的训练样本 原文地址:https://www.cnblogs.com/JJJanepp/p/8454834.html

机器学习算法 --- 逻辑回归及梯度下降

一.逻辑回归简介 logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域. logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处. 其公式如下: 其图像如下: 我们通过观察上面的图像可以发现,逻辑回归的值域为(0, 1),当输入为0时,其输出为0.5:当输入小于0,并且越来越小时,其输出越来越接近于0:相反的,当其输入大于0,并且越来越大时,其输出越来

机器学习最常用优化之一——梯度下降优化算法综述

转自:http://www.dataguru.cn/article-10174-1.html 梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法.几乎当前每一个先进的(state-of-the-art)机器学习库或者深度学习库都会包括梯度下降算法的不同变种实现.但是,它们就像一个黑盒优化器,很难得到它们优缺点的实际解释.这篇文章旨在提供梯度下降算法中的不同变种的介绍,帮助使用者根据具体需要进行使用. 这篇文章首先介绍梯度下降算法的三种框架,然后介绍它们所存在的

【机器学习实战】多元线性回归模型

在许多实际问题中,影响因变量Y的自变量不止一个,通常设为p个,此时无法借助于图形的帮助来确定模型,这里则使用一种最为简单且普遍的模型--多元线性模型来进行回归计算. 1.数学模型 当影响Y值的因素不唯一时,我们可以使用多元线性回归模型: 当未知参数有两个时,我们可以画出此方程的图形表示(此时是一个平面,如图).如果未知数大于2时,则很难把此超平面给画出来. 如上图,为了求得等参数的值,我们由各个样本点(图中为红点)做一条平行于Y轴的直线,此直线交平面方程于一点,然后我们求得此线段的程度,并进行平