机器学习公开课-笔记2-线性回归、梯度下降和正规方程组

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/finewind/article/details/73555735

回归分析: 是研究一个变量关于另一个(或一些)变量的具体依赖关系的计算方法和理论。
一些符号:

m: 训练数据的大小
x: 输入变量,是向量
y: 输出变量,是实数
(x,y): 一个训练实例
x(i),y(i) : 第i个训练集,i是上标而不是指数
假设训练集中的数据使用线性回归解决,则假设函数为:

hθ(x)=i=0nθixi=θTx(1)

这里x是向量,n是x的长度(输入变量个数)
从而,定义目标函数(即要优化的函数):
J(θ)=12i=1m(hθ(x(i))y(i))2(2)

m为样本个数,我们找出使这个函数最小的参数值,就的到了拟合训练的最佳参数。
使用梯度下降法来求参数,更新规则为:
θj:=θjαθjJ(θ)(3)

当只有一个训练实例时,上式变为:
θj:=θjα(hθ(x)y)xj(4)

这被称为最小二乘法(LMS, least mean squares),也被称为Widrow-Hoff学习规则。
考虑所有m个训练集,规则变为:
θj:=θjαi=0m(hθ(x(i))y(i))x(i)j(5)

运用这个规则直到收敛,就是批梯度下降算法(batch gradient descent)。其中,收敛的判断有两种,一是判断两次迭代后参数的变化,二是判断两次迭代后目标函数的变化,规则中的 α 是学习速率,这个需要在实践中进行调整,其值过小会导致迭代多次才能收敛,其值过大会导致越过最优点发生震荡现象。
梯度下降算法会导致局部极值点的产生,解决这个问题的方法是随机进行初始化,寻找多个最优点,然后在这些最优点中找最终结果。
对于公式5,当数据量较大时,每迭代一次就要遍历全部数据一次,这样算法运行速度会很慢,为解决这个问题,一般采用如下办法:

RepeatUntilConverge{Fori=1tom{θj:=θjα(hθ(x(i))y(i))x(i)j(foreveryj)}}

意为更新参数时,不必遍历整个数据集,只需要一个实例便足够了。该算法可以达到很高的效果,但是会导致遍历次数增多,不能精确收敛到最优值等问题。该方法被称为增量梯度下降(incremental gradient descent)或随机梯度下降(stochastic gradient descent)。

梯度下降算法是求目标函数最优值的一种解法。我们可以直接求出参数值而不用迭代方法,这种方法称为正规方程法。

猜你喜欢

转载自blog.csdn.net/finewind/article/details/73555735