Machine_learning_cs229线性回归 Linear regression(1)

本系列内容均来自Standford公开课machine learning中Andrew老师的讲解,附加自己的一些编程实现和学习笔记。

第一章 Linear regression

1.线性回归

线性回归是一种监督学习的方法。

线性回归的主要想法是给出一系列数据,假设数据的拟合线性表达式为:

技术分享

如何求得参数θ成为这个方法唯一的问题,为此我们需要定义损失函数:

技术分享,其中m表示样本个数,技术分享表示第i组样本,所以J表示总的m个样本的损失函数。

这个损失函数的表达式我们一定很熟悉,方差?最小二乘法?没错,这就是我们最原始的最小二乘模型。我们的任务就是让损失函数J尽可能的小。

P.S:至于为什么要选择J作为我们的损失函数,从表面上看很自然,当然选择这个函数也有概率解释,概率解释会放在之后的文章中讨论。

 

2.LMS最小均方算法

我们现在要做的任务就是选择参数θ,使得损失函数J尽可能小,很自然我们会想到梯度下降的方法。

梯度下降的思想最形象的解释就是:你站在山顶,环顾四周,寻找一个下山最快的方向走一小步,然后再次环顾四周寻找一个下山最快的方向走一小步,在多次迭代之后就会走到最低点。

放在这里也就要求我们先选择一个初始的技术分享然后利用梯度下降进行迭代技术分享,其中α表示学习的步长。

对于单个样本来说最后迭代公式为技术分享,这就是我们熟知的Widrow-Hoff规则。

我们可以来分析一下这个迭代公式,技术分享的更新取决于真实值与拟合值的误差技术分享,从直观上我们就很能理解梯度下降和Widrow-Hoff规则了。

有了这个规则,我们就可以设计相应的算法,使得J取到最小值了。

方法一:批量梯度下降

意思很简单,每次迭代都迭代所有的m个已知样本,直到收敛。

Repeat until convergence{

  技术分享   (for every j)

}

方法二:随机梯度下降

批量梯度下降其实存在一个比较大的问题,当数据组数m特别大的时候,我们迭代一次就需要很长的时间。使用随机梯度下降虽然有可能走一些“弯路”,但因为每次迭代只使用一组数据所以相比较而言,反而能更快的收敛。

Loop{

  for i=1 to m{

           技术分享
           if  convergence;

     }

}

其实在梯度下降算法中,还有一个问题,学习率如何控制,AndrewNg并没有太多的介绍,我可能会做一些实验来进行计算,如何控制学习率α才能保证收敛。

3.如何直接求出θ

其实我们是能利用矩阵运算直接求出参数θ,不过需要一些矩阵计算,可能会重新开一篇文章来计算这个θ。

这里就直接给出答案技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。