如何学习一个机器学习算法

关于如何学习机器学习算法的问题,在邮件列表中已经出现过几次。

在这篇文章中,我将与您分享我多年来一直使用的策略,即以循序渐进的方式学习和构建算法的结构化描述,以便我可以反复添加、完善和参考。我甚至用它写了一本书。

这只是我个人使用的一种策略,我对其获得的积极反馈感到非常惊讶。

使用我的新书《掌握机器学习算法》来启动您的项目,其中包含分步教程和所有示例的Excel电子表格文件。

让我们开始吧。

算法描述是残缺的

学习机器学习算法可能会让人不知所措。有如此多的论文、书籍和网站以数学和文本形式描述算法的工作原理。如果您真的幸运,可能会找到算法的伪代码描述。

Implement a Machine Leaning Algorithm

实现机器学习算法
图片来自 Nic’s events,部分权利保留

如果您真的非常幸运,可能会找到一些针对不同情况配置该方法的建议。这些描述很少见,通常深埋在原始出版物或原始作者的技术笔记中。

当您想从研究论文中实现一种方法时,很快就会发现一个事实:算法几乎从未被详细描述,以至于您无法重现它们。原因各不相同,从论文中省略的微观决策,到文本中模糊概括的整个程序,再到使用不一致的符号。

获取您的免费算法思维导图

Machine Learning Algorithms Mind Map

方便的机器学习算法思维导图样本。

我创建了一份方便的思维导图,其中包含60多种按类型组织的算法。

下载、打印并使用它。


还可以独家访问机器学习算法电子邮件迷你课程。

 

 

整合起来

要理解一个算法,您必须从不同的描述中自行整合理解。这是我发现唯一成功的方法。

不同的描述意味着诸如主要来源中方法的原始描述以及评论论文和书籍中对原始描述的权威性二次解释等资源。

通常会随主要来源发布方法的原型实现,阅读这些代码(通常是 C、FORTRAN、R 或 Matlab)对于您重现算法所需的细节非常有启发性。

算法描述

算法是研究的孤岛,实际上很难确定其规范定义。例如,它是主要来源中描述的版本,还是包含所有“最佳实践”修复和增强的版本。

一个解决方案是从多个角度考虑给定的算法,每个角度都可以服务于不同的目的。例如,算法的抽象信息处理描述可以通过各种不同的特定计算实现来体现。

我喜欢这种方法,因为它既支持在描述的每一步中将算法从许多可能的案例中聚焦到特定案例的需求,同时也为描述变体留下了选择。

根据您的需求,可以使用不同详细程度的多种描述。我喜欢使用的一些描述包括:算法的灵感、策略的隐喻或类比、信息处理目标、伪代码和代码。

算法规范

当我开始自己的研究项目时,我以为解决这个问题的答案是阅读所有关于算法的资料,并在代码中创建最终实现。这也许是个好主意,但代码只是交流算法的一种方式,而且它具有局限性。

算法描述不仅仅是计算。算法周围的元信息对于某些用例来说是无价的。

例如,算法的使用启发式方法嵌入在论文中。将使用启发式方法集中汇总在一个地方,可能意味着快速获得足够好的结果与对算法进行数天或数周的敏感性分析之间的区别。

其他例子包括用于测试算法的标准实验数据集、算法适用于的问题的一般类别以及为算法识别和描述的已知局限性。

设计算法描述模板

算法描述模板为您提供了一种结构化的方式来学习机器学习算法。

您可以从空白文档开始,列出您需要的算法描述类型(例如,应用型、实现型或您自己的个人参考备忘单)的章节标题。

要确定模板中包含哪些章节,请列出您想了解算法的问题,如果您想构建一个参考资料,也可以列出关于算法集的问题。您可以使用的一些问题包括:

  • 该算法使用的标准和缩写是什么?
  • 该算法的信息处理策略是什么?
  • 该算法的目标或目的是什么?
  • 常用来描述算法行为的隐喻或类比有哪些?
  • 该算法的伪代码或流程图描述是什么?
  • 使用该算法的启发式方法或经验法则是什么?
  • 该算法适用于哪些类型的问题?
  • 常用于演示该算法的基准或示例数据集有哪些?
  • 有哪些有用的资源可以进一步了解该算法?
  • 首次描述该算法的主要参考文献或资源是什么?

一旦您确定了一些问题,就将它们转换为章节标题。

对于每个章节标题,明确定义该章节的要求以及该章节中描述将采用的形式。我喜欢在每个章节中包含启发性问题,一旦回答这些问题,该章节将满足最低详细程度的要求。

从小处着手,逐步建立

这种方法的美妙之处在于,您不需要是算法专家或研究专家。只要您能找到一些提及该算法的资源,就可以开始在模板中捕捉关于算法的笔记。

您可以从非常简单的地方开始,收集算法的高级描述、其名称和缩写,以及您找到的资源以及它们讨论的内容。从这里,您可以决定是否进一步扩展描述。

您很快就会得到一份一到两页的算法描述。

我使用它

