# 在没有数学背景的情况下理解机器学习算法的5种技巧

> 原文： [https://machinelearningmastery.com/techniques-to-understand-machine-learning-algorithms-without-the-background-in-mathematics/](https://machinelearningmastery.com/techniques-to-understand-machine-learning-algorithms-without-the-background-in-mathematics/)

理论在哪里适合自上而下研究机器学习的方法？

在传统的机器学习教学方法中，理论首先需要广泛的数学背景才能理解它。在我教授机器学习的方法中，我首先教你如何端到端地解决问题并提供结果。

理论在哪里适合？

在这篇文章中，您将发现我们在机器学习中谈论“理论”时的真正含义。提示：这都是关于算法的。

您将发现，一旦您熟练地解决问题并提供结果，您就会发展出更深层次的潜力，以便更好地理解和获得结果。 **没有人能够阻止你**。

最后，您将发现在标准数据集上练习机器学习时可以使用的5种技术，以逐步增加对机器学习算法的理解。

![Machine Learning Theory](img/2e4c99ffd64d88b21f94efb8ca444970.jpg)

如何在没有数学的情况下学习机器学习
照片由 [Ed Brambley](https://www.flickr.com/photos/edbrambley/4260498576/) ，保留一些权利

## 最后学习理论，而不是第一

向开发人员讲授机器学习的方式就是废话。

它是自下而上的。如果您是一名主要关注机器学习作为解决问题的工具而不是该领域的研究人员的开发人员，那么这就是废话。

传统方法要求您在学习算法理论之前先学习所有必备数学，如线性代数，概率和统计学。如果您接近算法的工作实现或讨论如何端到端地解决问题并提供可靠，可靠和准确的预测模型，那么您很幸运。

我教自上而下学习机器学习的方法。在这种方法中，我们首先从1）学习系统化的过程来解决端到端的问题，2）将过程映射到“最佳”机器学习工具和平台，然后3）完成测试数据集的有针对性的实践。

您可以在“[程序员机器学习：从开发人员到机器学习从业者](http://machinelearningmastery.com/machine-learning-for-programmers/)”的帖子中了解更多关于自上而下机器学习教学的方法。

那么理论在哪里适合这个过程呢？

如果翻转模型，则稍后会教授理论。但是，我们在谈论什么理论，以及当您在测试数据集上练习时，您究竟如何学习该理论？

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

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

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

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

下载，打印并使用它。

## 理论真的是关于算法的

机器学习领域是理论密集的。

它很密集，因为有一种传统来用数学方法描述和解释概念。

这很有用，因为数学描述可以非常简洁，减少模糊性。它们还通过利用来自描述它们的上下文中的技术（例如对过程的概率理解）来进行分析。

许多这些切向数学技术通常与机器学习算法的描述捆绑在一起。对于那些只想建立一种能够配置和应用它的方法的肤浅理解的人来说，这感觉势不可挡。令人沮丧的是。

如果您没有能够解析和理解算法描述的基础，那将是令人沮丧的。这是令人沮丧的，因为来自计算机科学这样的领域，算法一直被描述，但不同之处在于描述旨在快速理解（例如[桌面检查](https://en.wikipedia.org/wiki/Informal_Methods_(Validation_and_Verification)#Desk_checking)）和实现。

我们知道，例如在学习[哈希表](https://en.wikipedia.org/wiki/Hash_table)是什么以及如何使用它时，我们几乎不需要知道我们日常工作中哈希函数的细节。但我们也知道散列函数是什么以及去哪里了解有关散列函数细节以及如何编写自己的函数的更多信息。为什么机器学习不能这样？

在机器学习中遇到的大部分“理论”与机器学习算法有关。如果你问任何初学者他们为什么对理论感到沮丧，你会发现它与学习如何理解或使用特定的机器学习算法有关。

这里，算法比创建预测模型的过程更广泛。它还涉及用于选择特征，设计新特征，转换数据和估计模型对未见数据的准确率（例如交叉验证）的算法。

因此，学习理论最后，真正意味着学习机器学习算法。

## 强迫潜入理论

我通常建议在着名的机器学习数据集上进行有针对性的练习。

这是因为众所周知的机器学习数据集，如UCI机器学习库中的那些，很容易使用。它们很小，因此适合内存，可以在工作站上处理。它们也经过充分研究和理解，因此您可以进行比较基线。

您可以在“[练习机器学习与UCI机器学习库](http://machinelearningmastery.com/practice-machine-learning-with-small-in-memory-datasets-from-the-uci-machine-learning-repository/)中的小型内存数据集”中了解有关机器学习数据集的目标实践的更多信息。

理解机器学习算法适合这个过程。原因是为了在标准机器学习算法上获得结果，您将遇到限制。您将想要了解如何从给定算法中获得更多信息，或者了解有关如何最佳配置算法或如何实际工作的更多信息。

这需要了解更多和好奇心将促使您研究机器学习算法的理论。您将被迫拼凑对算法的理解，以获得更好的结果。

我们在不同背景的年轻开发人员中看到同样的效果，最终最终研究开源项目，教科书甚至研究论文的代码，以便磨练他们的技艺。成为一个更有能力的程序员的需要驱使他们去做。

如果你很好奇并且有动力去取得成功，你就无法抗拒研究这一理论。

## 5了解机器学习算法的技巧

作为您的目标实践的一部分，现在是时候深入了解机器学习算法

当那个时候到来时，您可以使用许多技术和模板来缩短流程。

在本节中，您将发现5种可用于快速理解机器学习算法理论的技术。

### 1）创建机器学习算法列表

当您刚刚开始时，您可能会对可用的大量算法感到不知所措。

即使在现场测试算法中，您可能不确定要在混合中包含哪些算法（提示，多样化）。

开始时可以使用的一个很好的技巧是跟踪您阅读的算法。这些列表可以像算法的名称一样简单，并且随着您的兴趣和好奇心的构建，可以增加复杂性。

捕获详细信息，例如它们适合的问题类型（分类或回归），相关算法和分类类（决策树，内核等）。当您看到新的算法名称时，请将其添加到列表中。当您开始出现新问题时，请尝试以前从未使用过的算法。在您之前使用的算法旁边标记一个检查。等等。

控制列表中算法的名称可以为您提供强大的功能。这种荒谬简单的策略可以帮助你摆脱压倒性的压力。您的简单算法列表可以为您节省大量时间和挫折的示例如下：

*   尝试新的和不同的问题类型（时间序列，评级系统等）的算法的想法
*   您可以调查的算法，以了解有关如何应用的更多信息。
*   按类别（树，内核等）处理算法类型。
*   避免固定最喜欢的算法的问题。

首先创建算法列表，打开电子表格并开始使用。

有关此策略的更多信息，请参阅文章“[通过创建机器学习算法的目标列表](http://machinelearningmastery.com/create-lists-of-machine-learning-algorithms/)获取控制权”。

### 2）研究机器学习算法

当您想要了解有关机器学习算法的更多信息时，您需要对其进行研究。

您有兴趣研究算法的主要原因是学习如何配置它并了解它是如何工作的。

研究不仅仅适用于学术界。一些简单的提示可以帮助您收集有关给定机器学习算法的信息。

关键是信息来源的多样性。以下是您可以参考的源类型的简短列表，以获取有关您正在研究的算法的信息。

1.  权威资料，如教科书，讲义，幻灯片和概述文件。
2.  精算资料来源，例如首次描述算法的论文和文章。
3.  最先进的资源，描述了算法的最新扩展和实验。
4.  启发式消息来源，如机器学习竞赛，Q＆amp; A网站和会议论文的帖子。
5.  实现源，例如工具和库的开源代码，博客文章和技术报告。

您不需要成为博士研究员也不需要是机器学习算法专家。

花点时间挑选许多来源，收集您想要弄清楚的机器学习算法的事实。专注于您可以应用或理解的实际细节，剩下的就是其余部分。

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

### 3）创建自己的算法描述

您将在研究中发现的机器学习算法描述将是不完整和不一致的。

您可以使用的方法是将您自己的迷你算法描述放在一起。这是另一种非常简单且非常强大的策略。

您可以设计一个标准算法描述模板，其中只包含那些对于从算法中获得最大收益的细节，如算法使用启发式算法，伪代码列表，参数范围和资源列表。

然后，您可以在多个关键算法中使用相同的算法描述模板，并开始构建您自己的小算法百科全书，您可以参考未来的项目。

您可能希望在自己的算法描述模板中使用的一些问题包括：

*   算法使用的标准缩写是什么？
*   算法的目标或目标是什么？
*   算法的伪代码或流程图描述是什么？
*   使用该算法的启发式或经验法则是什么？
*   有关该算法的更多信息，有哪些有用的资源？

您会惊讶于这些描述的实用性和实用性。例如，我用这种方法写了一本自然启发的算法描述的书，我仍然会在几年后再提到。

有关如何创建有效算法描述模板的更多信息，请参阅文章“[如何学习机器学习算法](http://machinelearningmastery.com/how-to-learn-a-machine-learning-algorithm/)”。

有关使用标准算法描述模板描述的算法书的更多信息，请参阅“[聪明算法：自然启发的编程秘籍](http://cleveralgorithms.com/nature-inspired/index.html)”。

### 4）调查算法行为

机器学习算法是复杂的系统，有时最好通过它们在实际数据集上的行为来理解。

通过使用小型数据集设计机器学习算法的小型实验，您可以了解很多关于算法如何工作的信息，它的局限性以及如何以可能转移到其他问题的特殊结果的方式对其进行配置。

可用于研究机器学习算法的简单过程如下：

1.  选择您想要了解更多信息的算法（例如随机森林）。
2.  确定有关您想要回答的算法的问题（例如，树木数量的影响）。
3.  设计一个实验来找到该问题的答案（例如，在一些二分类问题上尝试不同数量的树，并绘制与分类准确率的关系图）。
4.  执行实验并记录结果，以便将来可以使用它们。
5.  重复这个过程。

这是应用机器学习的真正令人兴奋的方面之一，通过您自己的简单调查，您可以获得惊人的和最先进的结果。

有关如何根据行为研究算法的更多信息，请参阅“[如何调查机器学习算法行为](http://machinelearningmastery.com/how-to-investigate-machine-learning-algorithm-behavior/)”。

### 5）实现机器学习算法

使用机器学习算法比使用机器学习算法更加贴心。

在从零开始实现机器学习算法时，您将面临进入给定实现的无数微决策。您可以决定用一些经验法则覆盖一些将其全部作为参数暴露给用户。

下面是一个可重复的过程，您可以使用它从零开始实现机器学习算法。

1.  选择一种您最熟悉的编程语言可能是最好的。
2.  选择要实现的算法，从容易的事情开始（参见下面的列表）。
3.  在开发时选择一个问题来测试您的实现，2D数据有利于可视化（甚至在Excel中）。
4.  研究算法并利用许多不同的信息来源（例如阅读教程，论文，其他实现等）。
5.  单元测试算法以确认您的理解并验证实现。

从小处着手，建立信心。

例如，您从零开始选择的第一个机器学习算法实现的3种算法是：

*   使用梯度下降的线性回归
*   k-最近邻（[参见Python中的教程](http://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)）
*   Naive Bayes（[参见我的Python教程](http://machinelearningmastery.com/naive-bayes-classifier-scratch-python/)）

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

另见帖子：

*   “[从零开始实现机器学习算法的好处](http://machinelearningmastery.com/benefits-of-implementing-machine-learning-algorithms-from-scratch/)”
*   “[在实现机器学习算法时不要从开源代码开始](http://machinelearningmastery.com/dont-start-with-open-source-code-when-implementing-machine-learning-algorithms/)”

## 理论不仅仅适用于数学家

机器学习不仅适用于数学精英。您可以了解机器学习算法的工作原理以及如何在不深入了解多变量统计量的情况下充分利用它们。

**你不需要擅长数学。**

正如我们在技术部分中看到的，您可以从算法列表开始，并深入过渡到算法研究，描述和算法行为。

你可以使用这些方法走得很远，而不需要在数学上潜水很多。

**你不需要成为一名学术研究员。**

研究不仅仅适用于学术界。任何人都可以阅读书籍和论文，并编写自己对某个主题的理解，如特定的机器学习算法。

当你扮演“_科学家_”的角色时，你将获得最大的突破，并开始尝试机器学习算法，好像它们是需要学习的复杂系统一样。您将发现行为中可能无法记录的各种有趣的怪癖。

## 采取行动

选择上面列出的技术之一并开始使用。

我的意思是今天，现在。

**不确定从哪里开始？**

以下是您可以从哪里开始的5个好主意：

1.  列出10种用于分类的机器算法（看看我的[算法之旅](http://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/)来获得一些想法）。
2.  找五本书，详细描述随机森林。
3.  使用您自己的算法描述模板在Naive Bayes上创建五张幻灯片演示文稿。
4.  打开 [Weka](http://machinelearningmastery.com/how-to-run-your-first-classifier-in-weka/) 并查看“k”参数如何影响虹膜花数据集上k-最近邻居的准确率。
5.  使用随机梯度下降实现线性回归。

你有没有采取行动？喜欢这篇文章？在下面发表评论。