随机森林
一、概念
随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
随机森林( R a n d o m F o r e s t Random \; Forest RandomForest,简称 R F RF RF )是 B a g g i n g Bagging Bagging 的一个扩展变体。 R F RF RF 在以决策树为基学习器构建 B a g g i n g Bagging Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。( B a g g i n g + 决 策 树 = R F Bagging+决策树 = RF Bagging+决策树=RF)
具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有 d d d 个属性)中选择一个最优属性。
而在 R F RF RF 中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含 k k k 个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令 k = d k=d k=d ,则基决策树的构建与传统决策树相同;若令 k = 1 k=1 k=1 ,则是随机选择一个属性用于划分。每棵树任其生长,不进行剪枝。
因为是继承了 B a g g i n g Bagging Bagging 因此会降低方差,所以决策树部分要关注降低偏差,所以采用,不进行剪枝的方式,任其生长以降低偏差。
二、构建
2.1 影响随机森林分类性能的主要因素
森林中单颗树的分类强度 ( S t r e n g t h ) (Strength) (Strength):每颗树的分类强度越大,则随机森林的分类性能越好。
森林中树之间的相关度 ( C o r r e l a t i o n ) (Correlation) (Correlation):树之间的相关度越大,则随机森林的分类性能越差。
2.2 算法流程
在从整体训练集中进行随机采样划分子训练集时,随机森林通常采用所谓的有放回采样 ( b o o t s t r a p ) (bootstrap) (bootstrap) 手段,有放回采样 是指每次抽取一个样本放入子集后将该样本仍保留在被采样空间中,使得它仍有可能被再次采样到。
这种采样方法能够生成与训练样本整体不同的数据分布,这样等于扩充了训练样本空间,所以 b o o t s t r a p bootstrap bootstrap 采样能够训练出适应性更强的模型。
A l g o r i t h m Algorithm Algorithm:
-
从原始样本集 m m m 个样本中使用 b o o t s t r a p bootstrap bootstrap (有放回的随机抽样)采样法选出m个样本;
-
从所有 n n n 个属性中随机选择 K K K 个属性 (若 k = n k=n k=n 则基决策树的构建与传统的决策树相同,若 K = 1 K=1 K=1 则是选择一个属性用于划分),一般令 k k k 的值为 log 2 n \log_2n log2n;
-
选择最佳分割属性 ( I D 3 , C 4.5 , C A R T ID3, C4.5, CART ID3,C4.5,CART ,详见3. 决策树原理及数学建模实战)作为节点创建决策树;
-
每颗决策树都进行最大程度地生长,且不进行剪枝;
-
重复以上4步 S S S 次, 建立 S S S 颗决策树,即形成随机森林;
-
在分类问题中通过多数投票法决定输出属于哪一分类;在回归问题中输出所有决策树输出的平均值。
2.3 OOB
一般机器学习模型的评估需要通过与训练集相互独立的另一个测试集来完成。而 B a g g i n g M e t h o d Bagging \; Method BaggingMethod 类模型在训练过程中划分不同独立数据子集的行为在侧面引入了另一个好处,就是可以使用训练数据本身进行模型准确率评估。
这就是 O u t − o f − B a g E s t i m a t i o n ( O O B ) Out-of-Bag \; Estimation(OOB) Out−of−BagEstimation(OOB),它是指基模型的评估预测只采用未参与到其本身训练的数据集,因此虽然整体上没有给出独立的测试集,但每个基模型使用的训练数据和预测数据是完全隔离的:
2.4 算法特性
在当前所有算法中,具有极好的准确率。
训练可以高度并行化,能够有效地运行在大数据集上,提高运行速率。
能够处理具有高维特征的输入样本,而且不需要降维。
能够评估各个特征在分类问题上的重要性 (特征选择中,
sklearn
为我们提供了很好的工具)。对部分特征的缺失不敏感。
由于采用有放回随机抽样,训练出来的模型方差小,泛化能力强。
取值比较多的特征对 R F RF RF 的决策会产生更大的影响,有可能影响模型的效果。
B a g g i n g Bagging Bagging 改进了预测的准确率,但损失了解释性。
在某些噪音比较大的特征上, R F RF RF 模型还是容易陷入过拟合。
三、Python实现
在sklearn.ensemble
包中提供了完整封装的随机森林模型 RandomForestClassifier
和 RandomForestRegressor
,它们的使用方式和其他模型相同。由于随机森林采用决策树作为基模型,所以在模型初始化过程中保留了所有 DecisionTree
模型中的决策树相关参数,此外还提供了关于抽样方式和
O
O
B
OOB
OOB 评估的配置属性:
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
iris = load_iris()
clf = RandomForestClassifier(n_estimators=20, bootstrap=True, oob_score=True)
clf.fit(iris.data, iris.target)
clf.oob_score_
0.9466666666666667