[Stay Sharp]线性回归入门

2018-12-18  本文已影响2人  三千雨点

线性模型

以经典的房屋价格数据举例:

居住面积 卧室数量 价格
2104 3 400
1600 3 330
1416 2 232
··· ··· ···

假定价格是居住面积和卧室数量呈现线性关系,满足

h _ { \theta } ( x ) = \theta _ { 0 } + \theta _ { 1 } x _ { 1 } + \theta _ { 2 } x _ { 2 }
其中x _ { 1 }x _ { 2 }分别表示特征-居住面积和特征-卧室数量的值,而h _ { \theta } ( x )表示房屋的价格。
假定x _ { 0 } = 1,那么上面的公式可以表示为

h ( x ) = \sum _ { i = 0 } ^ { 2 } \theta _ { i } x _ { i } = \theta ^ { T } x
为了让模型更加准确,我们通常要让h ( x )计算出的价格更加接近实际的价格yy表示原始数据中真实的价格)。据此,我们引入了均方误差形式的代价函数:

J ( \theta ) = \frac { 1 } { 2 } \sum _ { i = 1 } ^ { m } \left( h _ { \theta } \left( x ^ { ( i ) } \right) - y ^ { ( i ) } \right) ^ { 2 }
其中m表示样本数量,h _ { \theta } \left( x ^ { ( i ) } \right)表示样本i的预测价格,y ^ { ( i )}表示样本i的真实价格。

最小均方算法

我们的目的是找到一个{ \theta }J ( \theta )达到最小值;常用的做法是首先初始化{ \theta },然后不断地改变{ \theta }直到J ( \theta )达到最小值。这种思路也就对应着我们常用的梯度下降算法:首先初始化一个{ \theta },然后使用下面公式不断更新{ \theta }

\theta _ { j } : = \theta _ { j } - \alpha \frac { \partial } { \partial \theta _ { j } } J ( \theta )
其中\alpha被称为学习率,,注意:这个公式针对0,1....n中的j是同步更新的。结合代价函数对公式进行简化:

\begin{aligned} \frac { \partial } { \partial \theta _ { j } } J ( \theta ) & = \frac { \partial } { \partial \theta _ { j } } \frac { 1 } { 2 } \left( h _ { \theta } ( x ) - y \right) ^ { 2 } \\ & = 2 \cdot \frac { 1 } { 2 } \left( h _ { \theta } ( x ) - y \right) \cdot \frac { \partial } { \partial \theta _ { j } } \left( h _ { \theta } ( x ) - y \right) \\ & = \left( h _ { \theta } ( x ) - y \right) \cdot \frac { \partial } { \partial \theta _ { j } } \left( \sum _ { i = 0 } ^ { n } \theta _ { i } x _ { i } - y \right) \\ & = \left( h _ { \theta } ( x ) - y \right) x _ { j } \end{aligned}
所以梯度下降公式就变成(针对单个样例):

\theta _ { j } : = \theta _ { j } + \alpha \left( y ^ { ( i ) } - h _ { \theta } \left( x ^ { ( i ) } \right) \right) x _ { j } ^ { ( i ) }
这个公式就被称为最小均方算法(LMS),也被称为Widrow-Hoff学习算法

批量梯度下降算法和随机梯度下降算法

以上使用单个样本i进行公式推导,在实际过程中对多样本对情况,有两种方法:

批量梯度下降算法

Loop {

\theta _ { j } : = \theta _ { j } + \alpha \sum _ { i = 1 } ^ { m } \left( y ^ { ( i ) } - h _ { \theta } \left( x ^ { ( i ) } \right) \right) x _ { j } ^ { ( i ) } \quad \text { (针对每一个 } j )
}

批量梯度下降算法是在每一次梯度下降过程中,将所有样本加入计算。持续执行该算法,直到收敛。

随机梯度下降算法

Loop {

   for i=1 to m, {
\theta _ { j } : = \theta _ { j } + \alpha \left( y ^ { ( i ) } - h _ { \theta } \left( x ^ { ( i ) } \right) \right) x _ { j } ^ { ( i ) } \quad \text { (针对每一个} j)
   }

}
每一次循环中,我们都遍历每一个样本。持续执行循环,直到收敛。

参考

吴恩达老师斯坦福课程

上一篇 下一篇

猜你喜欢

热点阅读