回归问题之线性回归II

来源:互联网 发布:淘宝网小花仙日本食玩 编辑:程序博客网 时间:2024/04/26 12:44
1、线性回归(linear regression)

b、多元线性回归 multivariate linear regression:

形式如下:

graphic
graphic
graphic
因此:有
graphic                        graphic                  graphic
参数有:graphic
那么,cost function(代价函数)为:

graphic
备注:
n:           number of features (特征的总数)
m:          number of training examples (训练集数据的例数)
graphic:     ith training example (第i个训练数据)
graphic:     feature j in ith training exmaple(第i个训练数据中的第j个特征)
要使得代价函数的计算结果最小,依然可以用之前提及的梯度下降算法求解参数:
Gradient descent:
repeat{    
graphic 
}(simultaneously update for every j = 0, ... , n)
也就是
repeat{ 
     graphic
}
微分项展开如下:


graphic
graphic
...

graphic
此时,梯度下降算法会稍微复杂一点,不过使用特征缩放的方法——(确保不同特征的取值都处在一个相近的范围),可以使得梯度下降法更快收敛: 


由于量冈的影响,特征可能朝着某一边倾斜,例如图1,此时梯度下降明显会比图2收敛慢,而去除量冈,使得特征值都范围都在一个相近的范围,例如[-1,1],[0,1]等等,当然该范围不应过小或者过大。因此,可以使用均值归一化来实现特征缩放:
(x - average)/(max - min)
接下来,看看学习速率graphic,如何确定算法是否正常工作以及如何选择学习速率,用J值和迭代步数作图:

如果梯度下降算法正常工作,那么代价函数J(θ)的值会随着迭代步数的增大而变小(如图3所示),而当曲线慢慢趋于平缓的直线,则说明收敛!(因此可以用于判断算法是否正常工作以及迭代是否收敛

如果如图4所示,则说明梯度下降算法没有正常工作,此时应该选择较小的学习速率。(没有正常工作如果不是代码问题,那么就可能是选择的学习速率太大,跨步太大而无法向中间的较小的J值靠拢,参考图1和图2理解)
此外,还有可能出现图5的情况,也是没有正常工作:

图5也是说明学习速率过大以至于总是会越过最小值,该情况也应该选择较小的学习速率。

图6说明了学习速率过小的话,收敛也会很慢,此时应该选择较大的学习速率。

除了使用梯度下降算法,还可以使用正规方程方法解决问题(一次性求解θ 的最优值):
m examples:(graphic),(graphic),... ,(graphic);n features
那么
  (m * (n+1)维矩阵)
   (n + 1 维向量)
     (称为:设计矩阵)

    (m 维向量)

    (n + 1 维向量)
则有:
——(X的转置乘以X)的逆 乘以 X的转置再乘以y即可得参数的最优解。
用octave软件实现:graphic
使用梯度下降算法和正规方程方法的优缺比较:


假设有m个训练和n个特征
梯度下降
正规方程
需要选择学习速率
不需选择学习速率
归一化(很重要)
不需归一化
需要迭代
不用迭代
n很大时,算法依然可以很好地工作
需要计算X的转置乘以X后的逆,当n很大时(例如n=10000),计算很慢



0 0
原创粉丝点击