图解机器学习

language::

机器学习(Machine Learning)是计算机科学的一个方向。利用统计学的技巧,机器学习算法(Machine Learning Algorithms)能够自动学习并识别数据内的规律。凭着这些规律,算法便能作出高度准确的预测。

请往下浏览。 现在有一组关于旧金山和纽约房屋资料的数据样本,我们将会构建一个机器学习模型来将他们区分开来。

往下浏览


以直觉做出发点

假设我们必须凭数据预测一栋房屋是位于纽约市, 我们应该怎样开始呢?在机器学习中,这是一种分类任务。 (Classification Task)。

如果你到过旧金山,你可能会知道那里的地形是出了名的高低不平。所以不妨让我们从房屋的海拔入手,看看房屋的海拔信息能不能协助我们去区分它们。

让我们看看右边的海拔图表,一栋海拔73米以上的房屋应该是位于旧金山的。这是我们凭直觉能作的最初步预测。


加一点常识

多加一个维度(Dimension)能让我们发掘更多更细微的区别。例如,纽约的房屋每平米的价格往往要贵上许多。

因此我们在图中加上房屋样本的每平米单价,这样我们的图就变成了散点图,从而可以帮助我们在这些海拔低的房屋中做出区分。

凭着这些数据,我们可以作这样的预测:在海拔73米以下的房屋中,如果每平方米价格高过19117美元,那么房屋就是在纽约市的。

数据内的维度,在机器学习词汇内又称为特征(features),预报器(predictors),或变量(variable)。


划分边界线

我们可以把样本的海拔和每平米价格信息的画在散点图上。图上绿色(海拔73米以上)的部分将会归类为旧金山的。蓝色(每平米19117美元以上)的部分会归类为纽约市的。

这样凭着数据寻找合理的分界条件是统计学习和机器学习的本质。

可是,在左下角那些海拔低,平方米价格也低的房屋该怎么分类呢?我们要找多一点的维度数据了。


我们用来构建机器学习模型的房屋数据里共有七个维度。在机器学习中,建造模型的过程又称为训练模型(Model Training)。

在右边,我们给出一个散点图矩阵用来表示这些维度特征中两两之间的关系。

图上依稀可见数据里的规律。我们该怎样把模糊的规律变成准确的分界条件呢?


发挥机器学习

在数据里寻找规律就是机器学习的基础。所有的机器学习算法都是使用统计学习去快速地找到最佳的分界。

接下来我们将会介绍一种叫决策树的机器学习算法。决策树十分简单,它会逐一分析数据内的维度,从而去寻找分界线。



寻找更好的分界条件

首先让我们重新审视房屋海拔数据,试试看能不能找到更好的分界方案。让我们尝试从一个新的角度来看。

让我们尝试从一个新的角度来看。


把上面的海拔图转化成直方图能让我们发现更多数据中的规律。直方图中可以看到不同房屋海拔的数量。

在数据样本中,虽然纽约市海拔最高的房子在海拔73米。但是大多数的纽约房子都坐落在海拔较低的地方。


第一个分节点

决策树使用二分类式的if-else条件作为分界条件。

比方说,如果一栋房子的海拔高于个数值,决策树就会判定这个房子位于旧金山。


在机器学习中,这些判断叫做分节点(fork),这些分节点把基于当前维度的某个数值,将数据样本分成两个分支。

两个分支之间的临界数值叫做切分点。房屋样本中小于临界数值的会被分向左边,大于临界数值的则会被分向右边。换言之,切分点实际上就是以决策树视角所看到的边界。


权衡折中

选择分节点时需要小心权衡。我们初选的分节点(海拔73米)把很多的旧金山的房子错误分类为纽约市的。

让我们看看左边那饼饼图绿色的部分,那些是被分错的了旧金山的房子。我们把这些分错的样本称作是伪阴性的(false negative)。


可是,如果我们使用一个能将所有旧金山房屋的样本都归在一边的切分点,那么这个分支又会错误分类许多纽约市的房子。我们把这类错误叫做伪阳性(false positive)。


最佳切分

在最佳的切分点上,分类结果应该尽可能同质(或纯质)。统计学里有几种算法可以帮助我们寻找好的切分点。


如图所示,即便是在最佳的切分,我们还是不能避免错误的分类。我们该什么办呢?



