天天看点

集成学习思想

一、集成学习(Ensemble Learning)

集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新的学习器。

集成学习的主要思想:

1、Bagging:代表算法是随机森林(Random Forest)

2、Boosting:代表算法是AdaBoost、GBDT

3、Stacking:由于深度学习的发展,现已基本不用

为什么要用集成学习?

  • 弱学习器之间存在一定差异,这会导致分类边界不同,将多个弱分类器合并后,可以得到更加合理的边界,减少整体错误率,实现更好的效果。
  • 对于数据集过大或者过小,可分别通过划分和有放回抽样产生不同的子数据集,然后使用子数据集进行训练,产生不同的分类器,最终合并成为一个大的分类器。
  • 如果数据的划分边界过于复杂,使用线性模型很难描述,那么可以训练多个模型,再进行模型的融合。
  • 对于多个异构的特征集,很难进行融合,则可以考虑每个数据集训练一个分类模型,然后将多个模型融合。
    集成学习思想

二、Bagging思想

Bagging 方法又称为自举汇聚法(Bootstrap Aggregating),其思想是:在m 个原始数据集上通过有放回抽样的方式,重新选出m 个数据进行训练,得到一个分类器;重复上述操作n 次,得到n 个分类器。

Bagging 方法用于分类模型 – 多数投票;

Bagging 方法用于回归模型 – 求均值

Bagging 方法的弱学习器可以是基本的算法模型,如:Linear、Ridge、Lasso、Logistic、Softmax、ID3、CART、C4.5、SVM、KNN等。

Bagging 方法是有放回的抽样,且每个子集的样本数量必须有原始数据集一致,所以子集中是存在重复数据的,但是在模型训练过程中会将重复数据删除,即最终用于训练模型的数据集样本数和原始样本数是不一致的。

集成学习思想
集成学习思想

三、随机森林(Random Forest)

在Bagging策略的基础上修改后的一种算法

  • 从原始样本集(n个样本)中用Bootstrap(有放回重采样)方法选出n 个样本;

    (注意:真正用于训练模型的是n 个样本去重后的样本集!)

  • 使用去重后的子数据集训练决策树:从所有特征属性中随机选择k 个属性,从这k 个属性中选择最佳分割属性作为节点来迭代的创建决策树;

    (最终用于划分的特征属性是局部最优的)

  • 重复以上两步m 次,创建m 个决策树;
  • 这m 个决策树形成随机森林,通过投票表决结果来决定数据属于哪一类。

决策树:从当前节点的所有特征属性中选择最优划分属性,用于划分的特征属性是全局最优的;

随机森林:对于决策树的每一个节点,都是从当前节点的所有特征属性中随机选择k 个属性,然后从这k 个属性中选择最佳划分特征属性,用于划分的特征属性是局部最优的。

集成学习思想

四、RF API

sklearn库中随机森林分类器RandomForestClassifer API:

sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', 
max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, 
max_features='auto', max_leaf_nodes=None, min_impurity_split=1e-07, bootstrap=True, 
oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
           

参数说明:

  • n_estimators

    :森林中决策树的数量,即子模型的数量,值过小会导致欠拟合,过大会导致过拟合,一般选择50~100,默认为10。
  • criterion

    :分类方法,可选值为’gini’和信息增益’entropy’,默认为’gini’。
  • max_depth

    :树的最大深度,默认为None,表示一直扩展到叶子节点足够纯或者样本数小于min_samples_slpit。
  • max_features

    :指定选择最优划分属性的时候,从多少个特征属性中选择,即k。默认为’auto’:max_features=sqrt(n_features),一般不改动。
  • min_samples_split

    :分割叶子节点所需的最少样本数量,默认为2。
  • min_smaples_leaf

    :叶子节点所需的最少样本数量,默认为1。
  • bootstrap

    :是否进行有放回重采样,默认为True。

五、总结

RF 的主要优点:

1、训练可以并行化,对于大规模样本的训练具有速度优势。

2、由于进行随机选择决策树划分特征列表,这样当样本维度较高(特征属性较多)时,仍然具有较高的训练性能。

3、可以给出各个特征的重要性列表。

4、由于存在随机抽样,训练出来的模型方差小,泛化能力强。

5、实现简单。

6、对于部分特征的缺失不敏感。

RF 的主要缺点:

1、在某些噪音比较大的特征上,模型容易陷入过拟合。

2、取值较多的划分特征对RF的决策会产生更大影响,从而有可能影响模型效果。

RF scikit-learn 相关参数

参数 RandomForestClassifer RandomForestRegressor
criterion 划分标准,默认为’gini’,可选gini和entropy 划分标准,可选mse 和mae,默认mse
loss 不支持 损失函数,可选’linear’、‘square’、‘exponential’,默认为linear,一般不改动
n_estimators 最大迭代次数,即随机森林中决策树的个数,值过小会导致欠拟合,过大会导致过拟合。一般取50~100,默认为10. 同左
max_features 给定选择最佳划分特征时,选择多少个特征属性进行考虑,默认为’auto’:max_features=sqrt(n_features) 同左
max_depth 决策树的最大深度,默认为None,表示一直扩展到叶子节点足够纯或者样本数小于min_samples_split 同左
min_samples_split 分割节点所需的最少样本数量,默认为2. 同左
min_samples_leaf 叶子节点中最少样本数量,默认为1. 同左
bootstrap 是否进行有放回重采样,默认为True。 同左

继续阅读