# 什么是机器学习？

> 原文： [https://machinelearningmastery.com/what-is-machine-learning/](https://machinelearningmastery.com/what-is-machine-learning/)

你对机器学习很感兴趣，也许你会涉及到它。

如果您有一天与朋友或同事谈论机器学习，您可能会冒着某人实际问你的风险：

> “_ 那么，什么是机器学习？_ “

这篇文章的目的是给你一些思考的定义和一个易于记忆的方便的单行定义。

我们首先要了解从该领域的权威教科书中获取的机器学习的标准定义。我们将通过制定开发人员对机器学习的定义和一个方便的单行程来完成，我们可以随时使用它们：_ 什么是机器学习？_

## 权威解释

让我们首先看一下大学级课程中常用的机器学习四本教科书。

这些是我们的权威定义，为深入思考这一主题奠定了基础。

我选择了这四个定义，以突出该领域的一些有用和多变的观点。通过经验，我们将了解到该领域真的是一堆混乱的方法，选择一个视角是取得进步的关键。

### 米切尔的机器学习

Tom Mitchell 在他的书[机器学习](http://www.amazon.com/dp/0070428077?tag=inspiredalgor-20)中提供了前言开头行中的定义：

> 机器学习领域涉及如何构建自动改进经验的计算机程序的问题。

我喜欢这个简短而又甜蜜的定义，它是我们在帖子结尾处提出的开发人员定义的基础。

注意提到“_ 计算机程序 _”和“_ 自动改进 _”的提法。 _ 编写改善自己的程序 _，这是挑衅性的！

在他的介绍中，他提供了一个简短的形式主义，你会看到很多重复：

A computer program is said to **learn** from experience`E`with respect to some class of tasks`T`and performance measure _P_, if its performance at tasks in _T_, as measured by _P_, improves with experience _E_.

不要让术语的定义吓跑你，这是一种非常有用的形式主义。

我们可以使用这种形式作为模板，将 **E** ， **T** 和 **P** 放在表格的列顶部，列出复杂问题，模糊度较低。它可以用作设计工具，帮助我们清楚地思考要收集哪些数据（ **E** ），软件需要做出哪些决定（ **T** ）以及我们将如何评估其结果（ **P** ）。这种力量是它作为标准定义重复的原因。把它放在后袋里。

### 统计学习的要素

[统计学习要素：数据挖掘，推理和预测](http://www.amazon.com/dp/0387848576?tag=inspiredalgor-20)由三名斯坦福大学统计学家编写，并自我描述为统计框架，以组织他们的研究领域。

在前言中写道：

> 许多领域正在生成大量数据，统计人员的工作就是理解这一切：提取重要的模式和趋势，并理解“数据所说的内容”。我们称之为 _ 从数据中学习。_

我理解统计学家的工作是使用统计工具来解释域上下文中的数据。作者似乎将机器学习的所有领域都包括在追求中。有趣的是，他们选择在书的副标题中加入“_ 数据挖掘 _”。

统计学家从数据中学习，但软件也是如此，我们从软件学到的东西中学习。从决策和各种机器学习方法取得的成果。

### 模式识别

Bishop 在他的书[模式识别和机器学习](http://www.amazon.com/dp/0387310738?tag=inspiredalgor-20)的序言中评论：

> 模式识别起源于工程，而机器学习则源于计算机科学。但是，这些活动可视为同一领域的两个方面......

读到这篇文章，你会得到一个印象，即 Bishop 从工程角度来到现场，后来学习并利用计算机科学采用相同的方法。模式识别是工程或信号处理术语。

这是一种成熟的方法，我们应该效仿。更广泛地说，无论声称采用方法的领域如何，如果通过“从数据中学习”使我们更接近洞察力或结果来满足我们的需求，那么我们可以决定将其称为机器学习。

### 算法视角

Marsland 在他的书[机器学习：算法视角](http://www.amazon.com/dp/B005H6YE18?tag=inspiredalgor-20)中提供了机器学习的 Mitchell 定义。

他在序言中提供了一个有说服力的笔记，激励他写这本书：

> 机器学习最有趣的特征之一是它位于几个不同学科的边界，主要是计算机科学，统计学，数学和工程学。 ...机器学习通常作为人工智能的一部分进行研究，它将其牢牢地植入计算机科学......理解为什么这些算法工作需要一定程度的统计和数学复杂性，而这些都是计算机科学本科生常常缺失的。

这是富有洞察力和指导性的。

首先，他强调了该领域的多学科性质。我们从上面的定义中得到了一种感觉，但他为我们画了一个大的红色下划线。机器学习来自各种信息科学。

其次，他强调了过于严密地坚持某一特定观点的危险。具体而言，算法主义者避开方法的数学内部运作的情况。

毫无疑问，统计学家反对实现和部署的实际问题的反案例同样有限。

### 维恩图

Drew Conway [在 2010 年 9 月创造了一个很好的维恩图](http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram)，这可能有所帮助。

在他的解释中，他评论说：机器学习=黑客+数学＆amp;统计

[![Data Science Venn Diagram](img/2f66317997ae0c179292017a2348eb20.jpg)](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2013/11/Data_Science_VD.png)

数据科学维恩图。归功于 Drew Conway，Creative Commons 被许可为 Attribution-NonCommercial。

他还将 _ 危险区 _ 描述为 _ 黑客技能 _ + _ 专长 _。

在这里，他指的是那些知道足够危险的人。他们可以访问和构建数据，他们知道域，他们可以运行方法并显示结果，但不了解结果的含义。我认为这是 Marsland 可能暗示的。

## 开发人员机器学习的定义

我们现在转向需要将所有这些打破我们开发人员的基本要素。

我们首先看一下抵抗我们分解和程序解决方案的复杂问题。这构成了机器学习的力量。然后我们制定出一个与我们开发人员一致的定义，我们可以在每次被问到时使用它们，“_ 那么，什么是机器学习？_ “由其他开发者提供。

### 复杂的问题

作为开发人员，您最终会遇到一些顽固抵制逻辑和程序解决方案的问题。

我的意思是，存在一类问题，即坐下来写出解决问题所需的所有 if 语句是不可行或不符合成本效益的。

“_ 亵渎！_ “我听到你的开发人员大脑的呼喊声。

这是真的。

从垃圾邮件中区分垃圾邮件的决策问题的每日案例。这是引入机器学习时一直使用的示例。如何编写程序来过滤电子邮件，因为它们进入您的电子邮件帐户并决定将它们放入垃圾邮件文件夹或收件箱文件夹中？

你可能先从收集一些例子开始，看看它们并深入思考它们。您需要查找垃圾邮件中的模式和非垃圾邮件中的模式。您可以考虑抽象这些模式，以便您的启发式方法可以适用于未来的新案例。你会忽略永远不会再看到的奇怪电子邮件。你可以轻松获得准确率，并为边缘案例制作特殊的东西。您会经常查看电子邮件，并考虑抽象新模式以改进决策制定。

除此之外，还有一个机器学习算法，除了它由程序员而不是计算机执行。这种手动派生的硬编码系统只能与程序员从数据中提取规则并在程序中实现规则的能力一样好。

它可以做到，但它需要大量的资源，并成为维护的噩梦。

### 机器学习

在上面的示例中，我确信您的开发人员大脑，即无情地寻求自动化的大脑部分，可以看到自动化和优化从示例中提取模式的元过程的机会。

机器学习方法就是这种自动化过程。

在我们的垃圾邮件/非垃圾邮件示例中，示例（ **E** ）是我们收集的电子邮件。任务（ **T** ）是将每封电子邮件标记为垃圾邮件或将其放入正确文件夹的决策问题（称为分类）。我们的绩效指标（ **P** ）就像精确度百分比（正确的决策除以总决策乘以 100）在 0％（最差）和 100％（最佳）之间。

准备像这样的决策程序通常称为训练，其中收集的示例称为训练集，程序称为模型，如在非垃圾邮件分类垃圾邮件问题的模型中。作为开发人员，我们喜欢这个术语，模型具有状态并且需要持久化，训练是一个执行一次的过程，并且可能根据需要重新运行，分类是执行的任务。这一切都对我们有意义。

我们可以看到，上述定义中使用的一些术语并不适合程序员。从技术上讲，我们编写的所有程序都是自动化，评论机器学习自动学习是没有意义的。

### 方便的单行

那么，让我们看看我们是否可以使用这些部分并构建开发人员对机器学习的定义。怎么样：

> **机器学习是根据数据对模型进行训练，该数据将决策概括为绩效测量。**

_ 训练模型 _ 建议训练样例。 _ 模型 _ 建议通过经验获得的状态。 _ 推广决策 _ 建议能够根据输入做出决策，并预测将来需要做出决定的看不见的输入。最后，_ 针对表现测量 _ 提出了针对所准备模型的目标需求和定向质量。

我不是诗人，你能想出更精确或更简洁的开发人员定义机器学习吗？
在下面的评论中分享您的定义。

## 进一步阅读

我已经在这篇文章中链接了资源，但是如果你渴望更多的阅读，我已经在下面列出了一些有用的资源。

### 图书

以下是从中提取定义的四本教科书。

*   [Mitchell 的机器学习](http://www.amazon.com/dp/0070428077?tag=inspiredalgor-20)
*   [统计学习的要素：数据挖掘，推理和预测](http://www.amazon.com/dp/0387848576?tag=inspiredalgor-20)，Hastie，Tibshirani 和 Friedman
*   [模式识别和机器学习](http://www.amazon.com/dp/0387310738?tag=inspiredalgor-20)由 Bishop 提供
*   [机器学习：Marsland 的算法视角](http://www.amazon.com/dp/1420067184?tag=inspiredalgor-20)。

此外，Drew Conway 还有一本与 John Myles White 合作的书，实用而有趣，可以阅读[黑客机器学习](http://www.amazon.com/dp/1449303714?tag=inspiredalgor-20)

### 问答网站

在 Q＆amp; A 网站上有一些关于机器学习究竟是什么的有趣讨论，下面是一些选择。

*   **Quora** 很适合像这样的高级问题，浏览一下。我的选择是：[外行人的学习机器学习是什么？](http://www.quora.com/Machine-Learning/What-is-machine-learning-in-laymans-terms) 和[什么是数据科学？](http://www.quora.com/Data-Science/What-is-data-science)
*   **Cross Validated** 对这个更高级别的问题进行了一些很好的讨论。参见 [The Two Cultures：统计与机器学习？](http://stats.stackexchange.com/questions/6/the-two-cultures-statistics-vs-machine-learning) 本次讨论中提到的两个资源是博客文章[统计与机器学习，战斗！](http://brenocon.com/blog/2008/12/statistics-vs-machine-learning-fight/) 和论文[统计建模：两种文化](http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.ss/1009213726)。
*   **Stack Overflow** 也有一些讨论，例如，checkout [什么是机器学习？](http://stackoverflow.com/questions/2620343/what-is-machine-learning)

我对所有这一切都很认真，而且我的定义被我读过的书和我所拥有的经历所染色。让我知道它是否有用。

发表评论，让我们都知道你如何理解这个领域。什么是机器学习给你？您知道我们可以追溯的任何进一步资源吗？
请在下面的评论中告诉我。