【机器学习基础】随机森林算法

引入

我们回顾一下之前学习的两个算法,Bagging算法中,通过bootstrapping得到不一样的数据,通过这些数据送到一个基本算法之后,得到不同的g,最后对这些g取平均得到G;决策树算法中,通过递归方式建立子树,最终得到一棵完整的树。

这两种算法都有其鲜明的特点,决策树对于不同的数据相对会敏感一些,即其算法的variance很大,而Bagging的特点是通过投票和平均的方式来降低variance的效果。如果将这两种方法结合起来,就是该文要介绍的随机森林,random forest。

1. 随机森林算法

随机森立算法中的“随机”一词是指通过Bagging中的bootstrapping得到不同的数据,进而体现出来的随机性,而得到这笔数据用来送进CART算法训练得到一棵树,最后将所得的树做平均得到最终结果。

并行计算的可能性:随机森林算法从Bagging过程中可以分配到不同的计算机中进行计算,每台计算机可以独立学习一棵树,不同的树之间没有任何依赖关系。这使得Bagging过程很容易实现并行化。

2. 特征投影(Feature Projection)

在Bagging算法中,通过bootstrap在原来的数据中进行抽样,来得到不同的数据集,从而产生不同的g。

在随机森林的算法中,除了在数据集中做抽取之外,还可以在特征这一角度进行抽取。举个例子,如果事先我们有100个特征,现在我们可以抽取10个特征来训练一棵树,这样的方式我们也可以得到很不一样的树,其对于分类的标准显然也很不一样。

这种特征抽取的方式相当于在原来特征的100个维度中,随机选取10个维度,这等效于一个特征转换,这个过程中,从100维度到10个维度的转换中,相当于作了低维度的投影(Projection)。

得到的特征实际上是原始特征的随机子集,这使得生成模型过程中的效率也大大提高了。

3. 特征扩展(Feature Expansion)

上面介绍的特征投影等效于对原来的特征向量左乘一个投影矩阵Φ(x) = P·x,得到的特征抽样是随机选取的原始特征。现在我们可以尝试更加复杂、有能力的投影方式。

更加有能力的特征投影就是不再单一选取单一维度的特征,而是将多个维度的特征进行组合,得到新的一维的特征,这称为特征扩展。

4. Out-Of-Bag Estimate

在bootstrapping的过程中,有些数据可能没有被选择,这些数据称为out-of-bag(OOB) examples,对于训练每一个gt,其中用“*”标注的数据即是gt的OOB examples。

下面的公式是经过N’次选择之后没有被选择的数据,大约有(1/e)*N多的数据没有被选择到,即大约有三分之一的数据没有被选择,这些数据由于没有用来训练模型,故可以用于模型的验证。

在随机森林的算法中,我们不太需要使用OOB数据来验证每个g的性能,因为即使g的能力很差,最终进行平均得到的G的性能也可能会很好。但这些OOB数据可以用来验证G的性能。

上图中,(xN,yN)这一个数据由于没有用于g2,g3,gT的训练数据,故可以用来作为它们的验证数据。所以(xN,yN)可以作为G-的验证数据,其中G-(x)=average(g2, g3, gT)

下面给出了OOB Error(Eoob)的公式,G的OOB Error的估算是通过不同的G-来平均得到的,所以,在bootstrap的过程就可以自己去验证模型的性能好坏,不需要单独划分一块数据作为专门的验证数据。

下面是随机森林算法中使用OOB Error进行验证的方法:

5. 特征选择(Feature Selection)

接下来要介绍的特征选择,其目的主要是使用程序来自动选择需要的特征,而将冗余的、不相关的特征忽略掉。

优点:特征选择由于舍去了不必要的特征,使得模型复杂度大大降低,可以简化假设,缩短预测时间;同时,舍去了特征的噪声,可以提高模型的泛化能力,使得模型不容易对噪声过拟合;最后,由于选择出来的特征具有很好的物理意义,其结果可以作很好的解释。

缺点:特征的选择计算量大;如果选出来的特征是噪声的话,可能会导致过拟合;如果选择了噪声特征,得到的解释可能只是数据之中的关联性,而非因果性。

5.1 Permutation Test

上面说的特征选择是如何选择特征的组合方式的问题,为了解决这个问题,我们暂不考虑特征之间的相关关系,而是为每个特征打一个分数,表示特征的重要性,然后按照重要性进行排序,选择最重要的前K个特征作为选取出来的特征。

由于随机森林算法是一个非线性的模型,我们不能单纯以线性模型中的权重作为衡量特征重要性的标准,所以下面要介绍的称为Permutation Test的方法来判别特征的权重。

Permutation Test的方法是通过将第i个维度特征的所有数据重新的随机调整位置,然后比较一下原始数据和调整之后的数据表现的差距,来评价这个维度的特征是有多么重要。

5.2 在Out-Of-Bag Estimate过程中做Permutation Test

在随机森林中可以用OOB代替验证的过程,为了简化Permutation Test带来的重新进行训练的代价,我们在使用OOB Example(bootstrap过程中没有选取的数据)进行验证的过程中做一些修改,即在验证的时候去进行Permutation Test,而非训练时进行。

