前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习集成算法——袋装法和随机森林

机器学习集成算法——袋装法和随机森林

作者头像
花落花飞去
发布2018-02-02 11:09:16
4.3K0
发布2018-02-02 11:09:16
举报
文章被收录于专栏:人工智能人工智能

随机森林是最流行、最强大的机器学习算法之一。它是机器学习集成算法中的一种,可称之为自助集成(Bootstrap Aggregation)或袋装法(Bagging)。

在这篇文章中,您将学习使用袋装集成算法和随机森林算法建立预测模型。阅读这篇文章后,您将学到:

  • 用自助法从样本中估计统计量。
  • 用自助集成算法从单个训练数据集中训练多个不同的模型。
  • 强大的分类器——随机森林算法。它只对袋装法进行小小的调整。

这篇文章是为开发人员编写的,不需要统计学或数学背景。这篇文章重点介绍了该算法的工作原理以及如何将其用于预测建模问题。

如果您有任何问题,请留下评论,我会尽我所能来回答。

让我们开始吧。

基于Bagging和随机森林集成的机器学习算法
基于Bagging和随机森林集成的机器学习算法

机器学习集成算法中的袋装法和随机森林。

照片由Nicholas A. Tonelli提供,一些权利保留。

自助法

在我们学习袋装法之前,让我们快速了解一下自助法这个重要的基础技术。

自助法是一种用于从数据样本中估计某个量的强大的统计方法。我们假设这个量是描述性的统计数据,如平均值或标准差。这样有助于我们理解它。

假设我们有一个100个样本值(x),我们希望估计样本均值。

我们可以直接从样本中计算均值,如下所示:

mean(x)= 1/100 * sum(x)

我们的样本很小,这个均值是不正确的。我们可以使用自助法来进行更准确的估计:

  1. 多次(如1000次)从数据集中随机采样子样本,各次采样之间是有放回的(可以多次选择相同的值)。
  2. 计算每个子样本的均值。
  3. 计算上一步产生的所有均值的平均值,作为最终结果。

例如,假设我们共进行3次采样,得到了每个子样本的平均值分别为2.3,4.5和3.3。取这些数据的平均值作为原数据的均值,可得3.367。

这个方法也可以用来估计其他的统计量,如标准差。它甚至可以估计机器学习算法中的量,如算法学到的系数。

自助集成(袋装法)

自助集成(简称袋装法)是一种简单而强大的集成算法。

集成算法是一种将来自多个机器学习算法的预测值结合在一起的技术,以比任何单独的模型做出更准确的预测。

自助集成是一个通用的算法,可以用来减少方差较大的算法的方差。具有高方差的算法之一是决策树,比如分类和回归树(CART)。

决策树对它所接受的具体数据很敏感。如果训练数据改变(哪怕是使用训练数据的子集),则所得到的决策树可能是完全不同的,因而预测结果可能是完全不同的。

将自助算法应用于高方差的机器学习算法(典型的如决策树),即成为袋装法。

假设我们的样本数据集有1000个值(x)。我们在CART算法中运用Bagging,如下所示。

  1. 多次(如100次)从数据集中随机采样子样本。各次采集之间是有放回的。
  2. 在每个子样本上训练一个CART模型。
  3. 给定一个新的数据集,计算每个模型的预测值的平均值。

例如,如果我们训练了5个袋装决策树,它们分别对输入样本进行了以下类别预测:蓝色,蓝色,红色,蓝色和红色,我们将采用出现次数最多的预测结果,即蓝色。

使用袋装决策树时,我们不太忧虑个别决策树的过拟合现象。因此,可以加深决策树(例如,在树的每个叶节点处的使用很少的训练样本),且可以不修剪树。这一做法也将提高效率。这些树将具有高的方差、低的偏差。这是袋装法产生的子模型的重要特征。

袋装决策树的参数仅有样本数量及决策树的数量。后者可以这样确定:在每次运行之后,增加下一次使用的决策树数量,直到精度不再有明显改进(例如在交叉验证测试中)。扩大模型规模会增加训练耗时,但可以更有效地避免过拟合。

就像决策树本身一样,袋装法可以用于分类和回归问题。

随机森林

随机森林是对袋装决策树的改进。

像CART这样的决策树存在一个问题,那就是他们贪婪。他们使用贪婪算法来决定分割哪个变量可以最大程度地减少错误。因此,即使使用袋装法,各个决策树之间仍可能具有很高的结构相似性,并在预测中有很高的相关性。

如果来自子模型的预测是不相关的或者至多是弱相关的,那么集成结果才会更好。

随机森林改变了学习子树的方法,使得各个子树的预测结果具有较低的相关性。

这是一个简单的调整。在CART中,当选择分割点时,允许学习算法查看所有变量种类和所有变量值,以便选择最佳分割点。随机森林算法改变这一点。它让学习算法可查看的变量局限于一个随机子集内。

随机森林算法必需参数之一是在每个分割点可搜索的特征的数量。你可以尝试不同的值,并使用交叉验证来调整它。

  • 对于分类,一个好的默认值是:m = sqrt(p)
  • 对于回归,一个好的默认值是:m = p / 3

其中,m是在分割点可搜索的特征的数量,这些特征是随机选取的;p是输入变量的总数量。例如,如果一个分类问题的数据集有25个变量,那么:

  • m = sqrt(25)
  • m = 5

预计表现

自助法只选取样本的子集,因此会有一些样本未被选到。这些样本被称为袋外样本(Out-Of-Bag)或OOB。

各个模型在这些被排除的袋外样本上的准确率的平均值,可以用于估计袋装模型的精度。这种估计通常被称为OOB估计。

将这个性能指标作为测试误差估计是可靠的,而且,它可以与交叉验证估计联系在一起。

变量重要性

构造袋装决策树时,我们可以计算每个分割点处的变量可降低的误差函数值。

在回归问题中,该值可能是平方误差和;在分类问题中,该值可能是基尼系数。

把所有的决策树的错误下降值求平均,即可作为每个输入变量重要性的估计。当变量被选择时,产生的下降越大,则重要性越大。

重要性估计可以帮助识别出那些可能与问题最相关或最不相关的输入变量的子集;在特征选择实验中,它可以指导你去除哪些特征。

进一步阅读

袋装法是大多数机器学习教程都会涵盖的简单技术。下面列出了一些例子。

总结

在这篇文章中,您学习了袋装法这个机器学习集成算法和它的常用变体随机森林。您掌握了:

  • 如何从一个数据样本估计统计量。
  • 如何使用袋装法集成来自多个高方差模型的预测。
  • 如何在袋装时调整决策树的结构以降低各预测间的相关性,即随机森林。
评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自助法
  • 自助集成(袋装法)
  • 随机森林
  • 预计表现
  • 变量重要性
  • 进一步阅读
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档