集成学习(三):随机森林

在集成学习(一)中介绍过,Bagging(bootstrap aggregation)是一种增强模型多样性,降低方差的有效手段,特别适用于高方差,低偏差的模型,例如决策树,注意到Bagging也是一种可并行模型,而Boosting是一种顺序模型,是一类由弱学习器提升到强学习器的算法。注意到,对于绝大多数的情形,Boosting算法要优于Bagging,但是Bagging也有其自身优势那就是模型简单,可并行,运行速度快,运算量大大低于Boosting模型。

随机森林(Random forsest)是一种Bagging的更进一步改良版本,他使得模型中子模型的多样性进一步增强,互相之间的相关性进一步降低。在许多模型中RF拥有这和Boosting类似不俗的表现,但是它更容易训练和剪枝。

随机森林算法

      

           随机森林和普通的Bagging的最主要区别是如下的所谓“随机特征选择”,也就是在每一次节点分裂的时候随机选取$m\leq P$个特征,再从中选出一个最优特征作为分裂节点。具体算法总结如下:



输入:训练数据集$D=\lbrace(x_{1},y_{1}),...,(x_{N},y_{N})\rbrace$, 其中$x_{i}\in\mathbb{R}^{P}$;正整数$T$;正整数$m\leq P$; 正整数$S\leq N$

输出:某分类或回归器

Step1. 对任意的$t=1,...,T$,执行如下操作:

1)用自助法随机从$D$中抽取$S$个样本形成样本集$D_{t}$

2)生成一决策树模型$f_{t}$,直到自定义的减枝条件得到满足后停止分裂节点,每一次分裂节点的时候执行如下步骤:

i. 随机选取m个属性;

ii. 从i中的m个属性中选出最优的属性及其相应的分裂节点

iii. 将节点分裂为两个子节点。

Step2. 输出树\lbrace f_{t}\rbrace_{t=1}^{T}的集成,回归问题取平均,分类问题取多数投票结果。



我们可以看出随机森林的唯一比Bagging多出来的改进就是在于每次分裂随机选取若干属性进行分裂。这样做在自助法随机取样(数据样本扰动)的基础上进一步用输入扰动法对模型进行多样性增强,同时降低了不同子模型的相关性,减小了最终模型的方差,增强了其泛化能力,不仅如此也相对Baggging大大降低了运算量。

袋外样本与袋外误差

对于随机森林中的每一颗树$f_{t}$, 它是由样本集$D_{t}$训练得到的,我们称所有的在D却不在$D_{t}$中的样本为$f_{t}$的袋外样本, 记作$D^{\prime}_{t}$ 而误差:

\begin{equation}OOBE(f_{t})\triangleq \frac{1}{\vert D_{t}^{\prime}\vert}\sum_{(x,y)\in D^{\prime}_{t}}l(f_{t}(x),y)\end{equation}

称为$f_{t}$的袋外误差(Out of Bag Error),而对最后集成得到的随机森林模型$f$我们定义袋外误差为其所有树的袋外误差的平均:

\begin{equation}OOBE(f)=\frac{1}{T}\sum_{t=1}OOBE(f_{t})\end{equation}

这里我们看到了自助法的一大好处:

OOBE可以内蕴的(intrinsicly)作为评价随机森林学习性能的评价指标,我们不需要再做交叉验证,而是在OOB不显著减小的时候停止训练。

内蕴的相似度矩阵(Intrinsic Proximity Matrix)

      除此以外,我们也可以对每个样本$(x_{i},y_{i})$与$(x_{j},y_{j})$定义一个相似度(或称接近度)$d_{ij}$,最后得到一个NxN相似度矩阵,具体做法也很容易理解:

$d_{ij}=0$,遍历所有的树的所有叶节点,只要$(x_{i},y_{i})$与$(x_{j},y_{j})(i\neq j)$出现在同一个叶节点就将将$d_{ij}$加1,最后我们在将所有相似度除以随机森林中树的个数的两倍。

这里由随机森林得到相似度矩阵是一种内蕴的得到样本之间的相似度的方法,利用此矩阵我们可以做[3]:

      1)聚类;

      2)缺失值处理;

      3)异常值检测;

特征重要性(Feature Importance)

       随机森林提供了两种方式计算特征重要性,一种方式比较直接:

某一特征的重要性是用所有树中以此特征作为分裂特征的节点分裂后的评价指标增量的总和。

注意到,这种方式存在缺憾,主要是(参考博文[4]):

1)偏向于选择那些具有较多类别的变量。 
                   2)当存在相关特征时,一个特征被选择后,与其相关的其他特征的重要度则会变得很低,因为他们可以减少的不纯度已经被前面的特征移除了,也就是说特征重要性严重依赖于分裂特征被选择的次序。

另一种方式是,某一个特征的重要性是对于每个树中该特征重要性的总和,而对每棵树$f_{t}$,特征$x_{k}$的重要性用如下的方法计算:

1)找出$f_{t}$的袋外样本,计算其袋外误差OOBE;

2)随机打乱输入矩阵中第k行的次序,计算打乱次序之后的袋外误差$OOBE^{\prime}$, 我们用$OOBE^{\prime}-OOBE$衡量树$f_{t}$中第$k$个特征的重要性。

总结:

1. 随机森林的优点:

可并行运算,速度快;

随机特征选择,进一步增强多样性,减小运算量,降低了方差;

由袋外误差我们可以内蕴地做模型性能评估而不需要再用CV或者建立validation集;

