随机森林

具有极高的准确性

不需要降维处理

可评估各个特征在分类问题上的重要性

集成学习方法#

  • 通过建立几个模型来预测解决单一问题
  • 多个分类器及模型相互独立做出预测,最后结合所有预测结果做出组合预测
  • 精确度更高

随机森林即包含多个决策树的分类器

随机森林原理#

两个随机:特征随机+训练集随机

其基本步骤如下:

  1. Bootstrap(随机有放回抽样)抽样:总样本N个,样本随机选择,重复N次(有重复选择)
  2. 随机特征选择:随机选择m个特征,建立决策树(m<<M,其中M为特征总数目,降维,防止过拟合)
  3. 决策树构建
  4. 集成预测

为什么采用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, 1200
  • ceitretia: str, 可选 (default='gini') 分割特征的测量方法
  • max_depth: int or None, 可选 (default=None), 树的最大深度 5, 8, 15, 25, 30
  • max_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