关于J_debug问题

来源:6-8 如何确定梯度计算的准确性?调试梯度下降法

慕哥326495

2020-03-23

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

写回答

1回答

liuyubobobo

2020-03-23

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


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


继续加油!:)

0
3
liuyubobobo
回复
慕哥326495
对于复杂的非凸函数,判断不出来。多设立几个随机的起始点,多转几次,不同参数多试试,取最好结果。
2020-03-24
共3条回复

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

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

5893 学习 · 2455 问题

查看课程