sklearn集成学习

本文详细介绍了集成学习中的几种主要方法,包括Bagging、Boosting、Stacking和Voting Classifier。Bagging通过有放回抽样减少方差,如随机森林;Boosting通过迭代训练降低偏差,如AdaBoost和Gradient Boosting;Stacking通过多层模型预测结果融合提高预测性能。此外,还讨论了集成学习在sklearn库中的实现,如Voting Classifier的hard和soft投票策略,以及随机森林的优势。
摘要由CSDN通过智能技术生成


集成学习方法是指组合多个模型,以获得更好的效果,使集成的模型具有更强的泛化能力。对于多个模型,如何组合这些模型,主要有以下几种不同的方法:

  • 在验证数据集上上找到表现最好的模型作为最终的预测模型
  • 对多个模型的预测结果进行投票或者取平均值 (Bagging方法)
  • 对多个模型的预测结果做加权平均 (Boosting方法)

以上的几种思路就对应了集成学习中的几种主要的学习框架。

获得不同种类分类器的方法之一是使用不同的模型进行训练,然后投票得出最优判断。还有另一种方法是每个预测器使用的模型相同,但是在不同的训练集随机子集上进行训练。
sklearn集成学习有一些特别著名的集成方法,包括 bagging, boosting, stacking,随机森林(决策树集合)下面我们逐一介绍。

集成学习的数学原理

模型方差与偏差关系

模型的偏差是训练出来的模型在训练集上的准确度(即在样本上拟合的好不好)。模型的方差是训练出来的模型在测试集上的准确度(即预测的准不准)。方差越大的模型越容易过拟合。
通常来说弱模型是偏差高(在训练集上准确度低)方差小(防止过拟合能力强)的模型。强模型是偏差低(在训练集上准确度高)方差高(防止过拟合能力弱)的模型。bagging和stacking中的基模型为强模型,boosting中的基模型为弱模型。bagging和stacking中的基模型为强模型是偏差低(在训练集上准确度高)方差高(防止过拟合能力弱),boosting中的基模型为弱模型。
方差,偏差,误差与模型复杂度关系。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、集成方法bagging

另一种方法是每个预测器使用的模型相同,但是在不同的训练集随机子集上进行训练。分为bagging(模型为强模型,样本有放回),pasting(样本无放回)(基模型为强模型,bagging的训练过程旨在降低方差)

bagging:从训练集又放回的 进行子抽样组成每个基模型所需要的子训练集,数据集允许重复,对所有基模型预测的结果进行综合产生最终的预测结果,基模型为强模型,是偏差低(在训练集上准确度高)方差高(防止过拟合能力弱)。

Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。由于,所以bagging后的bias和单个子模型的接近,一般来说不能显著降低bias。整体模型的期望近似于基模型的期望,这也就意味着整体模型的偏差和基模型的偏差近似。同时,整体模型的方差小于等于基模型的方差(当各个模型相同的时候取等号)。

对于bagging来说,整体模型的偏差和基模型近似,整体模型的方差随着基模型数(m)的增多而减少,从而防止过拟合的能力增强,方差降低,模型的准确度得到提高

主要算法

随机森林(Bagging + 决策树 )

sklearn实现

sklearn中的sklearn.ensemble.BaggingClassifier(分类)可以实现Bagging

sklearn.ensemble.BaggingClassifier(base_estimator=None, n_estimators=10, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, oob_score=False, warm_start=False, n_jobs=None, random_state=None, verbose=0)

参数说明:

  • n_estimators:基学习器的数量
  • max_samples:每个基学习器中的样本数,如果是整形,则就是样本个数;如果是float,则是样本个数占所有训练集样本个数的比例
  • bootstrap :是否采用有放回抽样(bagging),为True表示采用,否则为pasting(无放回抽样)。默认为True,如果你想使用pasting, 只需要设置bootstrap=False即可
  • n_jobs:并行运行的作业数量。-1时,个数为处理器核的个数
  • oob_socre:为True时,对模型进行out-of-bag的验证,即在一个基学习器中,没有用于训练的数据用于验证,调用 print (bagging.oob_score_)输出

相对于单个的决策树,Bagging方法得到的分类边界更加平滑相对于pasting方法来说,bagging方法中模型的偏差会偏大一点,因为它是采用有放回的抽样,所有模型中用到的数据的均匀性会差一点;但是因为这样,模型之间相对独立一点,因此bagging的方差会小一点。在实际使用过程中,bagging的效果一般会更好,因此一般使用bagging。但是对于具体的问题,我们也可以用交叉验证验证两种模型的性能。

基础分类器能够估算类别概率(也就是具备predict_proba() 方法) , 比如决策树分类器, 那么BaggingClassifier自动执行的就是软投票法而不是硬投票法

# 产生样本数据集
from sklearn.model_selection import cross_val_score
from sklearn import datasets
from sklearn.ensemble import BaggingClassifier
from sklearn.neighbors import KNeighborsClassifier

iris = datasets.load_iris()
X, y = iris.data, iris.target


print ('===============
  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值