请稍等 ...
×

采纳答案成功!

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

学会底层实现重要吗?

波波老师,我想问一下您,需不需要掌握各个算法的底层实现,还是只需要掌握sklearn就可以了?您之前夜提过,我们自己的代码没有sklearn中代码运行速度快,这是不是意味着不需要掌握底层实现呢?

正在回答

1回答

根据你的需要,来决定你掌握的深度。我个人认为,我这个课程中介绍的内容,都需要掌握。真正的编程,可以酌情,但是原理需要掌握。


比如对于线性回归,如果你只知道sklearn中有LinearRegressor这样一个类,调用fit以后就可以predict了。我认为是不够的;


你至少还需要知道线性回归背后是对训练数据拟合了一条直线,具体是怎么拟合的,应该能推导出这个公式。

在具体拟合的过程中,你应该知道线性回归有正规方程和梯度下降法两种解法,因为在具体sklearn的使用上,有些时候需要对使用哪种方法做出取舍,你应该知道二者的优缺点;

对于梯度下降法,你应该知道其中涉及到的一些参数的意义,比如学习率和迭代次数。因为梯度下降法是一个通用方法,不仅仅可以用在线性回归中,以后你会看到很多算法寻找最优解,本质都是梯度下降法(或者梯度下降法的拓展),这些参数的意义和用法,是一脉相承的。


这些就是我说的原理。


但是,如果谈及具体编程,你是不是一定要实现一个属于自己线性回归算法?如果你认为没必要,那么我觉得是ok的。因为放到实现层面,还可以无限深入下去。

比如正规方程求解,涉及到矩阵的乘法,那么矩阵的乘法怎么实现?还有很多数值分析的方法,甚至现在还有论文在讨论这件事情。别说矩阵乘法了,整数乘法论文都有:)

这些已经脱离机器学习的范畴了。


通常机器学习岗位面试,不太会让你手写底层机器学习算法的代码,主要是阐述原理为主。手写代码,白板编程,主要还是在传统算法领域。所以,对这些算法的底层实现如果不感兴趣,可以忽略的。


在这个课程中,一些算法我从底层实现,目的也是能让同学们更深入的理解原理。


继续加油!:)

2 回复 有任何疑惑可以回复我~
  • 提问者 慕设计8031987 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-06-23 08:39:29
  • 提问者 慕设计8031987 #2
    波波老师还有个问题,您在这门课最后的时候提到了可以看看kaggle竞赛,我想问一下,很多kaggle竞赛做的模型,是不是也是从底层实现的?还是直接调用包中各种机器学习算法?想要的到一个好的模型,是不是和数据feature选择关系也很大?
    回复 有任何疑惑可以回复我~ 2019-06-23 08:42:31
  • 请问直径调用模型不自己改写算法的话,在kaggle里是什么水平?
    回复 有任何疑惑可以回复我~ 2019-06-23 12:09:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信