# 如何学习机器学习算法

> 原文： [https://machinelearningmastery.com/how-to-learn-a-machine-learning-algorithm/](https://machinelearningmastery.com/how-to-learn-a-machine-learning-algorithm/)

在电子邮件列表中出现了几次如何学习机器学习算法的问题。

在这篇文章中，我将与您分享我多年来一直使用的策略，以逐步的方式学习和构建算法的结构化描述，我可以添加，改进并一次又一次地参考。我甚至用它来写一本书。

这只是我个人使用的策略，我对这些积极反馈感到非常惊讶。

## 算法描述已损坏

学习机器学习算法可能是压倒性的。有太多的论文，书籍和网站描述了算法在数学和文本方面的工作原理。如果你真的很幸运，你可能会找到算法的伪代码描述。

![Implement a Machine Leaning Algorithm](img/fad376caf6ed09f82aae89068f0c3fc3.jpg)

实现机器学习算法
照 [Nic的事件](http://www.flickr.com/photos/nics_events/2227330536/sizes/l/)，保留一些权利

如果你真的很幸运，你可能会找到一些建议的方法来为不同的情况配置方法。这些描述很少见，通常深埋在原始出版物或原作者的技术说明中。

当您想要从研究论文中实现一种方法时，您很快就会学到的一个事实是，几乎从未详细描述算法以便您重现它们。原因各不相同，从论文中遗漏的微观决策到文本中含糊不清的总体程序，以及使用不一致的符号。

## 获取免费算法思维导图

![Machine Learning Algorithms Mind Map](img/2ce1275c2a1cac30a9f4eea6edd42d61.jpg)

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

我已经创建了一个由类型组织的60多种算法的方便思维导图。

下载，打印并使用它。

## 把它拼凑在一起

要理解一个算法，你必须从不同的描述中自己理解。这是我发现成功的唯一策略。

不同的描述意味着资源，例如主要来源中方法的原始描述以及在评论文章和书籍中对原始描述进行的权威性二级解释。

通常使用主要源发布的方法的原型实现并且读取此代码（通常是C，FORTRAN，R或Matlab）对于重现算法所需的细节非常有启发性。

## 算法描述

算法是一个研究的岛屿，在所有现实中，很难确定规范的定义。例如，它是主要源中描述的版本，还是包含“最佳实践”的所有修复和增强的版本。

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

我喜欢这种方法，因为它保证了在描述的每个步骤中从许多可能的情况下对算法的特定情况进行望远镜的需要，同时还保留了对变化描述的选项。

根据您的需要，您可以根据不同的特殊性使用许多描述。我喜欢使用的一些包括：算法的灵感，策略的隐喻或类比，信息处理目标，伪代码和代码。

## 算法处方

当我开始自己的研究项目时，我认为这个问题的答案是阅读算法上的所有内容并在代码中创建明确的实现。也许不错的想法，但代码只是传播算法的一种方式，而且它是有限的。

算法描述比计算更多。围绕算法的元信息对于某些用例来说是非常宝贵的。

例如，算法的使用试探法嵌入在论文中。在一个地方汇总使用启发式的概述可能意味着快速获得足够好的结果和对算法运行灵敏度分析数天或数周的差异。

其他示例包括用于测试算法的标准实验数据集，算法适合的一般问题类别，以及已经为该算法识别和描述的已知限制。

## 设计算法描述模板

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

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

要确定要在模板中包含哪些部分，请列出您想要回答的有关算法的问题，或者如果您要构建参考，请列出算法。您可以使用的一些问题包括：

*   算法使用的标准和缩写是什么？
*   该算法的信息处理策略是什么？
*   算法的目标或目标是什么？
*   通常使用什么比喻或类比来描述算法的行为？
*   算法的伪代码或流程图描述是什么？
*   使用该算法的启发式或经验法则是什么？
*   算法适合哪些类型的问题？
*   用于演示算法的常用基准或示例数据集是什么？
*   有关该算法的更多信息，有哪些有用的资源？
*   首次描述算法的主要参考或资源是什么？

一旦你解决了一些问题，把它们变成章节标题。

对于每个部分标题，清楚地定义该部分的要求以及该部分中的描述将采用的形式。我希望为每个部分提供激励性问题，一旦回答将满足最低级别的细节。

## 从小开始并建立起来

这种方法的优点在于您无需成为算法或研究方面的专家。只要您能找到一些提及算法的资源，您就可以开始在模板中捕获有关算法的注释。

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

您将很快得到一到两页的算法描述。

## 我用它

我一直在使用算法模板。我发现这个策略实际有用的一些例子包括：

*   使用描述性聚焦模板实现机器学习算法。
*   使用应用聚焦模板应用机器学习算法。
*   构建要使用的算法目录，并参考使用通用模板。

在最后一个案例中，我将我的目录变成了一本由我在2011年初出版的45种自然启发算法的书。这本书被称为[聪明的算法：自然灵感的编程秘籍](http://www.amazon.com/dp/1446785068?tag=inspiredalgor-20)（会员链接）。

## 摘要

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

您了解到算法描述已被破坏，有效学习算法的答案是设计满足您需求的算法模板，并在阅读和学习算法时填写模板。

您了解到模板是解决压倒性问题的有效且结构化的方法。