在求Eoob(G)时,我们通过G-(xn)来计算,我们在这里将x(n)修改成x(n,i),就可以不用对G进行修改了。

在实际应用中,面对非线性的问题时,可以通过随机森林的方法来进行初步的特征选择。

参考资料

机器学习技法课程,林轩田,台湾大学

转载请注明作者Jason Ding及其出处

GitCafe博客主页(http://jasonding1354.gitcafe.io/)

Github博客主页(http://jasonding1354.github.io/)

CSDN博客(http://blog.csdn.net/jasonding1354)

简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)

Google搜索jasonding1354进入我的博客主页

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-29 20:49:49

【机器学习基础】随机森林算法的相关文章

R语言︱机器学习模型评估方案(以随机森林算法为例)

R语言︱机器学习模型评估方案(以随机森林算法为例) 笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评价模型的方式. 常见的应用在监督学习算法中的是计算平均绝对误差(MAE).平均平方差(MSE).标准平均方差(NMSE)和均值等,这些指标计算简单.容易理解:而稍微复杂的情况下,更多地考虑的是一些高大上的指标,信息熵.复杂度和基尼值等等. 本篇可以用于情感挖

机器学习——随机森林算法及原理

1. 随机森林使用背景 1.1 随机森林定义 随机森林是一种比较新的机器学习模型.经典的机器学习模型是神经网络,有半个多世纪的历史了.神经网络预测精确,但是计算量很大.上世纪八十年代Breiman等人发明分类树的算法(Breiman et al. 1984),通过反复二分数据进行分类或回归,计算量大大降低.2001年Breiman把分类树组合成随机森林(Breiman 2001a),即在变量(列)的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总分类树的结果.随机森林在运算量没有显著提

机器学习——Bagging与随机森林算法及其变种

Bagging算法: 凡解:给定M个数据集,有放回的随机抽取M个数据,假设如此抽取3组,3组数据一定是有重复的,所以先去重.去重后得到3组数据,每组数据量分别是s1,s2,s3,然后三组分别训练组合成一个强模型.如下图: 随机森林算法: 一般用于大规模数据,百万级以上的. 在Bagging算法的基础上,如上面的解释,在去重后得到三组数据,那么再随机抽取三个特征属性,选择最佳分割属性作为节点来创建决策树.可以说是 随机森林=决策树+Bagging 如下图 RF(随机森林)的变种: ExtraTre

web安全之机器学习入门——3.2 决策树与随机森林算法

目录 简介 决策树简单用法 决策树检测P0P3爆破 决策树检测FTP爆破 随机森林检测FTP爆破 简介 决策树和随机森林算法是最常见的分类算法: 决策树,判断的逻辑很多时候和人的思维非常接近. 随机森林算法,利用多棵决策树对样本进行训练并预测的一种分类器,并且其输出的类别是由个别决策树输出的类别的众数决定. 决策树简单用法 使用sklearn自带的iris数据集 # -*- coding: utf-8 -*- from sklearn.datasets import load_iris from

Bagging与随机森林算法原理小结

在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合.本文就对集成学习中Bagging与随机森林算法做一个总结. 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力. 1.  bagging的原理 在集成学习原理小结中,我们给Bagging画了下面一张原理图. 从上图可以看出,

R语言︱决策树族——随机森林算法

笔者寄语:有一篇<有监督学习选择深度学习还是随机森林或支持向量机?>(作者Bio:SebastianRaschka)中提到,在日常机器学习工作或学习中,当我们遇到有监督学习相关问题时,不妨考虑下先用简单的假设空间(简单模型集合),例如线性模型逻辑回归.若效果不好,也即并没达到你的预期或评判效果基准时,再进行下换其他更复杂模型来实验. ---------------------------------------------- 一.随机森林理论介绍 1.1 优缺点 优点. (1)不必担心过度拟合

机器学习:随机森林

? ? 引言 ? ? 随机森林在机器学习实战中没有讲到,我是从伯克利大学的一个叫breiman的主页中看到相关的资料,这个breiman好像是随机森林算法的提出者,网址如下 ? ? http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm ? ? 随机森林算法简介 ? ? 随机森林说白了就是很多个决策树组成在一起,就形成了森林,关键在于如何创建森林里的每一棵树,随机森林用到的方法bootstrap法,通俗的讲就是有放回的抽取样

机器学习之随机森林(一)

如果大家想学人工智能的话,那么就一定不能够忽视有关机器学习的内容.这时候就会有人问,什么是机器学习?所谓机器学习就是一门多领域交叉学科,涉及概率论.统计学.逼近论等多门学科.机器学习是专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的一门技术,而机器学习中随机森林是一个十分重要的算法,在这篇文章中我们就详细给大家介绍一下随机森林的相关知识. 一般来说,随机森林是用于分类和回归的监督式集成学习模型.为了要使整体性能更好,因此集成学习模型

spark 随机森林算法案例实战

随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数据,列方向上采用无放回随机抽样得到特征子集,并据此得到其最优切分点,这便是随机森林算法的基本原理.图 3 给出了随机森林算法分类原理,从图中可以看到,随机森林是一个组合模型,内部仍然是基于决策树,同单一的决策树分类不同的是,随机森林通过多个决策树投票结果进行分类,算法不容易出现过度拟合问题. 图 3