一试再试

我们可以使用递归的方法继续尝试。在第一个分支的两边分类结果内,每边再次加分支分类。递归地重复调用算法(recursion)是模型训练里常用的方法之一。

左边的一系列直方图显示着两边数据样本里每个维度上的数量。


新分支的最佳切分点会有所变化,这取决于具体的分支。

在左边海拔较低的部分,最佳的区分维度是每平方米价格,切分点的临界数值在11,420美元。在右边海拔较高的部分, 最佳的区分维度则是房子总值,切分点的临界数值在514,500美元。

.

决策树生长

更多的分支会给决策树增加新的信息,从而增强决策树的预测准确性。


加多一层,决策树的准确性增加到84%。


再加几层,准确性增加到96%。


我们甚至可以继续加分支直到决策树的分类正确率达到100%,这所有决策树末梢的分类结果会是纯粹旧金山或纽约市的,于是也即将两类房屋完全分开。


决策树的末节通常又叫做叶节点(leaf nodes)。决策树的预测取决于叶节点内哪一类的样本相对较多。



作出预测

决策树是怎样作出预测的呢?我们的样本从根节点开始,跟着决策树分支的分叉顺序走到叶节点。叶节点是那一类,就预测那一类。每条路径构成了作出预测的规则。


在右边可视化图中,每一个样本都会流穿于决策树的决策规则而被最终分类。

这些数据叫做训练数据,因为决策树模型是是使用它们训练出来的。


决策树分类训练数据时的准确度当然是100%,因为很显然的原因是这棵决策树的模型原本就是从这些数据里训练出来的。


面对现实

训练数据分类成功并不代表什么,真正的考验是要能对好从未见过的数据样本进行分类。


为了测试决策树的好坏,我们要用一些没有用过的数据进行分类实验。我们把这些没有用过的数据叫做测试数据(test data)。


如果我们的决策树够好的话,它在训练数据和测试数据的分类表现应该差不多。


这样看,我们的决策树就不算是做得很好了。


这些错误来自过拟合(overfitting)训练数据。因为我们的决策树把每一个训练样本中的每一点的细微差距,无论大小,全都作为了分界条件,甚至包括了一些实际上无关的信息。

过拟合是机器学习基本概念中的一部分,在下一篇文章我们会多加探讨



概括

  1. 机器学习运用统计学习的方法,利用计算机揭示出数据里的分类边界,从而作出精确的预测。
  2. 决策树算法是机器学习算法中的一种。决策树使用一系列的if-else规则作为判断边界,找出数据中的规律,从而做出预测。
  3. 数据内不是每一点的细微差距都重要的。在训练机器学习模型时,必须注意过拟合问题。要防止过拟合,可以用一些没有使用过数据来测试,从而根据效果看看我们的模型是否过拟合。

下一篇预告

在下一篇文章我们将会探讨过拟合的挑战,还有过拟合跟机器学习里其他课题的基础关系。

有问题或意见吗?请不防到Twitter联络我们 @r2d3us 或电邮至 team@r2d3.us.

还要多谢小熊猫 (网站, Twitter) 同学翻译本文的简体中文版。 如果大家想了解更多关于机器学习的话,千万不要错过林教授的Coursera机器学习线上课程和他的著作Learning From Data (从数据内学习)


Follow us on Twitter...

...or Facebook...

图解机器学习

Posted by R2D3 on Facebook

...or keep in touch with email

Posts from R2D3.us


Footnotes

  1. 机器学习的概念在几门不同的学科内都有自主开发(例如计算机科学Computer Science,统计学Statisitcs,工程学Engineering,心理学Psychology,等等)。所以有许多不同的专门用词。
  2. 想认识更多关于计算最佳分节点算法程式的话,可以在网络搜索'基尼系数'(Gini Index)或'交叉熵'(Cross Entropy)。
  3. 电脑适合应用统计学习技巧的其中一个原因是它们可以极速不懈地执行不断重复的程式。
  4. 这计算程式是称为贪婪的。因为在寻找分节时,程式只会看上一个分节点传下来局部的数据内计算下一个分节点。
  5. 把鼠标徘徊在样本点子上可以显示那样本走的路径。
  6. 预告:下篇讲解偏性与方差的平衡。