随机森林
Posted kexinxin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机森林相关的知识,希望对你有一定的参考价值。
随机森林
个体与集成
通过聚集多个分类器的预测来提高分类准确率,这些技术称为组合(ensemble)或者分类器组合(classifier combination)方法。组合方法由训练数据构建一组基分类器(base classifier),然后通过对每个基分类器的预测进行投票来进行分类。
考虑一个简单的例子:在二分类任务中,假定三个分类器在三个测试样本上的表现如下图所示
其中√表示分类正确,×表示分类错误,组合学习的结果通过投票法(voting)产生,即"少数服从多数"。在图8.2(a)中,每个分类器都只有66%的精度,但集成学习却达到了100%,在图8.2(b)中,三个分类器没有差别,集成之后性能没有提高,在图8.2(c)中,每个分类器的精度都只有33.3%集成之后的结果变得更糟。要获得好的集成,个体学习器应"好而不同",即个体学习器要有一定的"准确性",即学习器不能太坏,并且要有"多样性",即学习器之间具有差异。
根据个体想学习器的生成方式,目前的集成学习方法大致可以分为两大类,即个体学习器间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系,可同时生成的并行优化方法;前者的代表是Boosting,后者的代表是Bagging和"随机深林"(Random Forest)。
欲得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立。虽然"独立"在现实任务中无法做到,但可以设法使基学习器尽可能具有较大的差异。给定一个训练数据集,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器。这样,由于训练数据不同,我们获得的基学习器具有比较大的差异。然而,为获得好的集成,我们同时还希望个体学习器不能太差。如果采样出来的每个子集都完全不同,则每个基学习器只用到了一小部分训练数据。为了解决这个问题,我们可以考虑使用相互有交叠的采样子集。
装袋(bagging)
装袋(bagging)又称自助聚集(boot strap aggregating),是一种根据均匀概率分布从数据集中重复抽样(有放回的)的技术。每个自助样本集都和原数据集一样大。由于抽样过程是有放回的,因此一些样本可能在同一个训练数据集中出现多次而其他一些却可能被忽略。一般来说,自助样本大约包含63%的原训练数据,因为每一个样本抽到到的概率为
,如果N足够大,这个概率将收敛于1-1/e=0.632。装袋的基本过程概括如下,训练K个分类器后,测试样本被指派到得票最高的类。
决策树
决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。决策树学习通常包括3个步骤:特征选择,决策树的生成和决策树的修剪。
分类决策树模式是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子节点对应着该特征的一个取值,如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶节点的类中。
决策树学习,假设给定训练数据集
其中,为输入实例(特征向量),n为特征个数,为类标记,i=1,2,3,……,N, N为样本容量。学习的目标是根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。
决策树学习本质是从训练数据集中归纳出一组分类规则,与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个也没有。基于特征空间划分的类的条件概率模型有无穷多个,我们选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题。这样得到的决策树是次最优(sub-optimal)的。
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程,这一过程对应着对特征空间的划分,也对应着决策树的构建。
以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象,我们需要对已生成的树自下而上进行减枝,将树变得简单,从而使他具有更好的防泛化能力。如果特征数量很多,也可以在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征。决策树学习算法包含特征选择,决策树的生成与决策树的减枝过程。决策树的生成对应于模型的局部选择,决策树的减枝对应于模型的全局选择。决策树的生成只考虑局部最优,相反地,决策树的减枝则考虑全局最优。
特征选择:特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率,如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。通常特征的选择是信息增益或信息增益比。
ID3算法:ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征。递归地构建决策树。具体方法是:从根节点(root node)开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。ID3相当于用极大似然法进行概率模型的选择。
随机森林
随机森林(Random Forest)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前节点的属性集合(假设有d个属性)中选择一个最优属性,而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建与传统决策树相同;若令k=1则是随机选择一个属性用于划分;一般情况下,推荐值
以上是关于随机森林的主要内容,如果未能解决你的问题,请参考以下文章