集成学习之 RandomForest & ExtraTrees

Contents

一、 定义

使用决策树算法进行集成学习时所得到的集成学习的模型,称为随机森林。

  • 只要集成学习的底层算法是 决策树算法,最终得到的模型都可以称为随机森林;
  • 不仅在分类表现出较好的性能,而且在回归上也体现出了优异的性能。

二、 RandomForest(随机森林)

scikit-learn 中:随机森林分类器及回归器 一颗决策树在训练的过程中,都是在每一个节点上进行划分,这个划分是找到一个最好的特征和相应的阈值。 scikit-learn为我们封装的随机森林,在训练每个决策树的过程中,默认所有子模型在每一个节点上,都是在随机的特征子集上寻找最优的划分。

也就是在迭代寻找划分维度及其阈值时,不是对全部特征进行搜索,而是对部分特征进行搜索;

优点:这种方式增加了每一个子模型的随机性及差异性;

使用方法:

from sklearn.ensemble import RandomForestClassifier

rf_clf = RandomForestClassifier(n_estimators=500, random_state=666, oob_score=True, n_jobs=-1)
rf_clf.fit(X, y)

rf_clf.oob_score_

三、ExtraTrees(极其随机的森林)

特点:决策树子模型在节点划分时,使用随机的特征和随机的阈值;(形状差异更加大,因为它更加随机)
也就是说在节点划分时,选择的特征及对应的特征值不是搜索比较所得,而是随机抽取一个特征,再从该特征中随机抽取一个特征值,作为该节点划分的依据;

  • 理论支撑:只要子模型的准确率大于50%,并且集成的子模型的数量足够多,最终整个集成系统的准确率就能达到要求;
  • 优点:提供额外的随机性,抑制过拟合;并且具有更快的训练速度;
  • 缺点:增大了 bias(偏差)(遏制了方差)

使用方法:

from sklearn.ensemble import ExtraTreesClassifier

et_clf = ExtraTreesClassifier(n_estimators=500, bootstrap=True, oob_score=True, random_state=666)
et_clf.fit(X, y)

四、随机森林中的参数

包含属于决策树算法的参数和Bagging的参数

  • max_depth = None:决策树的最高深度;(如果不做设置,按其它参数条件结束划分)
  • max_features =
  • ‘auto’:节点划分时,进行所搜的特征的种类数;(默认搜索全部特征)
  • max_leaf_nodes = None:划分结束时,模型最多的叶子数;(如果不做设置,按其它参数条件结束划分)
  • min_impurity_decrease = 0.0:
  • n_estimators=500 : 模型中有多少个子模型
  • bootstrap=True :采用放取样
  • oob_score=True :使用oob的方式看我们的结果

五、集成学习算法:分类和回归

大多数集成学习算法都可以解决回归问题

sklearn中解决分类问题的算法

from sklearn.ensemble import BaggingClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier

sklearn中解决回归问题的算法

from sklearn.ensemble import BaggingRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import ExtraTreesRegressor

六、小结

在这部分,我们对sklearn中的对随机森林 RandomForest 和 ExtraTrees 进行了简要介绍,具体的更加详细的可以看相关文档。


转载请注明:yezuolin的博客 » 点击阅读原文