梯度下降线性回归模型和正规方程
线性回归模型
hθ(x)为线性回归模型,由两个值θ0和θ1进行控制 。
J(θ0,θ1)称为代价函数,表示实际训练值和回归模型拟合值的关系。可以知道代价函数对应的值越小,则拟合效果越好。
m:训练集
例:此处使用线性回归模型来拟合房间大小对应的价格高低,且假设影响因素为θ0和θ1。
![](https://i-blog.csdnimg.cn/blog_migrate/c207fb7f8bb18b065636119632d93fb8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8055b00428eee4fe6c1a329c52173c94.png)
图 1 图 2
左图体现了了代价函数的总体趋势(凹),可以发现存在代价最低的一个点,因此如何找到此点对应的θ1和θ1成为我们的主要问题。
右图通过给θ0和θ1分别赋值后的线性回归函数拟合效果,可以看出和实际数据集偏差比较大。如果找到代价函数最小值,那么拟合效果将最优。
梯度下降算法
- “:=” 意思是将右侧表达式的值赋值给左侧表达式,Truth assertion意为数学断言中两侧是否相等。
- 偏导数的具体作用是帮助找到最小值:导数实际上是曲线斜率,从图1中将θ0视为常数,θ1为自变量时,此时代价函数为二次抛物线(图4)。而要找到代价函数最低点,此时图3 中初始点的 θ1 减去导数项,意味着离最低点就更近(斜率正负均一样),且曲线越接近最低值,斜率越小,收敛速度将变慢。
- α:学习速率,即在进行梯度下降时,每一步的大小。
- 梯度下降应该是同步的,即应该算出temp0、temp1后再更新θ0和θ1,如果算出temp0后立马更新θ_0,则θ_1的更新将会出现问题(不同步)。
![](https://i-blog.csdnimg.cn/blog_migrate/101c66721879f49aeac168a33440e371.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ae2d93b10ab292649d20b44a34c21a4.png)
图4说明:在进行梯度下降时寻找最小值点时,偏导数(斜率)的正负、大小对寻找的影响。
图5说明:α过大和过小的情况下会出现寻找不到(发散),和速度太慢(收敛速度太慢,需要迭代的次数将增加)。
![](https://i-blog.csdnimg.cn/blog_migrate/f4f1f38fa840e7771686ebc6328f24d0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5d5a3baf0b1be4ed5b2e1819b7879aea.png)
图6 图7
图6:解释了当找到局部最小值时(偏导数为0),根据梯度下降算法,θ将不会再进行更新。
图7:由图易知,图像初始斜率大即偏导数值大,那么更新幅度就会大,当再更新时曲线斜率(偏导数)变小,那么更新幅度就会逐步变小。当我们接近局部最小 值时,梯度下降算法会自动采用更小的学习速率α,确保不会越过最小值点。
Batch梯度下降法(梯度下降的线性回归)
![](https://i-blog.csdnimg.cn/blog_migrate/dcc0022480437462935cbe8a9cd81dbe.png)
求偏导数
![](https://i-blog.csdnimg.cn/blog_migrate/0af04312496c12168011aa07aaeb3b60.png)
代入梯度下降算法
![](https://i-blog.csdnimg.cn/blog_migrate/3e4d517a7573d9d9d90a11350b50d71a.png)
梯度下降法寻找最小值的图示过程
![](https://i-blog.csdnimg.cn/blog_migrate/4c808a0f6f85a8c1687d625cd0c6d10f.png)
多元线性回归假设的形式
将线性代数应用到多元线性回归模型中
![](https://i-blog.csdnimg.cn/blog_migrate/d3ff529a26d6346b540fc6d1cc781d45.png)
此处假设影响房价的因素仅有4个,**x(i)**表示4个因素构成的向量,**x(i)j**表示向量中具体值。
![](https://i-blog.csdnimg.cn/blog_migrate/d1551af16a823caf8ea6fbcc4a581eeb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/303e9fed33d3c360980af4a3f1f1ff1e.png)
用θ向量表示从θ0,θ1,……,θn且θ为n+1维向量,X同理。X0默认为1。多元线性回归方程可表示为两个向量(θ和X)的乘积。
![](https://i-blog.csdnimg.cn/blog_migrate/fe984365a2cb95e8443e5bc9f8893911.png)
将代价函数带入到梯度下降算法后,梯度下降算法更新将应用到θ0,θ1,……,θn。
特征缩放和均值归一化
特征缩放(Feature Scaling)通常是在数据预处理阶段,将不同量纲或量程的数据转换到同一量纲下或某个特定区间内。这样做可以使得模型训练更快,更容易找到全局最优解。
![](https://img-blog.csdnimg.cn/cf4928437713413a94bf5f64614a7efc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/558322ee9d4fbd895fb7b94bff7c9689.png)
特征范围并不用完全在-1到1内和外,只要与这个范围足够接近,但是不要过大或过小。梯度下降法都会正常工作。
均值归一化(Normalization)通常是将特征的值缩放到一个固定的范围,如 [0, 1]。常用的归一化方法是 Min-Max Scaling,其计算公式为:
学习率α促进梯度下降
![](https://i-blog.csdnimg.cn/blog_migrate/3c66594ef7154426d6b90a49a0139514.png)
![](https://i-blog.csdnimg.cn/blog_migrate/81fad497a769fc518dfff3511dd8de59.png)
左图描述了求得最小代价函数随着迭代次数的变化。右图描述了不同的学习率α对寻找最小代价函数的影响。
即:如果α太小,收敛过慢;α过大,可能会发散。因此选择一个合适的α是至关重要的;你可以尝试不同数量级(0.0001->0.001->0.01 etc.)
正规方程求θ
当正规方程为J(θ) = aθ2+bθ +c时,通过求导可以快速得出θ在某处时,J(θ)的导数为0,此时θ为所求值。
一般地通过正规方程法求θ并不会像上述例子那样简单,所以通用解法如下:
此处Octave是一种编程工具,你可以在其中计算θ。
例如:
![](https://i-blog.csdnimg.cn/blog_migrate/b740ff06c25c23e37a2558c917c2561f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/33ec73af558aff713222e1dbc554a2d4.png)
正规方程法不需要特征缩放
梯度下降法和正规方程法的优劣
在训练集为m,特征量为n的情况下:
梯度下降法:
- 需要选择一个合适的α。
- 需要许多次迭代才能得出结果。
- 适合特征数量较多的情况(大约在n=106)
正规方程法:
- 不需要选择α。
- 不需要迭代。
- 需要去计算**(XTX)-1**。
- 如果特征数量较多,计算将会很慢。