本文主要是介绍DataWhale集成学习【中】:(二)Bagging,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 这篇博文是 DataWhale集成学习【中】 的第二部分,主要是介绍Bagging
- 参考资料为DataWhale开源项目:机器学习集成学习与模型融合(基于python)和scikit-learn官网
- 学习交流欢迎联系 obito0401@163.com
文章目录
- 原理
- 案例
原理
- 在DataWhale集成学习【中】:(一)投票法我们提到过:要想让整体模型取得更好的效果,应该增加模型之间的差异性。而增加模型之间的差异性的方法主要有两种:一是不同的数据,另一则是不同的方法
- Bagging 方法的出发点就是不同的数据,其核心之处在于自助采样(bootstrap),即有放回的从数据集中进行采样
- 基本流程:首先随机取出一个样本放入采样集合中,再把这个样本放回初始数据集,重复 K 次采样,则最终可以获得一个大小为 K 的样本集合。同样的方法,可以取出 T 个大小为 K 的样本集合,然后基于每个采样集合训练出一个基学习器,将这 T 个基学习器进行集成即可
- 应用之处:Bagging 是一种降低方差的技术,因此在不剪枝决策树、神经网络等易受样本扰动的学习器上效果更加明显。在实际中,加入列采样的 Bagging 技术对高维小样本有很好的效果
案例
- Python 的 sklearn 库中提供了
BaggingRegressor
和BaggingClassifier
两种 Bagging 方法 - 下面的案例演示的是
BaggingClassifier
API的应用,基模型默认为树模型
# 导入函数库
from numpy import mean,std
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score,RepeatedStratifiedKFold
from sklearn.ensemble import BaggingClassifier# 加载数据集
X,y = make_classification(n_samples=1000,n_features=20,n_informative=15,n_redundant=5,random_state=911)
# 训练模型
model = BaggingClassifier()
# 评估模型
cv = RepeatedStratifiedKFold(n_splits=10,n_repeats=3,random_state=911)
n_scores = cross_val_score(model,X,y,scoring="accuracy",cv=cv,n_jobs=-1,error_score="raise")
print("Accuracy: %.3f,标准差为 %.3f"%(mean(n_scores),std(n_scores)))
这篇关于DataWhale集成学习【中】:(二)Bagging的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!