机器学习:集成学习(baggingpasting)(代码片段)

volcao volcao     2022-12-22     625

关键词:

一、集成学习算法的问题

  • 思路:集成多个算法,让不同的算法对同一组数据进行分析,得到结果,最终投票决定各个算法公认的最好的结果;
  • 弊端:虽然有很多机器学习的算法,但是从投票的角度看,仍然不够多;如果想要有效果更好的投票结果,最好有更多的算法参与;(概率论中称大数定理)

 

  • 方案:创建更多的子模型,集成更多的子模型的意见;
  1. 子模型之间要有差异,不能一致;

 

 

二、如何创建具有差异的子模型

 1)创建思路、子模型特点

  • 思路:每个子模型只使用样本数据的一部分;(也就是说,如果一共有 500 个样本数据,每个子模型只看 100 个样本数据,每个子模型都使用同一个算法)

 

  • 特点
  1. 由于将样本数据平分成 5 份,每份 100 个样本数据,每份样本数据之间有差异,因此所训练出的 5 个子模型之间也存在差异;
  2. 5 个子模型的准确率低于使用全部样本数据所训练出的模型的准确率;
  3. 实际应用中,每个子模型的准确率有高有低,甚至有些子模型的准确率低于 50%;

 

  • 集成的众多模型中,并不要求子模型有更高的准确率,只要子模型的准确率大于 50%,在集成的模型当中,随着子模型数量的增加,集成学习的整体的准确率升高
  • 原因分析见下图:

  • 技术分享图片

 

  • 技术分享图片

 

 2)怎么分解样本数据给每个子模型?

  • 放回取样(Bagging)
  1. 每个子模型从所有的样本数据中随机抽取一定数量的样本,训练完成后将数据放回样本数据中,下个子模型再从所有的样本数据中随机抽取同样数量的子模型;
  2. 机器学习领域,放回取样称为 Bagging;统计学中,放回取样称为 bootstrap;

 

  • 不放回取样(Pasting)
  • 500 个样本数据,第一个子模型从 500 个样本数据中随机抽取 100 个样本,第二个子模型从剩余的 400 个样本中再随机抽取 100 个样本;

 

  • 通常采用 Bagging 的方式
  • 原因:

  1. 可以训练更多的子模型,不受样本数据量的限制;
  2. 在 train_test_split 时,不那么强烈的依赖随机;而 Pasting 的方式,会首随机的影响;
  • Pasting 的随机问题:Pasting 的方式等同于将 500 个样本分成 5 份,每份 100 个样本,怎么分,将对子模型有较大影响,进而对集成系统的准确率有较大影响;

 

 3)实例创建子模型

  • scikit-learn 中默认使用 Bagging 的方式生成子模型;
  • 模拟数据集

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    
    X, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42)
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
    
    plt.scatter(X[y==0, 0], X[y==0, 1])
    plt.scatter(X[y==1, 0], X[y==1, 1])
    plt.show()

    技术分享图片

 

  • 使用 Bagging 取样方式,决策树算法 DecisionTreeClassifier 集成 500 个子模型

    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import BaggingClassifier
    
    bagging_clf = BaggingClassifier(DecisionTreeClassifier(),
                                   n_estimators=500, max_samples=200, 
                                   bootstrap=True)
    
    bagging_clf.fit(X_train, y_train)
    bagging_clf.score(X_test, y_test)
    # 准确率:0.904

     

  • BaggingClassifier() 的参数:

  1. DecisionTreeClassifier():表示需要根据什么算法生产子模型;
  2. n_estimators=500:集成 500 个子模型;
  3. max_samples=100:每个子模型看 100 个样本数据;
  4. bootstrap=True:表示采用 Bagging 的方式从样本数据中取样;(默认方式)
  5. bootstrap=False:表示采用 Pasting 的方式从样本数据中取样;

 

 

三、其它

  • 老师指点

  1. 机器学习的过程没有一定之规,没有soft永远比hard好的结论(如果是那样,我们实现的接口就根本不需要hard这个选项了;
  2. 并不是说子模型数量永远越多越好,一切都要根据数据而定,对于一组具体的数据,如论是soft还是hard,亦或是子模型数量,都是超参数,在实际情况都需要根据数据进行一定的调节。
  3. 在机器学习的世界里,在训练阶段,并不是准确率越高越好。因为准确率高有可能是过拟合。应该是“越真实越好”
  • 所谓的真实是指结果要能“真实”的反应训练数据和结果输出的关系。
  • 在真实的数据中,使用验证数据集是很重要的:)

 

机器学习之集成学习

