请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于J_debug问题

请问一下我通过J_debug计算出来了theta,并且和通过J_math计算的theta值一样,但使用同样的数据集在sklearn中的SGDRegressor()中无法得到相同的theta值,这样的问题如何解决?尝试过修改epsilon或者max_iter,eta0这些参数,或者把J_debug中的参数和SGDRegressor()中的参数设置成完全一样,最后还是无法得到相同的theta值

正在回答

1回答

liuyubobobo 2020-03-23 13:39:40

抱歉,我没有理解你的问题。使用 sklearn 中的 SGDRegressor() 应该既不会使用 J_debug,也不会使用 J_math。


如果你的意思是,我们自己封装的随机梯度下降法,得到的结果和 sklearn 的随机梯度下降法,得到的结果不同,那是正常的。这和 J_debug 与 J_math 无关,而和随机梯度下降法的实现有关。因为 sklearn 中封装的算法内部,有非常多的优化,和我们自己写的是不一样的。在这个课程中,我们自己实现的算法,主要是帮助同学们理解算法的基本原理和适用场景,但依然是 toy 级别的。在真实场景具体使用上,还是要使用框架为我们提供的算法封装。


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕哥326495 #1
    那么老师,请问一下就是如果使用SGDRegressor() 的话,应该使用什么样的方式来判断得到了最优解呢?    目前我知道的就是假如损失函数是凸函数,只要是收敛,就一定能够得到最优解,如果不是这种情况,应该如何判断?
    回复 有任何疑惑可以回复我~ 2020-03-23 21:33:57
  • 提问者 慕哥326495 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-03-23 23:23:03
  • liuyubobobo 回复 提问者 慕哥326495 #3
    对于复杂的非凸函数,判断不出来。多设立几个随机的起始点,多转几次,不同参数多试试,取最好结果。
    回复 有任何疑惑可以回复我~ 2020-03-24 00:47:19
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号