可以得到特征的重要性,方便特征选择;

可以内蕴地得到样本的相似度矩阵,方便进行聚类、异常值检测、缺失值处理。

2.缺点:可解释性差,无法降低偏差,对于噪声大的数据依然容易过拟合。

参考文献:

   [1] 周志华:《机器学习》,北京,清华大学出版社,2016;

[2] Trevor Hastie,Robert Tibshirani,Jerome Friedman: The Elements of Statistical Learning Data Mining,Inference,and Prediction, second edition, Springer Verleg, 2009

[3] Breiman L: Manual On Setting Up, Using, And UnderstandingRandom Forests V3.1, http://oz.berkeley.edu/users/breiman/Using_random_forests_V3.1.pdf

[4] "随机森林对特征重要性排序":https://blog.csdn.net/qq_15111861/article/details/80366787

原文地址:https://www.cnblogs.com/szqfreiburger/p/11688101.html

时间: 2024-09-30 09:03:02

集成学习(三):随机森林的相关文章

大白话5分钟带你走进人工智能-第二十八节集成学习之随机森林概念介绍(1)

                                                      第二十八节集成学习之随机森林概念介绍(1) 从本系列开始,我们讲解一个新的算法系列集成学习.集成学习其实是怎么样去应用决策树解决一些问题. 在机器学习领域集成学习是一种非常简单直接的提升分类器回归器预测效果的一种思路.决策树有一个困境,当层数太深的时候会有过拟合问题,当我不想过拟合,就通过预剪枝给它砍掉一部分深度,此时损失又容易太大了,导致在训练集上预测的又不怎么准.所以对于决策树很难去找

机器学习之集成学习和随机森林

一.集成学习 集成学习就是合并多个分类器的预测.一般会在一个项目快结束的时候使用集成算法,一旦建立了一些好的分类器,就可以使用集成把它们合并成一个更好的分类器.著名的集成方法:投票分类.bogging.pasting.boosting.stacking.和一些其它算法. 1.1 投票分类(少数服从多数) 令人惊奇的是这种投票分类器得出的结果经常会比集成中最好的一个分类器结果更好.事实上,即使每一个分类器都是一个弱学习器(意味着它们也就比瞎猜好点),集成后仍然是一个强学习器(高准确率),只要有足够

10.集成学习与随机森林

1.什么是集成学习 什么是集成学习,以前我们都是使用一个算法来进行预测,难免会有"独断专行"的感觉.集成学习是将多个算法集成在一块,然后多个算法对同一个问题进行预测,然后少数服从多数,这便是集成学习. 我们生活中有很多集成学习的例子,比如买东西的时候看推荐,如果10个人推荐你买A产品,但是只有1个人推荐你买B产品,我们会更将倾向于买B产品. 我们看看sklearn是如何为我们提供集成学习的接口的. from sklearn.datasets import make_moons from

集成学习 - 决策树-随机森林

认识 我觉得决策树+ 随机森林 应该是 ML 中最为重要的算法之一了吧, 反正我是很喜欢用的. 算法难度低, 可解释性很强, 能可视化 能处理非线性, 可扩展为随机森林(集成学习) 建立决策树的判别依据有很多, 比较主流的有经典的 ID3 算法(熵), C4.5 , 基尼系数等. 我是这种基于熵的理解了, 上学时学过熵的概念, 在<> 和 <> 有讲到. 其余的也没仔细看, 暂时能深入理解一个就可以了. 信息熵 衡量信息的不确定性 或 混乱程度的指标 不确定性越大, 则熵值越大 直

机器学习(十三) 集成学习和随机森林(上)

一.什么是集成学习 二.Soft Voting Classifier 更合理的投票,应该有的权值 三.Bagging 和 Pasting 四.oob (Out-of-Bag) 和关于Bagging的更多讨论 原文地址:https://www.cnblogs.com/zhangtaotqy/p/9581237.html

机器学习(十三) 集成学习和随机森林(下)

五.随机森林和 Extra-Trees 六.Ada Boosting 和 Gradient Boosting 七.Stacking 八.学习scikit-learn文档, 官方学习文档: http://scikit-learn.org http://scikit-learn.org/stable/user_guide.html 今年,Kaggle刚刚上线了Kaggle Learn模块,使用Kaggle的数据,来一点点进行机器学习实战.可以参考:https://www.kaggle.com/lea

机器学习实战之 第七章 集成方法(随机森林和 AdaBoost)

第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见. 机器学习处理问题时又何尝不是如此? 这就是集成方法背后的思想. 集成方法: 投票选举(bagging: 自举汇聚法 bootstrap aggregating): 是基于数据随机重抽样分类器构造的方法 再学习(boosting): 是基于

随机森林和GBDT的学习

参考文献:http://www.zilhua.com/629.html http://www.tuicool.com/articles/JvMJve http://blog.sina.com.cn/s/blog_573085f70101ivj5.html 我的数据挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm我的算法库:https://github.com/linyiqun/lyq-algorithms-lib 前言 提到森林,就不得不联

【基础知识八】集成学习

难点:如何产生"好而不同"的个体学习器:"好而不同":"准确性"和"多样性" 一.个体与集成 构建并结合多个学习器来完成学习任务 集成:结果通过投票法voting产生,"少数服从多数" 获得整体性能提升要求个体学习器:好而不同 1)个体学习器有一定的"准确性" 2)学习器间具有差异 集成学习的错误率: 假设基学习器的误差相互独立,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降