一,梯度下降法Gradient Decent
当我们以线性回归的模型来拟合我们的数据集时,我们如何来确定假设函数的参数值呢?
首先我们以两个参数为例,即Hθ(x) = θ0 + θ1X,也就是一个一次函数,而代价函数,我们为了尽量拟合数据集,也就是选择合适的θ0(截距), θ1(斜率)使代价函数J(θ0,θ1)最小,
- 那我们该如何计算θ0, θ1?
假设θ0=0,代价函数J就转变为关于θ1的二次函数,因为开平方,所以二次项的系数一定是正数(高中数学),所以代价函数J一定有最小值
此时我们可以画出J(θ1)的一种可能的二次函数分布图
由图可知,当θ1=1时,J最小
- 那我们如何得到使J最小的θ1值呢?
我们可以任取曲线上的一个θ,让它往最小值的方向移动,那我们怎么知道该往左移还是右移?
我们观察曲线发现,最低点(最小值)的斜率为0,最低点的左侧斜率小于0,右侧大于0,只需让θ减去该点的斜率就可以让它往最低点移动,当斜率为0时它就停在了最低点,也就是收敛于1
- 如果θ0一开始不设为0呢?
那我们可以画出关于代价函数J(θ1,θ2)的三维图
我们同样选取任意一点(θ1,θ2),通过减去他们各自的在该点的斜率来到打最低点
数学上称这种求自求点斜率的方法为偏导,这种通过减去斜率的方法称为梯度下降法(Gradient Decent)
那我们如何确定向最低点移动的速度呢?
一方面是由该点的斜率来决定,另外由一个系数α学习速率决定,
1,α不能设太大,太大有时会越过最低点,不能使θj收敛于最低点使结果发散
2,α太小会使程序运行速度太慢
3,随着θ越来越接近最小值,偏导数越来越小,所以没有必要逐渐随着迭代次数的增加减小学习速率α
对每次的移动必须同时进行,并和成各个方向上的位移,即每一次减偏导必须对每个θj同时进行
两个参数的线性回归求完偏导数之后每次迭代的公式
多个参数的线性回归求完偏导数之后每次迭代的公式
梯度下降法会到达局部最低点(由起点决定,即θ1和θ2的初始值决定),不一定会到达全局最优点
二,梯度下降法的优化方法
1,特征缩放(Feature Scaling)
当不同的特征值大小范围不一致时,算法运行效率会很低,我们一般把它缩放到-1<=x<=1或,-0.5<=x<=0.5,通过(x-mean)/range公式,
2,学习速率α
如何确定学习速率并不是一件简单的事
一种方式是绘制一张横坐标是迭代次数,纵坐标是代价函数的函数图,看是否单调递减,如不是需要减小学习速率α
总的来说,学习速率太小,代价函数收敛太慢,程序云星很慢,学习太大,代价函数没有单调递减,甚至可能会发散,也就到不了最小值
3,特征和多项式回归(Features and Polynomial Regression)
当我们拿到数据集先可以进行预处理,使机器学习的结果更好
1)我们有时可以根据各个特征之间关系来合并特征,比如说房子的长度和宽度,我们可以让他们相乘合成一个新的特征面积
2) 我们之前线性回归的假设函数都是多元一次函数,如果我们的想要多元多次的假设函数呢?Hθ(x) = θ0 + θ1X2, 我们可以用新的特征来表示X'来表示X2,一样能转化为多元一次表示假设函数Hθ(x) = θ0 + θ1X',
不过需要注意的事,X的范围也随着新的特征放大了,要进行特征缩放
4,正规方程(Normal Equation)
还有一种在线性代数中叫做正规方程的数学方法求θ
梯度下降法和正规方程各有各的优点,以下是他们的区别,总的来说,
1,梯度下降法需要选择学习速率,正规方程不需要
2,梯度下降法需要迭代,正规方程不需要
3,梯度下降法时间复杂度是(KN2),正规方程时间复杂度是O(N3)
当特征少于10000时,使用正规方程,否则使用梯度下降法
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:机器学习公开课笔记第二周,线性回归的梯度下降法 - Python技术站