集成学习(ensemblelearning)通过构建并结合多个学习期来完成学习任务,同质学习器和异质学习器。弱学习器:泛化性能略优于随机猜测的学习器集成学习通过过个学习器进行结合,可以获得比单一学习器显著优越的泛化性能集... 查看详情

机器学习集成学习算法(代码片段)

目录1集成学习算法简介1.1什么是集成学习1.2机器学习的两个核心任务1.3集成学习中boosting和Bagging1.4小结2Bagging和随机森林2.1Bagging集成原理2.2随机森林构造过程2.3包外估计2.3.1包外估计的定义2.3.2包外估计的用途2.4随机森林api介绍2... 查看详情

深入浅出ensemblelearning集成学习原理

  集成学习(ensemblelearning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集... 查看详情

深入浅出ensemblelearning集成学习原理

  集成学习(ensemblelearning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集... 查看详情

机器学习算法集成学习-1强学习器的融合学习

..._CSDN博客-数据分析师领域博主目前进度:第四部分【机器学习算法】集成学习*前言引入:我们 查看详情

机器学习集成学习(boosting)——xgboost算法(理论+图解+公式推导)

查看详情

机器学习之集成学习简介

综述集体学习:将不同的分类器组合起来。先产生个体学习,在根据多个个体学习完成学习任务。每个个体学习可以采用的算法可以不同集成学习可能有不同的提升/不变/降低这要求学习器:单个个体不能太差学习器... 查看详情

机器学习(十三)集成学习和随机森林(上)

一、什么是集成学习  二、SoftVotingClassifier 更合理的投票,应该有的权值      三、Bagging和Pasting 四、oob(Out-of-Bag)和关于Bagging的更多讨论     查看详情

机器学习—集成学习

1、boosting与bagging的区别:   (1)bagging:从原始数据中随机抽样得到S个同样大小的数据集,来训练S个基学习器,各学习器之间互不依赖。是一种并行的方法。   各分类器的权重都是相等的。分类结果是用这S个分类... 查看详情

机器学习之集成学习算法(代码片段)

...#xff0c;因此优于任何一个单分类的做出预测。1.2复习:机器学习的两个核⼼任务任务一:如何优化训练数据 —>主要用于解决欠拟合问题任务二:如何提升泛化性能 — 查看详情

机器学习系列-adaboost

集成学习在一般经验中,如果把好坏不等的东西掺到一起,那么通常结果会是比最坏的要好一些,比最好的要坏一些。这就是集成学习的出发点。如果把多个学习器结合起来,是否能获得比最好的单一学习器更好的性能呢?集成... 查看详情

机器学习(十三)集成学习和随机森林(下)

五、随机森林和Extra-Trees六、AdaBoosting和GradientBoosting七、Stacking       八、学习scikit-learn文档,官方学习文档:http://scikit-learn.org http://scikit-learn.org/stable/user_guide.htm 查看详情

机器学习笔记十三:ensemble思想(上)

...人类直观理解的.用通俗的不能更通俗的话来说,要是一个机器学习器解决不了问题,那就多训练几个.再把这些学习器结合起来完成机器学习任务.可以类比开会,一群人讨论得到的解决办法一般比一个人拍板的要好.用过集成学习之... 查看详情

机器学习笔记十三:ensemble思想(上)

...人类直观理解的.用通俗的不能更通俗的话来说,要是一个机器学习器解决不了问题,那就多训练几个.再把这些学习器结合起来完毕机器学习任务.能够类比开会,一群人讨论得到的解决的方法一般比一个人拍板的要好.用过集成学习... 查看详情

机器学习笔记十三:ensemble思想(上)

...人类直观理解的.用通俗的不能更通俗的话来说,要是一个机器学习器解决不了问题,那就多训练几个.再把这些学习器结合起来完毕机器学习任务.能够类比开会,一群人讨论得到的解决的方法一般比一个人拍板的要好.用过集成学习... 查看详情

机器学习笔记之四adaboost算法

本文结构:什么是集成学习?为什么集成的效果就会好于单个学习器?如何生成个体学习器?什么是Boosting?Adaboost算法?什么是集成学习集成学习就是将多个弱的学习器结合起来组成一个强的学习器。这就涉及到,先产生一组&lsq... 查看详情

机器学习集成学习(boosting)——梯度提升树(gbdt)算法(理论+图解+公式推导)

查看详情

机器学习集成学习代码练习(随机森林gbdtxgboostlightgbm等)

代码修改并注释:黄海广importwarningswarnings.filterwarnings("ignore")importpandasaspdfromsklearn.model_selectionimporttrain_test_split生成数据生成12000行的数据,训练集和测试集按照3:1划分fromsklearn.datasetsimportmake_hastie_10_2data, 查看详情