随机森林是最流行、最强大的机器学习算法之一。它是机器学习集成算法中的一种,可称之为自助集成(Bootstrap Aggregation)或袋装法(Bagging)。
在这篇文章中,您将学习使用袋装集成算法和随机森林算法建立预测模型。阅读这篇文章后,您将学到:
这篇文章是为开发人员编写的,不需要统计学或数学背景。这篇文章重点介绍了该算法的工作原理以及如何将其用于预测建模问题。
如果您有任何问题,请留下评论,我会尽我所能来回答。
让我们开始吧。
机器学习集成算法中的袋装法和随机森林。
照片由Nicholas A. Tonelli提供,一些权利保留。
在我们学习袋装法之前,让我们快速了解一下自助法这个重要的基础技术。
自助法是一种用于从数据样本中估计某个量的强大的统计方法。我们假设这个量是描述性的统计数据,如平均值或标准差。这样有助于我们理解它。
假设我们有一个100个样本值(x),我们希望估计样本均值。
我们可以直接从样本中计算均值,如下所示:
mean(x)= 1/100 * sum(x)
我们的样本很小,这个均值是不正确的。我们可以使用自助法来进行更准确的估计:
例如,假设我们共进行3次采样,得到了每个子样本的平均值分别为2.3,4.5和3.3。取这些数据的平均值作为原数据的均值,可得3.367。
这个方法也可以用来估计其他的统计量,如标准差。它甚至可以估计机器学习算法中的量,如算法学到的系数。
自助集成(简称袋装法)是一种简单而强大的集成算法。
集成算法是一种将来自多个机器学习算法的预测值结合在一起的技术,以比任何单独的模型做出更准确的预测。
自助集成是一个通用的算法,可以用来减少方差较大的算法的方差。具有高方差的算法之一是决策树,比如分类和回归树(CART)。
决策树对它所接受的具体数据很敏感。如果训练数据改变(哪怕是使用训练数据的子集),则所得到的决策树可能是完全不同的,因而预测结果可能是完全不同的。
将自助算法应用于高方差的机器学习算法(典型的如决策树),即成为袋装法。
假设我们的样本数据集有1000个值(x)。我们在CART算法中运用Bagging,如下所示。
例如,如果我们训练了5个袋装决策树,它们分别对输入样本进行了以下类别预测:蓝色,蓝色,红色,蓝色和红色,我们将采用出现次数最多的预测结果,即蓝色。
使用袋装决策树时,我们不太忧虑个别决策树的过拟合现象。因此,可以加深决策树(例如,在树的每个叶节点处的使用很少的训练样本),且可以不修剪树。这一做法也将提高效率。这些树将具有高的方差、低的偏差。这是袋装法产生的子模型的重要特征。
袋装决策树的参数仅有样本数量及决策树的数量。后者可以这样确定:在每次运行之后,增加下一次使用的决策树数量,直到精度不再有明显改进(例如在交叉验证测试中)。扩大模型规模会增加训练耗时,但可以更有效地避免过拟合。
就像决策树本身一样,袋装法可以用于分类和回归问题。
随机森林是对袋装决策树的改进。
像CART这样的决策树存在一个问题,那就是他们贪婪。他们使用贪婪算法来决定分割哪个变量可以最大程度地减少错误。因此,即使使用袋装法,各个决策树之间仍可能具有很高的结构相似性,并在预测中有很高的相关性。
如果来自子模型的预测是不相关的或者至多是弱相关的,那么集成结果才会更好。
随机森林改变了学习子树的方法,使得各个子树的预测结果具有较低的相关性。
这是一个简单的调整。在CART中,当选择分割点时,允许学习算法查看所有变量种类和所有变量值,以便选择最佳分割点。随机森林算法改变这一点。它让学习算法可查看的变量局限于一个随机子集内。
随机森林算法必需参数之一是在每个分割点可搜索的特征的数量。你可以尝试不同的值,并使用交叉验证来调整它。
其中,m是在分割点可搜索的特征的数量,这些特征是随机选取的;p是输入变量的总数量。例如,如果一个分类问题的数据集有25个变量,那么:
自助法只选取样本的子集,因此会有一些样本未被选到。这些样本被称为袋外样本(Out-Of-Bag)或OOB。
各个模型在这些被排除的袋外样本上的准确率的平均值,可以用于估计袋装模型的精度。这种估计通常被称为OOB估计。
将这个性能指标作为测试误差估计是可靠的,而且,它可以与交叉验证估计联系在一起。
构造袋装决策树时,我们可以计算每个分割点处的变量可降低的误差函数值。
在回归问题中,该值可能是平方误差和;在分类问题中,该值可能是基尼系数。
把所有的决策树的错误下降值求平均,即可作为每个输入变量重要性的估计。当变量被选择时,产生的下降越大,则重要性越大。
重要性估计可以帮助识别出那些可能与问题最相关或最不相关的输入变量的子集;在特征选择实验中,它可以指导你去除哪些特征。
袋装法是大多数机器学习教程都会涵盖的简单技术。下面列出了一些例子。
在这篇文章中,您学习了袋装法这个机器学习集成算法和它的常用变体随机森林。您掌握了: