# 理解任何机器学习算法的6个问题

> 原文： [https://machinelearningmastery.com/question-to-understand-any-machine-learning-algorithm/](https://machinelearningmastery.com/question-to-understand-any-machine-learning-algorithm/)

有很多机器学习算法，每个算法都是一个研究的岛屿。

您必须选择学习机器学习算法的详细程度。如果您是对应用预测性建模感兴趣的开发人员，那么有一个最佳选择。

这篇文章描述了最佳位置，并为您提供了一个模板，您可以使用该模板快速了解任何机器学习算法。

![Sweet Spot For Understanding Machine Learning Algorithms](img/31eb1a0ab6574934c1f7da3be7b64c50.jpg)

理解机器学习算法的甜蜜点
照片由 [dmums](https://www.flickr.com/photos/digitalmums/6310508350/) 拍摄，保留一些权利。

让我们开始吧。

## 您需要了解的机器学习算法？

关于机器学习算法，您需要了解什么才能在分类或预测问题上很好地使用它？

我不会争辩说，你对特定算法的工作方式和原因了解得越多，就越能掌握它。但我确实认为有一个收益递减的地方你可以停下来，使用你所知道的有效方法，并深入研究理论和研究算法，当且仅当你需要了解更多才能获得更好的结果时。

让我们来看看将揭示机器学习算法以及如何最好地使用它的6个问题。

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

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

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

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

下载，打印并使用它。

## 询问任何算法的6个问题

您可以提出6个问题来了解任何机器学习算法的核心：

1.  你如何参考技术（_，例如什么名称_）？
2.  你如何表示学习模型（_，例如什么系数_）？
3.  如何学习模型（_，例如从数据到表示_的优化过程）？
4.  如何从学习模型中做出预测（_，例如将模型应用于新数据_）？
5.  您如何使用该技术（_，例如假设_）为建模准备最佳数据？
6.  如何获得有关该技术的更多信息（_，例如在哪里查看_）？

您会注意到我已将所有这些问题都表达为操作方法。我故意这样做是为了将实际问题从更为理论的问题中分离出来。如果您希望将其用作获取结果的工具，我认为了解技术的工作原理并不比了解它的工作方式重要。更多相关内容将在下一节中介绍。

让我们依次仔细研究这些问题。

### 1.你如何参考技术？

这很明显但很重要。您需要知道该技术的规范名称。

您需要能够从其他字段中识别经典名称或方法名称，并且知道它是相同的。这还包括算法的首字母缩写，因为有时它们不是直观的。

这将帮助您从扩展和算法适合的位置的家族树中解析基本算法，并与类似的算法相关联。

### 2.你如何代表学到的模型？

我真的很喜欢这个棘手的问题。

这是教科书和论文中经常被忽视的问题，也许是工程师在考虑如何实际使用和部署模型时的第一个问题。

该表示是数字和数据结构，其捕获由预测算法使用的学习算法从数据学习的不同细节。这是您在完成模型时保存到磁盘或数据库的内容。当新的训练数据可用时，这是您更新的内容。

让我们以一个例子来具体化。在线性回归的情况下，表示是回归系数的向量。而已。在决策树的情况下，树本身包括节点，它们如何连接以及选择的变量和截止阈值。

### 3.你如何学习模型？

给定一些训练数据，算法需要创建模型或填写模型表示。这个问题究竟是如何发生的。

通常学习涉及直接在更简单的算法中从训练数据估计参数。

在大多数其他算法中，它涉及使用训练数据作为成本或损失函数的一部分以及使函数最小化的优化算法。更简单的线性技术可以使用线性代数来实现该结果，而其他可以使用数值优化。

机器学习算法学习模型的方式通常与算法本身同义。这是运行机器学习算法的一个具有挑战性且经常耗时的部分。

可以参数化学习算法，并且列出可以用作起点的参数值或配置启发法的公共范围通常是个好主意。

### 4.如何使用模型做出预测？

学习模型后，它将用于对新数据做出预测。请注意，我们专门讨论用于分类和回归问题的预测性建模机器学习算法。

这通常是使用机器学习算法的快速而平凡的部分。通常它是如此微不足道，甚至在文献中都没有提到或讨论过。

这可能是微不足道的，因为预测可能像填充等式中的输入和计算预测一样简单，或者遍历决策树以查看什么叶节点亮起。在其他算法中，如k-最近邻居，预测算法可以是主要节目（k-NN除了“存储整个训练集”之外没有训练算法）。

### 5.如何最好地为算法准备数据？

机器学习算法做出假设。

即使是最放松的非参数方法也会对您的训练数据做出假设。审查这些假设是好的甚至是关键的。更好的方法是将这些假设转换为您可以执行的特定数据准备操作。

这个问题会刷新您在建模之前可以对数据使用的变换，或者至少让您暂停思考要尝试的数据变换。我的意思是，最好将算法要求和假设视为事物的建议，以试图充分利用您的模型，而不是您的数据必须遵守的硬性和快速规则。

就像您无法知道哪种算法最适合您的数据一样，您无法知道应用于数据的最佳转换以从算法中获得最大收益。真实数据很混乱，最好使用多种不同的算法尝试大量的数据演示，以确定需要进行更深入调查的内容。机器学习算法的要求和假设有助于指出要尝试的数据的演示。

### 6.如何获得有关算法的更多信息？

在数据问题上，某些算法通常会比其他算法更好。

当他们这样做时，您需要知道在哪里可以更深入地了解该技术。这有助于进一步自定义数据算法并调整学习和预测算法的参数。

收集和列出您可以在需要深入了解时可以参考的资源是一个好主意。这可能包括：

*   期刊文章
*   会议论文
*   书籍包括教科书和专着
*   网页

我还认为，了解更多实用的参考资料是一个好主意，例如示例教程和开源实现，您可以查看这些参考资料以更具体地了解正在发生的事情。

有关研究机器学习算法的更多信息，请参阅[如何研究机器学习算法](http://machinelearningmastery.com/how-to-research-a-machine-learning-algorithm/)。

## 摘要

在这篇文章中，您发现了6个问题，您可以询问机器学习，如果得到回答，将为您提供一个非常好的和实用的概念，了解它是如何工作的以及如何有效地使用它。

这些问题主要集中在用于预测性建模问题（如分类和回归）的机器学习算法上。

这些问题，简单地说是：

1.  算法的常用名称是什么？
2.  模型使用什么表示？
3.  算法如何从训练数据中学习？
4.  如何从模型中对新数据做出预测？
5.  如何最好地为算法准备数据？
6.  在哪里可以找到有关算法的更多信息？

对于定义算法描述模板这一主题的另一篇文章，请参见[如何学习机器学习算法](http://machinelearningmastery.com/how-to-learn-a-machine-learning-algorithm/)。

你喜欢这种方法吗？请在评论中告诉我。