随机森林
-
随机森林是一种判别分类方法
-
随机森林是建立在Post not found: 决策树基础上的集成学习器(一个包含多个决策树的分类器;输出结果由各个树的输出结果的众数决定)
-
是bagging的一个特殊进阶版
-
随机森林=Bagging+随机选择特征
$$Random Forest=Bagging+Decision Tree$$ -
随机森林的弱学习器都是决策树(CART)
-
如何产生不同的决策树(Decision Tree,DT)?
- 每棵决策树使用训练集的Bootstrap随机采样样本
- 每个根节点(node)使用不同的特征子集
-
树的数目通常不少于500棵
-
不需要剪枝;在构建决策树时,RF的每棵决策树都最大可能地进行生长而不进行剪枝
-
概括RF包括4部分:
- 随机选择样本
- 随机选择特征
- 构建决策树
- 随机森林投票(平均)
-
每个基学习器只使用了训练集中约63.2%的样本,剩下约36.8%的样本可用作验证集来对其泛化性能进行“包外(Out of Bag)估计”
-
随机森林不需要归一化/标准化
概率模型(树形模型)不需要归一化。因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、随机森林
RF vs GBDT
随机森林RF | GBDT | |
相同点 | 1.都是由多棵树组成 2.最终的结果都是由多棵树一起决定 |
|
子树 | 可以是分类树或回归树 | 只能是回归树 |
并行生成子树 | 串行(序列)生成子树 | |
集成方法 | 多数投票 | 将所有结果累加 或 加权累加 |
异常值 | 不敏感 | 敏感 |
对训练集一视同仁 | 基于权值的弱分类器的集成 | |
减少方差 | 减少偏差 | |
容易过拟合 |
实现代码
Python
- 使用
sklearn.ensemble
包中的RandomForestClassifier
函数
1 | from sklearn.ensemble import RandomForestClassifier |