译:机器学习基础——给非技术读者的图解指南
(以下译文并不完整,有些图示举例没有处理,建议对比原文阅读。原文可点击下载获取。)
适用于每个人的机器学习概念
根据 Google Trends 显示,自 Dataiku 2013 年成立以来,机器学习(ML,Machine Learning)这一词的热度增长了超过 300%。我们已经看到 ML 从相对少数的数据科学家的领域延伸到了主流的分析和商业领域。这在我们的客户之间以及为世界范围内的组织带来了大量的创新和改善,同时也引发了各地人们从好奇心到焦虑的不同反应。
我们决定编写本指南是因为我们注意到,并没有太多的资源能够以最少的技术术语回答“什么是机器学习”这个问题。实际上,简单解释起来,机器学习的基本概念并不是很难理解。
在本指南中,我们将从一些定义开始,然后逐步解释现如今机器学习中一些最常用的算法,如线性回归和基于树的模型。之后,我们将深入探讨如何决定怎样评估和微调这些模型。接下来,我们将了解一下聚类模型。最后,我们将提供一些可供你继续探索的资源。
我们希望你能喜欢这本指南,并且不管你对机器学习的熟悉程度是多是少,都让你觉得它很有价值!
数据科学关键概念的介绍
什么是数据科学?答案只有两个字,算法。
从某种程度上说,机器学习是一种计算机学习事物的方式,并且它不是通过已编好的特定程序来实现这一学习过程。
但是,这究竟是如何发生的呢?
算法是一组计算机能够遵循的规则。想想你是如何学会做长除法的,也许你会先取到分母,使用分子除以它得到商的第一个数字,然后分母减去该数字与分子的积,之后继续计算商的下一个数字,直到剩下一个余数。
其实,这就是一个算法,这是我们可以编入计算机的东西,它可以执行这些计算,而且比我们更快。
机器学习长什么样子?
在机器学习中,我们的目标是预测或聚类。预测是一个过程,从中我们能够根据一组输入变量估计出一个输出变量的值。例如,使用一套房子的特征,我们可以预测其销售价格。预测问题分为两大类:
- 回归问题,其中要预测的变量是数字(例如,房屋的价格)。
- 分类问题,其中要预测的变量是几个预定义类别之一的组成部分,其可以像“是”或“否”那样简单。(例如,预测某个设备是否会遇到机械故障。)
在过去和如今,最著名同时也是最常用的机器学习算法有三种:线性模型、基于树的模型和神经网络。
注:我们在这里定义的术语是机器学习经常用到的。无论你是在从事涉及机器学习的项目,还是只是对数据世界中发生的事情感到好奇,我们都希望这些定义对你而言是清晰且有帮助的。
与数据科学和机器学习有关的 10 个重要术语的定义:
-
模型
对真实世界中的过程的数学表示;预测模型,可根据过去的行为预测未来的结果。
-
算法
一套用于计算或解决问题的规则。
-
训练
从训练数据中创建模型的过程。数据被输入到训练算法中,这会对问题的表示进行学习,并产生一个模型。也可称之为“学习”。
-
回归
一种预测方法,其输出是一个实数,也就是表示沿直线分布的量的值。例如:预测发动机的温度或公司的收入。
-
分类
将每个数据点分配给预定类别(例如,一种操作系统)的预测方法。
-
目标
在统计中,它被称为因变量;它是你想要预测的变量或模型输出。
-
训练集
用于查找潜在的预测关系的数据集,预测关系将用于创建模型。
-
测试集
一个从训练集中分出但与之具有相同结构的数据集,用于测量和测试各种模型的表现。
-
功能
也被称为自变量或预测变量,功能是可观察量,由预测模型记录和使用。你还可以通过组合功能或向其添加新信息来设计功能。
-
过度拟合
指对用于预测目标的经过训练的数据而言,模型过于复杂的情况。这导致了一个过于特殊的模型,这使得预测没有反映出功能与目标之间的根本关系这一现实。
最热门的预测算法
现在,我们来看几种主要类型的机器学习算法。我们可以把他们分成三类:线性模型、基于树的模型和神经网络。
-
线性模型方法
线性模型使用一个简单的公式并通过一组数据点找到“最佳拟合”线。
这种方法可以追溯到 200 多年前,其在统计和机器学习中被广泛使用。它对统计很有帮助,因为它很简单,你想要预测的变量(因变量)被表示为一个由已知变量组成的方程式(自变量),所以预测就变成了输入自变量的问题,方程会输出答案。例如,你可能想知道烤蛋糕需要多长时间,通过回归分析可能会得出一个方程 t = 0.5x + 0.25y,其中 t 是烘烤时间(小时),x 是蛋糕面糊的重量(以千克为单位),而 y 是一个变量,如果是巧克力则为 1,否则为 0。如果你有 1 公斤的巧克力蛋糕面糊(我们都喜欢蛋糕),那么将你的变量代入到我们的方程式中,会得到 t =(0.5×1)+(0.25×1)= 0.75 小时或 45 分钟。
-
基于树的模型
当你听到基于树的时候,想一想决策树,即一系列分支操作。
决策树是使用分支方法来显示决策的每个可能结果的图形。就像你要点一份沙拉一样,你首先要决定生菜的类型,之后是上层配料,再然后是调味敷料。我们可以在决策树中表现出所有可能的结果。在机器学习中,所用的分支使用二进制是或否的回答进行判断。 -
神经网络
神经网络是指由相互交换信息的彼此连接的神经元组成的生物学现象。这个想法现在已经被机器学习界普遍接受,被称为 ANN(人工神经网络)。
关于深入学习,你可能已经听说了很多,它可以通过一个连一个的多层神经网络完成。
人工神经网络是一系列模型,通过人为教授能够采用认知技能。
名称 | 描述 | 优点 | 缺点 |
---|---|---|---|
线性回归 | 通过所有的数据点找到“最佳拟合”。预测结果全部用数字表示。 | 容易理解,能够清楚看到模型中的最大驱动因素有哪些。 | 有时过于简单,以致于无法捕捉变量间的复杂关系。与相关功能没有多大关系。 |
逻辑回归 | 针对分类问题(例如,是或否的问题、分组,等等),对线性回归进行的调整。 | 同样容易理解。 | 有时过于简单,以致于无法捕捉变量间的复杂关系。与相关功能没有多大关系。 |
决策树 | 基于功能的一系列是或否的规则,形成一个树状结构,以匹配一个决策所有可能的结果。 | 容易理解。 | 不经常单独用于预测,因为它过于简单,对于复杂数据无能为力。 |
随机森林 | 吸收了很多决策树的优点,具有功能子样本生成的规则。每个树结构要弱于完整的决策树,但将它们组合到一起能够得到更好的总体性能表现。 | 一种“群体智慧”。趋向于生成非常高质量的模型。训练起来很快。 | 模型会变得很庞大。不容易理解预测过程。 |
梯度提升 | 使用更小决策树,逐渐集中在“复杂”的例子上。 | 出色的表现。 | 功能集或训练集上的小的改变,会对模型产生根本性的改变。 |
神经网络 | 彼此连接的神经元互相传递消息。深度学习使用层叠的多层神经网络。 | 能够处理极端复杂的任务,包括其他算法无法实现的图像识别。 | 训练起来非常缓慢,因为其有着非常复杂的结构。几乎无法理解预测过程。 |
如何评估模型
到现在,你应该已经创建了一个机器学习模型。但是现在的问题是,你如何证明它是一个优秀的模型?这取决于你建立了怎样的模型。
评估模型的度量标准
我们已经讨论过训练集和测试集,它们出现在你把数据分成两部分时,一个用来训练你的模型,另一个用来测试它。在使用训练集训练完模型后,你需要使用测试集对其进行测试。这很容易理解。那么现在,你应该使用哪些指标与测试集一起进行测试?
评估机器学习模型有几个指标,取决于你是否使用回归模型或分类模型。
对于回归模型,你需要查看均方误差和 R2。计算均方误差需要计算所有误差的平方并在所有观察数据中对其求平均值。这个数字越低,你的预测就越准确。R2(发音为 R-Squared)是观测到的变量与你的模型得出(即预测)的均值相一致的概率。R2 总是在 0 和 1 之间,数字越大越好。
对于分类模型,评估模型的最简单的度量标准是准确性。精确度是一个常见的词,但在这种情况下我们有一个非常具体的计算方法。准确度是观测数据中被模型正确预测的概率。准确度很容易理解,但应谨慎解读,特别是待预测的各种类不均衡时。
你可能遇到的另一个度量标准是 ROC AUC,它是衡量准确性和稳定性的指标。AUC 代表“曲线下的区域”。较高的 ROC AUC 通常意味着你的模型较好。对数损失是一个在竞争中经常使用的度量,比如 Kaggle 运行的竞争,当你的分类模型输出的不是严格的分类(例如,真的和假的)而是类别成员的概率(例如,10% 的可能性是真的,75% 的可能性是真的,等等)时会用到。当模型非常确定地做出错误预测时,日志损失会对预测结果加重惩罚。
过度拟合与调整
当你使用训练集训练模型时,该模型会学习训练集中的基础模式从而进行预测。但是模型也学习了那些没有任何预测价值的数据特性。当这些特性开始影响预测的时候,我们将花费很大力气来解释为何训练集得出这样的预测结果,而这一表现也会发生在测试集(以及任何新的数据)上。这被称为过度拟合,这可能是构建预测模型的最大挑战之一。过度拟合的补救措施被称为正则化,这基本上只是简化模型或使其不那么特殊化的过程。
对于线性回归,正则化采取 L2 和 L1 正则化的形式。在这篇文章中,这些方法所涉及的数学知识超出了本篇讨论的范围,但从概念上说,它们非常简单。假想一下,你有一个包含一系列变量和一系列系数的回归模型,该模型为 y = C1a + C2b + C3c ...,其中 Cs 是系数,a、b 和 c 是变量。L2 正则化所做的是减少系数的重要性,以使单个变量的影响变得不那么敏感。现在,假设你有很多变量,可能是数十、数百甚至更多,同时具有非常小但是并不为零的系数。L1 正则化只是消除了很多这些变量,假定大部分它们所带来的都是干扰。
对于决策树模型,可以通过设置树的深度来实现正则化。深层的树意味着有很多决策节点,这将会变得复杂,越深越复杂。通过限制树的深度,使其变浅,我们接受了在准确性上的一些损失,但它的通用性会更好。
无监督学习和聚类
无监督学习指的是什么?通过无监督的方式,意味着我们并不是要预测一个变量,而是要发现我们数据中隐藏的模式,这将使我们能够识别数据中的组或聚类。
之前,我们已经讨论了回归和分类算法。这些属于监督学习的类型,即我们根据其他自变量来预测一个特定的变量。
这里我们将讨论聚类模型,这是无监督学习最简单的类型之一。
聚类经常被用于市场营销,以便根据位置、购买行为、年龄和性别等多重特征对用户进行分组。它也可以用于科学研究,例如查找 DNA 数据中的人口聚类。
一个简单的聚类算法是 DBSCAN。在 DBSCAN 中,为半径选择一个距离,然后在数据集中选择一个点,接着将距初始点距离在半径以内的所有其他数据点添加到聚类中。之后,对每个添加到聚类的新点重复该过程,直到最后添加的点的半径内没有新的点。然后,选择数据集中的另一个点,并使用相同的方法构建另一个聚类。
DBSCAN 是直观的,但其有效性和输出在很大程度上依赖于你选择的半径范围,并且对有某些分布类型的反应不是很好。
最普遍的聚类算法被称为 k-均值聚类。在 k-均值聚类中,我们预先定义了我们要创建的聚类数量,我们选择的数字是 k,并且它总是一个正整数。
为了运行 k-均值聚类,我们从在数据集中随机放置 k 个起始点开始。这些点称为质心,它们成为我们 k 个聚类的原型。我们通过将数据集中的每个点分配到最近的质心来创建这些初始聚类。在创建了这些初始聚类后,我们计算每个聚类的中心,然后将每个质心移动到其相应聚类的中心。之后,由于质心已经移动,我们可以将每个数据点重新分配到质心,创建一组新的聚类,并计算新的中心。我们继续迭代预定的次数,通常标准是 300 次。当我们进行到最后的时候,如果质心还能移动,它应该只能移动一点点。