梯度下降求得的参数过大

来源:6-5 梯度下降法的向量化和数据标准化

慕桂英雄

2019-04-10

阿斯蒂芬图片描述
big_reg1._theta为通过正规方程解求得的参数,与true_theta差的很多。。big_reg2的参数也没有完全拟合

写回答

3回答

liuyubobobo

2019-04-11

可以参考这里:https://coding.imooc.com/learn/questiondetail/69537.html


因为是高位数据,所以可能遭遇位数灾难:

1)尝试正规化数据;

2)尝试减小eta;

3)尝试使用随机梯度下降法


另外,再具体实现上,课程代码的这句话:theta = theta - eta * gradient

每一次,都把gradient进行一下归一化,效果会更好。(虽然数据整体的正规化就能很好解决这个问题)。这样,每次theta的改变,不再受gradient大小的影响,gradient只提供方向,更容易靠eta控制搜索的步长。印象里我有几个问答在说这个问题,但是搜索了一圈没有找到><


继续加油!:)

2
1
慕桂英雄
老师给力!
2019-04-15
共1条回复

能豆子

2019-09-23

今天我也遇到相同的问题,但是@慕桂英雄 同学貌似问错了问题,求出参数过大的恰恰不是梯度下降法,而是正规方程解法。

老师不是说正规方程解可以求出正确解,而不需要进行数据归一化处理吗?

怎么正规方程解解出的解反而更让人觉得是错误的呢?


我转念再看,是不是因为m=1000,n=5000,待求参数的个数已经大于数据行数,从线性代数的角度来看,如果这是一个m行,n个参数的非齐次方程,m<n, 这是个没有唯一解的方程。

瞎猜的,不知道有没有关系,麻烦bobo老师再次答疑!

1
2
菲菲菲特
回复
liuyubobobo
(1)理解正规解方法是如何选出的解 这重要吗 (2)对于样本数m<参数个数n,容易发生过拟合。sklearn中正规解是不是考虑过这样的情况呢(他认为梯度下降法所求的情况可能过拟合了)
2019-11-15
共2条回复

能豆子

2019-09-27

终于在网上找到为什么正规方程解求得的解过大的原因了。


在特征数目n大于样本数目m的情况下,求得的解不是过大,实际上是无法求解。

在正规方程解的公式中,

//img.mukewang.com/szimg/5d8d4edf0925f57201640049.jpg

当n>m的时候,//img.mukewang.com/szimg/5d8d4f5a095b861a00470026.jpg是不可逆的奇异矩阵,无法求逆,因此无法通过正规方程解的方法求解。


造成不可逆的另一个通常的原因是有冗余特征: 有两个特征之间存在着一定联系,比如一个特殊X1单位是米,另一个特征X2单位是千米,但表示的是同一个特征,这时候这两个特征之间存在着关系X1=X2。 根据线性代数的知识, 线性相关的矩阵不可逆的。


0
1
liuyubobobo
大赞!感谢分享:)
2019-09-27
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程