出处:csdn 从零开始实现机器学习算法似乎是开发者理解机器学习的一个出色方式。或许真的是这样,但这种做法也有一些缺点。 在这篇文章中,你会发现一些很好的资源,可以用来从零开始实现机器学习算法。你也会发现一些看似完美的方法的局限性。你已经从零开始实现机器学习算法并努力学习留下的每一条评论了么?我很乐意听到关于你的经验。 从零开始实现机器学习算法! 从零开始实现机器学习算法的好处我推广了从零开始实现机器学习算法的观念。 我认为你可以学到很多关于算法是如何工作的。我也认为,作为一名开发者,它提供了一个学习用于机器学习的数学符号、描述以及直觉的桥梁。 在“从零开始实现机器学习算法的好处”这篇文章里,我已经讨论了从零实现机器学习算法的好处。 在那篇文章,我列出的好处如下:
在这篇文章中,我对如何利用现有的教程和书籍来缩短这个学习过程表达了一些个人看法。有一些用于初学的丰富资源,但也要堤防一些绊脚石。 下一节,我指出了三本书,你可以照着书籍从零开始实现机器学习算法。 在过去的几年里,我已经在机器学习入门中帮助了许多程序员。根据我的经验,我列出了五项曾困扰过程序员的最常见的障碍,以及你可以用来克服它们的技巧。 最后,你会发现3个快速技巧,用以从代码教程中获得更丰富的知识,并从一个复制粘贴的程序员(如果你碰巧是其中一个)到一个真正深入机器学习算法的学者。 用于实现算法的优秀书籍我从零实现过许多算法,这些算法直接来自研究论文。这个过程可能非常困难。 跟着别人的教程来做是一个非常温和的开始。有很多优秀的资源,可以让你用来从零开始实现机器学习算法。也许最具权威性的是能指导你完成整个教程的书籍。 从啃书本开始学习有很多好处。例如:
那么,一步一步引导你完成机器学习算法实现的出色书籍有: Data Science from Scratch: First Principles with Python by Joel Grus这本书的确是从零开始,贯穿可视化操作、统计、概率、数据处理,然后是大约12个不同的机器学习算法。 这本书是我今年最喜欢的机器学习初学者书籍之一。 Machine Learning: An Algorithmic Perspective by Stephen Marsland这本书是我期待已久的这本流行书籍的第二版。它涵盖了大量的不同种类的机器学习算法实现。 我喜欢它既给出了数学描述和伪代码,又包含了能执行的源代码。 Machine Learning in Action by Peter Harrington该书贯穿了10个最受欢迎的机器学习算法,提供了案例研究问题并用Python代码实例来解决。 我喜欢它用符号和箭头把代码和描述紧密联系在一起的形式。 我是否有漏掉一本从零开始实现机器学习算法的编程教程书籍呢? 如果有,请在评论中指出! 从零实现机器学习算法的5个障碍(以及如何克服它们)根据教程从零开始实现机器学习算法是很有趣的。但也有可能会成为绊脚石,而且如果你不小心,他们可能会绊倒你并抹杀你的学习动机。 在这一节中,我想指出我所看到的五个常见的绊脚石,以及如何与它们共存,而不是让它们阻碍你。我的目的是让你完全摆脱它并且破浪前行(或是转移到另一个教程)。 用来避免下面障碍的一些好的常规建议是在你深入一个教程之前,仔细检查书籍的评论(或博客帖子的评论)。你要确保代码是能够工作的并且保证你不是在浪费时间。 另一个常规策略是,无论深入的是什么,找出不工作的那部分,并自己去重新实现他们。这是一个强行理解的出色解决方法,但它可能不适合初学者,并且你可能需要一个很好的技术参考资料放在手边。 无论如何,让我们从零开始机器学习教程,深入研究这5个常见的障碍: 1)代码不能正常工作最糟糕并且最常见的障碍就是实例当中的代码不能正常工作。 事实上,如果你花一些时间浏览亚马逊网站的一些书籍评论或博文评论,很显然,这个问题比你想象的更为普遍。 这是怎么发生的呢?有几个原因可能会给你提供一些线索,可以应用到你自己的修改中并继续使用:
如果它是一本书、GitHub库、代码下载或者类似的,如果代码不工作,一个好的常规策略是寻找相关的勘误表。有时这些问题已经在书上或作者的网站上修正了。一些简单的谷歌搜索就能找到它们。 2) 代码不规范描述当从零开始实现算法时,我认为第二个糟糕的绊脚石是提供的代码描述很糟糕。 对于初学者来说,这类问题特别不好,因为你正在努力维持积极性,而实际上你是从练习中学习一些东西。如果代码和文本不一致,所有的这些都会在烟雾中渐渐消失。 我(或许比较温和)把他们称为“糟糕的描述”,因为可能有很多的症状和原因。例如:
一个好的常规方法是在其它的资源里寻找算法的描述,并尝试将它们映射到你所使用的代码中。从本质上讲,是尝试建立你自己的代码描述。 这对初学者来说可能不是一个好的选择,你可能需要转到另一个资源上。 3)代码不符合语言习惯我们程序员可以对我们语言的 “正确”使用咬文嚼字(如Python代码不是Pythonic)。这其实是一件好事,它显示了对细节和最佳实践的充分关注。 当实例代码不符合语言编写习惯时,它可能会让人排斥。有时它会使代码零散以至于难以理解。 这种情况有许多原因,例如:
如果你惯用的代码对你非常重要,这些障碍可能会是一个机会。你可以把接口代码从“Java-Python”混合体(或别的什么)化为一个纯Python的实现。 这么做之后,你将得到一个更深层次的算法理解以及更多的代码所属权。 4)代码和数学无关一个很好的代码示例或教程将提供一个从数学描述到代码的桥梁。 这很重要,因为它允许你跨越代码和数学,并开始为符号和简明的数学描述形成一个直觉。 问题是,有时候这个桥梁可能会被彻底破坏或是丢失。
一个初学者可能会坚持代码而忽略数学,建立信心和动力。之后,它将为一个高质量的参考文本以及关联代码和数学付出代价。 你想要擅长于关联代数和标准代码,并为有关过程建立一个直觉。这是一个应用技巧。需要你投入工作与实践。 5)不完整的代码列表我们在2)中看到,你可以有不带任何描述和长列表的代码。然而,当你没有大量代码的时候,这个问题会逆转。这也就是代码列表不完整时的情况。 事实上,我是一个完整代码列表的忠实信徒。我认为代码列表应该给你所需要的,给你一个“完整”的代码和工作实现,即使它是最简单的情况。 你可以建立一个简单的实例,但你不能运行一个不完整的例子。你必须把它放在工作中并把所有的都联系在一起。 这个障碍可能成为事实的一些原因是:
在某些情况下,把代码聚在一起,这对你可能会是一个有趣的挑战。这同样不适合初学者,但是一旦你有一些算法之后,这也许会是一个有趣的锻炼。 3个诀窍让你从算法实现中获得更多知识你可以实现一个合理的算法。一旦你这样做过,那么你可以做得更多,并在你知道它之前,你已经建立了你自己非常理解的小算法库。 在这一节中,我想给你3个你可以使用的快速技巧,可以让你从实现机器学习算法过程中获得最多的经验。
我认为这些技巧与教程和代码实例相比,会让你走的更远。 特别是最后一点,会给你在算法行为上更深层次的见解,很少有从业人员花时间去学习它。 你的行动步骤这是一篇很长的文章,现在,你已经学会了如何从零开始实现机器学习算法。 重要的是,你已经了解了最常见的障碍、一些框架是如何形成的以及一些你可以运用的战术,你可以把它们转化为机遇。 你的下一步很明显:从零开始实现算法。 原文链接:Understand Machine Learning Algorithms By Implementing Them From Scratch (and tactics to get around bad code)(译者/刘帝伟 审核/赵屹华、朱正贵、李子健 责编/周建丁) |
|