我使用算法模板已经很长时间了。我发现这种策略实际有用的一些例子包括:

  • 使用以描述为中心的模板实现机器学习算法。
  • 使用以应用为中心的模板应用机器学习算法。
  • 使用通用模板构建算法目录以供使用和参考。

在最后一种情况下,我把我的目录变成了一本包含45种受自然启发算法的书,并于2011年初出版。这本书名为《智能算法:自然启发编程秘籍》。

总结

在这篇文章中,您学习了如何使用算法描述模板作为学习机器学习算法的策略。

您了解到算法描述是不完整的,有效学习算法的答案是设计一个满足您需求的算法模板,并在阅读和学习算法时填写该模板。

您了解到该模板是解决一个令人望而生畏的问题的有效且结构化的方法。

了解机器学习算法的工作原理!

Mater Machine Learning Algorithms

几分钟内了解算法如何工作

...只需算术和简单示例

在我的新电子书中探索如何实现
精通机器学习算法

它涵盖了**10种顶级算法**的**解释**和**示例**,例如:
_线性回归_、_k-近邻_、_支持向量机_等等...

最后,揭开
机器学习算法的神秘面纱

跳过学术理论。只看结果。

查看内容

对《如何学习机器学习算法》的27条回复

  1. Preethi 2015年8月20日 12:00 pm #

    我需要一些帮助来理解机器学习算法的证明。我是一个初学者,正在尝试学习这些算法及其证明。
    请推荐一些可以更快理解事情的教科书/资源。
    也请分享您的建议!

    • Jason Brownlee 2015年12月23日 9:43 am #

      我最好的建议是不要从算法的证明开始。

      从简单的描述性理解开始,扩展到伪代码描述,然后是数学描述,最后再转向相关的证明。

      • Chitrang Talaviya 2016年1月9日 12:34 pm #

        是的,Jason 说得没错。感谢您的努力。您的文章对我进入机器学习领域非常有帮助。

    • Robin White 2016年3月31日 10:02 am #

      嗨 Preethi。我建议您参加我以前上过的机器学习课程。我将链接放在下面给您。我希望它能对您有所帮助。http://www.thedevmasters.com/machine-learning-in-python/

      • sujal 2017年11月24日 11:32 am #

        你好 Robin White,

        在thedevmasters的机器学习课程上花钱会有益吗,您能告诉我吗?

  2. Will 2016年9月27日 1:16 am #

    嗨,Jason!

    如果可能的话,很想看到您写的一个算法模板的例子!

    谢谢

  3. Rabbani 2017年10月2日 3:08 am #

    尝试下载算法思维导图时页面未找到

    • Jason Brownlee 2017年10月2日 9:39 am #

      也许您的互联网服务提供商正在阻止访问?

  4. Anu 2017年10月11日 1:38 am #

    无法下载算法思维导图

    “哎呀,页面未找到!

    您要查找的页面似乎不存在。”

  5. sujal 2017年11月21日 2:19 pm #

    嗨,Jason,

    我正在攻读数据分析硕士,并学习机器学习和R。我没有任何统计学背景,您能给我一些建议,从哪里开始才能理解算法的数学部分吗?

  6. Jesús Martínez 2018年2月17日 2:16 am #

    谢谢你的文章,Jason!我通常发现学习任何东西最有效的方法是使用比喻来理解它。此外,有目的地学习比漫无目的地翻阅公式和代码更有吸引力。总而言之:边做项目边学习更有趣也更快!

    您对此有何看法?我很想知道。

  7. Eli Mead 2018年12月17日 5:08 am #

    在“整合起来”部分的第二段,您写的是“绝望的描述”(Desperate descriptions),而不是“不同的描述”(Disparate descriptions)。

  8. Noman 2019年4月28日 6:46 pm #

    教授您好,我想将机器学习算法用于燃料电池的故障检测或性能优化,我刚进入这个领域,对机器学习几乎一无所知。

    • Jason Brownlee 2019年4月29日 8:20 am #

      也许可以从谷歌搜索“故障检测”开始,然后查阅一些最近的论文,看看目前最先进的方法是什么?

  9. DK 2019年11月25日 7:19 pm #

    嗨 Jason,

    我很难理解机器学习算法,我想学习算法背后的数学原理,您能推荐一些好的书籍或课程,详细介绍顶级算法及其工作原理的数学原理吗?

    感谢您的帮助!

  10. Maria Horn 2020年3月30日 5:11 pm #

    这里有一个全新的想法)。我怀着极大的满足感阅读了这篇帖子,也学到了一些新的东西,我将在未来的需求中使用它们。
    这篇指南清晰明了,没有多余的无用事实,
    它让我想起了 https://davidsmcdonough.com/how-to-write-a-compare-and-contrast-essay/。语言
    既精彩又生动,我越读越喜欢!
    总之,这些信息非常前沿,我很喜欢。

  11. Becky Henderson 2020年5月1日 4:43 am #

    Jason,

    我只想感谢您的文章和指导。我是 AI/ML 领域的新手,您发布的信息为我提供了很好的起点,并激发了我为当前项目寻找解决方案的思路。非常感谢!

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。