原文:
www.kdnuggets.com/2016/05/implement-machine-learning-algorithms-scratch.html
从头实现算法有几个不同的原因可能会很有用:
-
它可以帮助我们理解算法的内部工作原理。
-
我们可以尝试更高效地实现一个算法。
-
我们可以为算法添加新特性或实验不同的核心概念变体。
-
我们可以绕过许可问题(例如,Linux vs. Unix)或平台限制。
-
我们想发明新算法或实现尚未实现/分享的算法。
-
我们对现有的 API 不满意,或者我们想将其更“自然”地集成到现有的软件库中。
让我们在上述六点的背景下进一步缩小“从头实现”这个短语的范围。当我们谈论“从头实现”时,我们需要缩小范围,使这个问题真正切实可行。让我们讨论一个具体的算法,简单的逻辑回归,以便用具体的例子来解决不同的点。我认为逻辑回归已经实现了不下于千次。
我们仍然希望从头实现逻辑回归的一个原因可能是我们觉得自己没有完全理解它的工作原理;我们读了一些论文,虽然理解了核心概念。通过编程语言进行原型设计(例如,Python、MATLAB、R 等),我们可以从论文中获取想法,并尝试逐步用代码表达它们。一个成熟的库,如 scikit-learn,可以帮助我们再次检查结果,看看我们的实现——我们对算法如何工作的理解——是否正确。在这里,我们并不真正关心效率;尽管我们花了很多时间实现算法,但如果我们想在研究实验室或公司中进行一些严肃的分析,我们可能还是会想使用成熟的库。成熟的库通常更值得信赖——它们经过了许多人使用的考验,可能已经遇到了一些边界情况,并确保没有奇怪的意外。此外,这些代码也更有可能随着时间的推移被高度优化以提高计算效率。在这里,从头实现的目的仅仅是为了自我评估。阅读一个概念是一回事,但将其付诸实践则是对理解的更高层次——能够向他人解释则是锦上添花。
另一个我们可能希望从头开始重新实现逻辑回归的原因是我们对其他实现的“特性”不满意。让我们天真地假设其他实现没有正则化参数,或者不支持多类设置(即通过一对多、一对一或 softmax)。或者如果计算(或预测)效率是一个问题,也许我们想使用另一种求解器(例如牛顿法与梯度下降法与随机梯度下降法等)来实现它。但是,关于计算效率的改进不一定需要通过算法的修改来实现,我们可以使用更底层的编程语言,例如使用 Scala 代替 Python,或使用 Fortran 代替 Scala……这可能涉及到汇编语言或机器代码,甚至设计一个优化用于运行这种分析的芯片。然而,如果你是一个机器学习(或“数据科学”)从业者或研究人员,这可能是你应该委托给软件工程团队的事情。
回到主要问题:不同的人因各种原因从头实现算法。就个人而言,当我从头实现算法时,是因为学习的体验。
简介: Sebastian Raschka 是一位“数据科学家”和机器学习爱好者,对 Python 和开源有极大热情。《Python 机器学习》的作者。密歇根州立大学。
原文。经许可转载。
相关:
-
深度学习何时优于支持向量机或随机森林?
-
分类发展作为学习机器
-
十大数据挖掘算法解析
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织 IT