具有极高的准确性
不需要降维处理
可评估各个特征在分类问题上的重要性
集成学习方法#
- 通过建立几个模型来预测解决单一问题
- 多个分类器及模型相互独立做出预测,最后结合所有预测结果做出组合预测
- 精确度更高
随机森林即包含多个决策树的分类器
随机森林原理#
两个随机:特征随机+训练集随机
其基本步骤如下:
- Bootstrap(随机有放回抽样)抽样:总样本N个,样本随机选择,重复N次(有重复选择)
- 随机特征选择:随机选择m个特征,建立决策树(m<<M,其中M为特征总数目,降维,防止过拟合)
- 决策树构建
- 集成预测
为什么采用BootStrap抽样?
为了让每棵树不一样:
每次抽样会随机选一部分样本(还可能重复选),给每棵树的训练数据都略有差异。
这样每棵树学到的规律就会有差别,避免大家 “想法一致”。
最后综合所有树的结果时,不同视角能互相补充,减少单棵树的偏见和错误,让整体预测更准、更稳。
API#
- 随机森林分类器
1
class sklearn.ensemble.RandomForestClassifier(n_estimator=10,criterion='gini',max_depth=None,bootstrap=True,random_state=None,min_sample_split=2)
n_estimator
:int
, 可选 (default=10
) 森林里的树木数量 120, 299, 300, 500, 800, 1200ceitretia
:str
, 可选 (default='gini'
) 分割特征的测量方法max_depth
:int
orNone
, 可选 (default=None
), 树的最大深度 5, 8, 15, 25, 30max_features="auto"
: 每个决策树的最大特征数量auto
:max_features=sqrt(n_features)
sqrt
:max_features=sqrt(n_features)
(与auto
相同)log2
:max_features=log2(n_features)
None
:max_features=n_features
bootstrap
:bool
, 可选 (default=True
), 是否选择Bootstrap抽样min_samples_split
: 节点划分最少样本数min_samples_leaf
: 叶子节点的最小样本数- 超参数:
n_estimator
,max_depth
,min_samples_split
,min_samples_leaf