首页 > 编程知识 正文

随机森林案例,随机森林概念

时间:2023-05-03 05:17:44 阅读:153194 作者:1456

随机森林是通过集成学习的思想来集成多棵树的算法,其基本单位是决策树,其本质是机器学习的一大分支——集成学习(Ensemble Learning )方法。 随机森林的名称有“随机”和“森林”两个关键字。 “森”我们很理解。 一棵树被称为树,成百上千棵树被称为森林。 这样的比喻还是很贴切的,其实这也是随机森林主要思想——综合思想的体现。

其实直观的解释是,假设每个决策树都是一个分类器,并且当前都是针对分类问题的,那么对于一个输入样本,n棵树有n个分类结果。 随机森林综合所有分类投票结果,指定投票次数最多的类别作为最终输出是最简单的Bagging思想。

简单地说,随机森林建立多个决策树,将它们合并,得到更准确稳定的预测。 随机森林的一个主要优点是它可以同时用于分类和回归问题。 这些问题构成了当今大多数机器学习系统需要面对的问题。

随机森林的相关基础知识

随机森林看起来很理解,但要完全理解其工作原理,需要很多机器学习方面的基础知识。 文中,我们简单谈谈,不一一赘述,如果同学对相关知识了解不多,可以参考其他博友的相关博文或文献。

1 )信息、熵与信息增益概念

这三个基本概念是决策树的基本概念,是决策树使用特征进行分类时确定特征选择顺序的依据。 理解了它们,也就大致知道了决策树。

引用香农的话,信息是为了消除随机的不确定性。 当然这句话很经典,但还是很难分辨这种东西是什么样的,不同的地方所指的东西可能也不一样。 在机器学习的决策树中,如果能将被分类的事物的集合分为多个类的话,某一类(xi )的信息可以定义如下

I(x )表示随机变量的信息,p ) xi )表示xi发生时的概率。

熵用于测量不确定性,熵越大,X=xi的不确定性越大,反之则越小。 在机器学习中的分类问题中,熵越大,该类的不确定性越大,反而越小。

信息增益是决策树算法中选择特征的指标,信息增益越大,该特征的选择性越好。

这方面的内容不再详述,感兴趣的同学可以看到信息熵信息增益这篇博文。

2 )决策树

决策树是树结构,每个内部节点表示属性测试,每个分支表示测试输出,每个叶节点表示类别。 常用的决策树算法为C4.5、ID3、CART。

3 )整合学习

综合学习通过构建几种模型组合而成,解决单一的预测问题。 其结构是生成多个分类器/模型,分别独立学习和预测。 优于任何单一分类预测,因为这些预测最终会合并为单一预测。

随机森林是集成学习的子类,根据决策树的投票选择决定最后的分类结果。 在这里,您可以找到在python中实现集成学习的文档: Scikit学习文档。

随机森林的生成

每个树都根据以下规则生成:

1 )如果训练集大小为n,则从每树随机返回的训练集中提取n个训练样本作为该树的训练集(这种采样方式称为bootstrap sample方法);

从这里可以看出,每棵树的训练集都不一样,其中包含重复的训练样本(了解这一点很重要)。

为什么需要随机抽样训练集?

如果不进行随机采样,任何树的训练集都相同,则最终训练树的分类结果也完全相同,否则完全不需要bagging

为什么需要对返回地进行采样?

如果没有返回采样,则每棵树的训练样本不同,没有交集。 这样的话,每棵树就“有偏向”,绝对是“单方面的”。 (当然,这样说可能是错误的) )也就是说,每棵树在训练上有很大的差异。 随机森林的最后分类依赖于对多棵树(弱分类器)的投票,因为该投票应该是“求同存异”,所以使用完全不同的训练集对每个树进行训练对最终的分类结果没有帮助。 这和“盲人摸象”一样。

2 )如果每个样本的特征维数为m,则指定常数mM,随机从m个特征中选出m个特征子集,在树每次分裂时,从这m个特征中选出最优的一个;

3 )所有的树都最大限度地生长,没有剪枝的过程。

首先提到的随机森林的“随机性”是指这里的两个随机性。 两种随机性的引入对随机森林的分类性能至关重要。 通过这些部署,随机森林很难陷入过拟合,具有很好的抗干扰能力。 例如,我对默认值不敏感。

随机森林分类效应(错误率)与两个因素有关。

森林中任意两棵树的相关性:相关性越大,错误率越大;

森林内每棵树的分类能力:每棵树的分类能力越高,森林总体错误率越低。

减小特征选择个数m时,树的相关性和分类能力也相应降低; 增大m时,两者也变大。 所以关键的问题是如何选择最优的m (或者范围),这也是随机森林的唯一参数

随机森林工作原理解释的一个简单例子

*说明: **如何在现有训练集的基础上生成对应的随机森林,利用存在随机森林的人的年份

龄(Age)、性别(Gender)、教育情况(Highest Educational Qualification)、工作领域(Industry)以及住宅地(Residence)共5个字段来预测他的收入层次。
收入层次 :
  Band 1 : Below $40,000    
  Band 2: $40,000 – 150,000    
  Band 3: More than $150,000
随机森林中每一棵树都可以看做是一棵CART(分类回归树),这里假设森林中有5棵CART树,总特征个数N=5,我们取m=1(这里假设每个CART树对应一个不同的特征)。
CART 1 : Variable Age

CART 2 : Variable Gender

CART 3 : Variable Education

CART 4 : Variable Residence

CART 5 : Variable Industry

我们要预测的某个人的信息如下:  
1. Age : 35 years ; 2. Gender : Male ; 3. Highest Educational Qualification : Diploma holder; 4. Industry : Manufacturing; 5. Residence : Metro.  
根据这五棵CART树的分类结果,我们可以针对这个人的信息建立收入层次的分布情况:


