学会底层实现重要吗?

来源:6-4 实现线性回归中的梯度下降法

慕设计8031987

2019-06-23

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

写回答

1回答

liuyubobobo

2019-06-23

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


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


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

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

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


这些就是我说的原理。


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

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

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


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


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


继续加油!:)

2
6
慕设计8031987
回复
liuyubobobo
谢谢波波老师
2019-06-24
共6条回复

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

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

5839 学习 · 2437 问题

查看课程