定义:在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树节点分裂时引入随机属性扰动。
随机性体现(与传统决策树的差异):对基决策树的每个节点,先从该节点的属性集合中随机选择包含K(log2(d))个属性的子集,然后再从这个子集中选择一个最优的属性用于划分。
为什么随机选取数据集?
如果不随机的话,训练出来的多棵树的分类结果时一样的,违背了bagging思想
为什么有放回抽样?
RF在分类时是求同,有放回的抽样会产生相同的训练样本;如果不是有放回抽样,训练出来的每棵树的结果存在很大偏差,这样对分类结果没有任何帮助。所以有放回抽样能够减小bias,RF的目的时减小variance。
影响RF分类结果的因素:
- 任意两棵树的相关性:相关性越大,错误率越高
- 每棵树的分类能力:分类器能力越强,错误率越低;
- 唯一可调参数:RF中特征子集的数量,数量越大,性能越好。
RF的优缺点
- RF引入两个随机性,抗噪能力增强
- RF在分类中对各个变量的重要性进行估计,对泛化误差进行无偏估计
- 可处理高维数据,对数据集的适应能力强
- 性能优于单预测器,分类精度与boosting算法差不多,运行速度更快
- 训练数据较少或噪声数据较大时,会发生overfitting。
RF是如何衡量特征重要性的
- 基于gini不纯度的:
在sklearn中描述的是基于不纯度来衡量特征重要性(容易被取值较多的特征误导----high cardinality features)
- 基于袋外数据误差的:
第一步,对于每一棵树,选择相应的OOB袋外数据(抽样剩下的1/3数据),计算袋外数据误差,记为err_oob1;
第二步,随机对OOB袋外数据中某个特征X加入噪声干扰(可随机改变样本在特征X处的值),计算袋外数据误差,记为err_oob2;
最后,对这N棵树的(err_oob2-err_oob1)求和取平均,如果值变化很大(即err_oob2上升),说明这个特征的重要性很高。
RF能减少多少方差?
Bagging与方差 - 知乎
(1)假设有n个独立同分布的模型,每个模型的方差均为σ^2,均值为μ,那么多模型平均后的方差仅为单模型的1/n,偏差与单模型的偏差近似
(2)由于随机森林是有放回抽样,说明数据集之间会有重复样本,不符合独立性假设,这种情况下假设单模型之间具有相关稀疏0<pho<1,则模型均值和方差为:
上式中,随着n增大,第一项趋于0,第二项趋于pho*σ^2,所以bagging能降低整体方差。同时,由于树节点分裂时,随机选取特征,进一步降低了模型之间的相关性。
(非独立随机变量之间的方差计算如下):