采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
阿斯蒂芬 big_reg1._theta为通过正规方程解求得的参数,与true_theta差的很多。。big_reg2的参数也没有完全拟合
可以参考这里:https://coding.imooc.com/learn/questiondetail/69537.html
因为是高位数据,所以可能遭遇位数灾难:
1)尝试正规化数据;
2)尝试减小eta;
3)尝试使用随机梯度下降法
另外,再具体实现上,课程代码的这句话:theta = theta - eta * gradient
每一次,都把gradient进行一下归一化,效果会更好。(虽然数据整体的正规化就能很好解决这个问题)。这样,每次theta的改变,不再受gradient大小的影响,gradient只提供方向,更容易靠eta控制搜索的步长。印象里我有几个问答在说这个问题,但是搜索了一圈没有找到><
继续加油!:)
老师给力!
今天我也遇到相同的问题,但是@慕桂英雄 同学貌似问错了问题,求出参数过大的恰恰不是梯度下降法,而是正规方程解法。
老师不是说正规方程解可以求出正确解,而不需要进行数据归一化处理吗?
怎么正规方程解解出的解反而更让人觉得是错误的呢?
我转念再看,是不是因为m=1000,n=5000,待求参数的个数已经大于数据行数,从线性代数的角度来看,如果这是一个m行,n个参数的非齐次方程,m<n, 这是个没有唯一解的方程。
瞎猜的,不知道有没有关系,麻烦bobo老师再次答疑!
赞!我当时回答这个问题的时候,没有注意到他用的数据维度远大于样本数。你的思考是对的。大概率的,正规解的结果并非“错误”,而是由于约束太少,使得满足约束的解的可能性太多。正规解方程只能按照最小二成的方式找到其中一个,这一个解不一定是你想要的。这本身也是维数灾难的体现:)
(1)理解正规解方法是如何选出的解 这重要吗 (2)对于样本数m<参数个数n,容易发生过拟合。sklearn中正规解是不是考虑过这样的情况呢(他认为梯度下降法所求的情况可能过拟合了)
终于在网上找到为什么正规方程解求得的解过大的原因了。
在特征数目n大于样本数目m的情况下,求得的解不是过大,实际上是无法求解。
在正规方程解的公式中,
当n>m的时候,是不可逆的奇异矩阵,无法求逆,因此无法通过正规方程解的方法求解。
造成不可逆的另一个通常的原因是有冗余特征: 有两个特征之间存在着一定联系,比如一个特殊X1单位是米,另一个特征X2单位是千米,但表示的是同一个特征,这时候这两个特征之间存在着关系X1=X2。 根据线性代数的知识, 线性相关的矩阵不可逆的。
大赞!感谢分享:)
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.5k 17
2.9k 15
1.6k 15
1.4k 14