最后,我们得出结论,这个人的收入层次70%是一等,大约24%为二等,6%为三等,所以最终认定该人属于一等收入层次(小于$40,000)

应用场景
随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。

随机森林算法可被用于很多不同的领域,如银行,股票市场,医药和电子商务。 在银行领域,它通常被用来检测那些比hldmg更高频率使用银行服务的客户,并及时偿还他们的债务。 同时,它也会被用来检测那些想诈骗银行的客户。 在金融领域,它可用于预测未来股票的趋势。 在医疗保健领域,它可用于识别药品成分的正确组合,分析患者的病史以识别疾病。 除此之外,在电子商务领域中,随机森林可以被用来确定客户是否真的喜欢某个产品。

优缺点分析
随机森林的一个优点是它可以用于回归和分类任务,并且很容易查看模型的输入特征的相对重要性。

随机森林同时也被认为是一种非常方便且易于使用的算法,因为它是默认的超参数通常会产生一个很好的预测结果。超参数的数量也不是那么多,而且它们所代表的含义直观易懂。

机器学习中的一个重大问题是过拟合,但大多数情况下这对于随机森林分类器而言不会那么容易出现。因为只要森林中有足够多的树,分类器就不会过度拟合模型。随机森林的主要限制在于使用大量的树会使算法变得很慢,并且无法做到实时预测。一般而言,这些算法训练速度很快,预测十分缓慢。越准确的预测需要越多的树,这将导致模型越慢。在大多数现实世界的应用中,随机森林算法已经足够快,但肯定会遇到实时性要求很高的情况,那就只能首选其他方法。

随机森林是一个比较优秀的模型,它对于多维特征的数据集分类有很高的效率,还可以做特征重要性的选择。运行效率和准确率较高,实现起来也比较简单。但是在数据噪音比较大的情况下会过拟合。

重要的超参数

提高模型预测准确性:
首先,“n_estimators”超参数表示算法在进行最大投票或采取预测平均值之前建立的树数。 一般来说,树的数量越多,性能越好,预测也越稳定,但这也会减慢计算速度。
另一个重要的超参数是“max_features”,它表示随机森林在单个树中可拥有的特征最大数量。 Sklearn提供了几个选项,在他们的文档中有描述:
最后一个重要的超参数是“min_sample_leaf”,正如其名称所述,这决定了叶子的数量。
加快模型计算速度:
“n_jobs”超参数表示引擎允许使用处理器的数量。 若值为1,则只能使用一个处理器。 值为-1则表示没有限制。
“random_state”,表示随机数种子,保证模型的输出具有可复制性。 当它被赋于一个指定值,且模型训练具有相同的参数和相同的训练数据时,该模型将始终产生相同的结果。
最后,还有一个“oob_score”(也称为oob采样),它是一种随机森林交叉验证方法。 在这个抽样中,大约三分之一的数据不用于模型训练,而用来评估模型的性能。这些样本被称为袋外样本。它与留一法交叉验证方法非常相似,但几乎没有附加的计算负担。

决策树与随机森林的区别
正如我先前提到的,随机森林是决策树的集合,但仍有一些区别。

如果您将带有特征和标签的训练数据集输入到决策树中,它将制定一些规则集,用于预测。
例如,如果您想预测某人是否会点击在线广告,可以收集该广告的过去点击人员以及能够描述其做决定的特征。一旦你将这些特征和标签放入决策树中,它会生成节点和一些规则,然后你就可以预测广告是否会被点击。但决策树通常通过计算信息增益和基尼指数来生成节点和规则时,相比之下,随机森林则是随机的。
另一个区别是“深度”决策树往往会遭遇过拟合问题。而随机森林则可以通过创建随机的特征子集并使用这些子集构建较小的树,随后组成子树,这种方法可以防止大部分情况的过拟合。要注意的是,这同时会使得计算速度变慢,并取决于随机森林构建的树数。

总 结
随机森林是一种很好的算法,适合在模型开发过程的早期进行训练,了解它的工作原理,并且由于其简易性,很难构建出“糟糕”的随机森林。 如果您需要在短时间内开发模型,随机森林会是一个不错的选择。 最重要的是,它为你选择的特征提供了一个很好的重要性表示。
随机森林在性能方面也很难被击败。 当然,没有最好只有更好,你总能找到一个性能更好的模型,比如神经网络,但这类模型通常需要更多的时间来开发。 最重要的是,随机森林同时可以处理许多不同属性的特征类型,如二元的,类别的和数值的。总的来说,随机森林是一个(相对大部分而言)快速,简单且灵活的工具,尽管它存在一定的局限性。

二、随机森林
尽管有剪枝等等方法,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的缺点。(可以理解成三个臭皮匠顶过zqdsb)
而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3C4.5CARTSVMLOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。

随机森林在bagging的基础上更进一步:

样本的随机:从样本集中用Bootstrap随机选取n个样本特征的随机:从所有属性中随机选取K个属性,选择最佳分割属性作为节点建立CART决策树(泛化的理解,这里面也可以是其他类型的分类器,比如SVM、Logistics)重复以上两步m次,即建立了m棵CART决策树这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)

关于调参:
1.如何选取K,可以考虑有N个属性,取K=根号N
2.最大深度(不超过8层)
3.棵数
4.最小分裂样本树
5.类别比例

决策树的重要参数都是防止过拟合的. 有2个参数是关键,min_samples_leaf 这个sklearn的默认值是1,经验上必须大于100,如果一个节点都没有100个样本支持他的决策,一般都被认为是过拟合;max_depth 这个参数控制树的规模。决策树是一个非常直观的机器学习方法。一般我们都会把它的决策树结构打印出来观察,如果深度太深对于我们的理解是有难度的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。