集成学习算法

一、集成学习

1.什么是集成学习?

集成学习是通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立的学习和做出预测,然后将这些预测最后整合成组合预测,因此优于任何一个单分类的做出的预测。

2.机器学习的两个核心问题
  • 如何训练数据---- 解决欠拟合问题
  • 如何提升泛化性能---- 解决过拟合问题
3.集成学习中的boosting和Bagging

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6IrcozJH-1578989196177)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0/images/ensemble3.png)]

只要单分类器的表现不太差,集成学习的结果总是要好于单分类器的。

4.Bagging

4.1Bagging的原理
  • 1 从样本集中重采样(有重复的,有放回采样)选出n个样本,n为原始样本集的样本个数;
  • 2 在所有特征上,对这个n个样本建立基本分类器(分类器如ID3、C4.5、CART、SVM、Logistic回归等。在这里,均称为弱分类器。);
  • 3 重复以上两步m次,即获得m个分类器;
  • 4 将数据放在这m个联合分类器上(m个分类器组成了一个强分类器),最后根据这m个分类器的平权投票结果,决定数据属于哪一类。

简单来说就是采样、学习、集成,平权投票就是少数服从多数!

5.随机森林的构造过程

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。

随机森林就是Bagging的改进版, 随机森林 = Bagging + 决策树

5.1随机森林的原理
  • 1 从样本集中重采样(有重复的,有放回采样)选出m个样本
  • 2 随机选取K个数据特征 m << M (M表示总特征数)
  • 3 训练决策树 默认为CART树
  • 4 重复1-3步骤构造n个弱决策树
  • 5 平权投票集成n个弱决策树
5.2 随机森林API
  • sklearn.ensemble.RandomForestClassifier(n_estimators=10,criterion=‘gini’,max_depth=None,bootstrap=True,random_state=None,min_samples_split=2)
    • n_estimators:森林里的数目数量,默认为10
    • Criterion:特征标准 默认为gini 悉尼指数
    • max_depth:树的最大深度
    • max_features=‘auto’:每个决策树的最大特征数量
      • If “auto”, then max_features=sqrt(n_features).
      • If “sqrt”, then max_features=sqrt(n_features)(same as “auto”).
      • If “log2”, then max_features=log2(n_features).
      • If None, then max_features=n_features.
    • bootstrap:是否在构建树的时候使用放回抽样
    • min_samples_split:节点划分最少样本数
    • min_samples_leaf:叶子节点最少样本数
5.3 随机森林预测的案例
  • 实例化随机森林
estimator = RandomForestClassifier()
  • 定义超参数的选择列表
param = {'n_estimators':[100,200,300,400,500],'max_depth':[1,2,3,4,5]}
  • 使用GridSearchCV进行网格搜索
transfer = GridSearchCV(estimator,param_grid=param,cv=2)

transfer.fit(x_train,y_train)
print("随机森林预测的准确率:",transfer.score(x_test,y_test))

6.Boosting

1.什么是boosting

随着学习的积累从弱到强,就是每加入一个弱学习器,整体能力就会得到提升。

2.boosting实现过程:
  • 1.初始化训练数据权重相等,训练第一个学习器

  • 2.计算该学习器在训练数据中的错误率

  • 3.计算该学习器的投票权重

  • 4.根据投票权重对训练数据重新赋权

    将下一轮学习器的注意力集中在错误的数据上。

  • 5.重复执行1-4步m次

  • 6.对m个学习期进行加权投票

bagging集成与boosting集成的区别:
  • 区别一:数据方面
    • bagging 对数据进行采样
    • boosting 根据前一轮学习结果调整数据的重要性
  • 区别二:投票方面
    • bagging 所有学习器平权投票
    • boosting 对学习器进行加权投票
  • 区别三:学习顺序
    • bagging 学习是并行的,每个学习器之间没有依赖关系
    • boosting 是串行的,学习是有先后顺序的
  • 区别四:主要作用
    • bagging 主要用于提高泛化性能(解决过拟合,也可说降低方差)
    • boosting 主要用于提高训练精度(解决欠拟合,也可以说降低偏差)
3.from sklearn.ensemble import AdaBoostClassifier
  • https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html#sklearn.ensemble.AdaBoostClassifier)https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html#sklearn.ensemble.AdaBoostClassifier
4.GBDT

梯度提升决策树(GBDT Gradient Boosting Decision Tree)是一种迭代的决策树算法,该算法由多棵决策树组成,所有的树的结论累加起来做最终答案。它在被提出之初就被认为是泛化能力交钱的算法。

GBDT = 梯度下降 + Boosting + 决策树

GBDT的主要执行思想

  • 1.使用梯度下降法优化代价函数
  • 2.使用一层决策树作为弱学习器,负梯度作为目标值
  • 3.利用boosting思想进行集成
5.XGBoost

XGBoost = 二阶泰勒展开 + boosting + 决策树 + 正则化

Boosting:XGBoost使用Boosting提升思想对多个弱学习器进行迭代学习

二阶泰勒展开:每一轮学习中,XGBoost对损失函数进行二阶泰勒展开,使用一阶和二阶梯度进行优化

决策树:在每一轮学习中,XGBoost使用决策树算法作为弱学习进行优化

正则化:在优化过程中XGBoost为防止过拟合,在损失函数中加入惩罚项,限制决策树的叶子节点个数以及决策树叶子节点的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值