决策树与随机森林

Posted 麦好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了决策树与随机森林相关的知识,希望对你有一定的参考价值。

决策树是一个无参有监督的机器学习算法。Quinlan提出了ID3决策树算法,Breiman等人提出了CART决策树算法,1993年Quinlan又提出了C4.5决策树算法。一般而言,决策树的建树最常见的是自下而上的方式。一个给定的数据集被分裂特征分成左和右子集,然后通过一个评价标准来选择使平均不确定性降低最高的分裂方式,将数据集相应地划分为两个子节点,并通过使该节点成为两个新创建的子节点的父节点来建树。整个建树过程是递归迭代进行的,直到达到停止条件,例如达到最大树深度或最小叶尺寸。

决策树的一个关键问题是节点分裂特征的选择。至于分裂标准,一系列论文已经分析了它的重要性。他们证明了不同的分裂标准对决策树的泛化误差有很大的影响;因此,根据不同的划分标准,提出了大量的决策树算法。例如,ID3算法基于香农熵;C4.5算法基于增益比;而CART算法基于Gini不纯度。然而,在这些算法中,没有一个算法总能在各种数据集上得到最好的结果。实际上,这反映了这种分类标准缺乏对数据集适应性的一个缺点。因此,已经有学者提出自适应熵估计的替代方法,但是它们的统计熵估计过于复杂,使决策树的简单性和可理解性丧失。最近,Tsallis熵分裂准则被提出来统一通用分裂准则,即统一了香农熵、增益比和Gini不纯度。

决策树不需要先验知识,相比神经网络等方法更容易解释,但是由于决策树在递归的过程中,可能会过度分割样本空间,最终建立的决策树过于复杂,导致过拟合的问题,使得分类精度降低。为避免过拟合问题,需要对决策树进行剪枝,根据剪枝顺序不同,有事先剪枝方法和事后剪枝方法,但都会增加算法的复杂性。


1.集成多个分类器来提高预测性能的方法应运而生,这就是集成学习算法(Ensemble Learning)。Bagging(并行)和Boosting(串行)是两种常见的集成学习方法,这两者的区别在于集成的方式是并行还是串行。随机森林算法(Random Forests)是Bagging集成方法里最具有代表性的一个算法。
随机森林实际上是一种特殊的bagging方法,它将决策树用作bagging中的模型。首先,用bootstrap方法生成m个训练集,然后,对于每个训练集,构造一颗决策树,在节点找特征进行分裂的时候,并不是对所有特征找到能使得指标(如信息增益)最大的,而是在特征中随机抽取一部分特征,在抽到的特征中间找到最优解,应用于节点,进行分裂。随机森林的方法由于有了bagging,也就是集成的思想在,实际上相当于对于样本和特征都进行了采样(如果把训练数据看成矩阵,就像实际中常见的那样,那么就是一个行和列都进行采样的过程),所以可以避免过拟合。
将要分类的样本带入多个决策树分类器,然后以少数服从多数的原则,表决出这个样本的最终分类类型。
设有N个样本,M个变量(维度)个数,该算法具体流程如下:

1) 确定一个值m,它用来表示每个树分类器选取多少个变量。(注意这也是随机的体现之一)
2)从数据集中有放回的抽取 k 个样本集,用它们创建 k 个树分类器。另外还伴随生成了 k 个袋外数据,用来后面做检测。
3)输入待分类样本之后,每个树分类器都会对它进行分类,然后所有分类器按照少数服从多数原则,确定分类结果。
2.自助法(bootstrap),这个奇怪的名字来源于文学作品 The Adventures of Baron Munchausen(吹牛大王历险记),这个作品中的一个角色用提着自己鞋带的方法把自己从湖底下提了上来。因此采用意译的方式,叫做自助法。自助法顾名思义,是这样一种方法:即从样本自身中再生成很多可用的同等规模的新样本,从自己中产生和自己类似的,所以叫做自助,即不借助其他样本数据。自助法的具体含义如下:

如果我们有个大小为N的样本,我们希望从中得到m个大小为N的样本用来训练。那么我们可以这样做:首先,在N个样本里随机抽出一个样本x1,然后记下来,放回去,再抽出一个x2,… ,这样重复N次,即可得到N的新样本,这个新样本里可能有重复的。重复m次,就得到了m个这样的样本。实际上就是一个有放回的随机抽样问题。每一个样本在每一次抽的时候有同样的概率(1/N)被抽中。

3.bagging的名称来源于 ( Bootstrap AGGregatING),意思是自助抽样集成,这种方法将训练集分成m个新的训练集,然后在每个新训练集上构建一个模型,各自不相干,最后预测时我们将这个m个模型的结果进行整合,得到最终结果。
4.,重点要理解“随机”这两个关键字,表现为以下两个方面:

(1)数据的随机性化

(2)待选特征的随机化

使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。
5.构建流程
采取有放回的抽样方式 构造子数据集,保证不同子集之间的数量级一样(不同子集/同一子集 之间的元素可以重复)

利用子数据集来构建子决策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。

然后统计子决策树的投票结果,得到最终的分类 就是 随机森林的输出结果。

具体构建过程如下:

(1)从样本集中用 Bootstrap采样选出n个样本;

(2)从所有属性中随机选择K个属性,选择出最佳分割属性作为节点创建决策树

(3)重复以上两步m次,即建立m棵决策树

(4)这m个决策树形成随机森林,通过投票表决结果决定数据属于那一类

注意:(有放回的准确率在:70% 以上, 无放回的准确率在:60% 以上)

如下图,假设随机森林中有3棵子决策树,2棵子树的分类结果是A类,1棵子树的分类结果是B类,那么随机森林的分类结果就是A类。

待选特征的随机化过程

(1)子树从所有的待选特征中随机选取一定的特征。

(2)在选取的特征中选取最优的特征。

下图中,蓝色的方块代表所有可以被选择的特征,也就是目前的待选特征;黄色的方块是分裂特征。 左边是一棵决策树的特征选取过程,通过在待选特征中选取最优的分裂特征完成分裂。 右边是一个随机森林中的子树的特征选取过程。

以上内容节选网络搜索,不一一注明转载网址

以上是关于决策树与随机森林的主要内容,如果未能解决你的问题,请参考以下文章

决策树、随机森林

决策树与随机森林

08 决策树与随机森林

初始决策树与随机森林

决策树与随机森林

决策树与随机森林