首页 > 其他分享 >机器学习之集成学习Ensemble

机器学习之集成学习Ensemble

时间:2023-08-14 11:32:59浏览次数:57  
标签:集成 分类器 训练 学习 算法 Boosting Bagging Ensemble


 集成算法:

将多个分类器集成起来而形成的新的分类算法。这类算法又称元算法(meta-algorithm)。最常见的集成思想有两种bagging和boosting。

集成思想 :

  1. boosting:重赋权(re-weighting)--基于错误提升分类器性能,通过集中关注被已有分类器分类错误的样本,构建新分类器并集成。boosting的思想是 : 训练集(其中各个元素)的权重是根据学习器的表现来改变的.bagging采用自助采样的方式”产生”出多个训练集.但是boosting只有一个训练集,但是训练集中各个元素(输入向量)的权重是不同的.boosting是先从具有初始权重的训练集训练出一个弱学习器1,然后根据弱学习器1的表现,来更新样本的权重. 然后再具有新的权重的训练集上面训练弱学习器2,然后根据弱学习器2的表现来更新样本的权重……..反复多次 ,得到m个学习器,最后整合这些弱学习器得到强学习器. 比较出名的就是Adaboost算法。

机器学习之集成学习Ensemble_决策树

  1.            
  2. bagging:bootstrap sampling(有放回地取样)
    --基于数据随机重抽样的分类器构建方法。 


    bagging的思想 :  通过自助采样的方法得到K个训练集,然后分别在这K个训练集上面训练学习器.然后就得到了K个学习器. bootstrap : 不依靠外界的帮助,或者叫做自助法. 在这里表示一种有放回的抽样方法. bootstrap sampling : 自助采样,对于N个样本的训练集,我从里面随机取出m个样本,得到一个子训练集.然后把这些样本放回. 然后再取m个样本,得到第二个子训练集,再放回去………..重复这样的步骤k次,得到k个子训练集. Bagging可以看做是bootstrap aggregation的简写. 

bagging对于弱学习器没有限制,也就是说,你可以用决策树,SVM等等都是可以的.一般常用的是决策树和神经网络. 因为bagging的随机采样思路,模型的泛化能力很强,降低了模型的方差.但是对于训练集的拟合程度就不是那么好,也就是说偏差会大一些. 符合bagging思想的比较出名的学习算法就是随机森林.

主要方法:



1、强可学习和弱可学习


    在集成学习方法中,是将多个弱模型,通过一定的组合方式,组合成一个强模型。在《统计学习方法》中介绍了“强可学习(strongly learnable)”和“弱可学习(weakly learnable)”的概念。


    在概率近似正确(probably approximately correct, PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。一个概念,如果存在一个多项式的学习算法能够学习它,学习正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。Schapire指出在PAC学习框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。那么对于一个学习问题,若是找到“弱学习算法”,那么可以将弱学习方法变成“强学习算法”。


2、在验证集上找表现最好的模型


    这样的方法的思想与决策树的思想类似,在不同的条件下选择满足条件的算法。


3、多个模型投票或者取平均值


    对于数据集训练多个模型,对于分类问题,可以采用投票的方法,选择票数最多的类别作为最终的类别,而对于回归问题,可以采用取均值的方法,取得的均值作为最终的结果。在这样的思路里最著名的是Bagging方法.Bagging即Boostrap Aggregating,其中,Boostrap是一种有放回的抽样方法,其抽样策略是简单的随机抽样。


    在Bagging方法中,让学习算法训练多次,每次的训练集由初始的训练集中随机取出的

个训练样本组成,初始的训练样本在某次的训练集中可能出现多次或者根本不出现。最终训练出

个预测函数

,最终的预测函数为

对于分类和回归问题可采用如下的两种方法:

  1. 分类问题:采用投票的方法,得票最多的类别为最终的类别
  2. 回归问题:采用简单的平均方法


随机森林算法就是基于Bagging思想的学习算法。


4、对多个模型的预测结果做加权平均


    在Bagging方法中,其特点在于随机化抽样,通过反复的抽样训练新的模型,最终在这些模型的基础上取平均。而在对多个模型的预测结果做加权平均则是将多个弱学习模型提升为强学习模型,这就是Boosting的核心思想。


    在Boosting算法中,初始化时对每个训练样本赋予相等的权重,如

,然后用该学习算法对训练集训练

轮,每次训练后,对训练失败的训练样本赋予更大的权重,也就是让学习算法在后续的学习中几种对比较难学的训练样本进行学习,从而得到一个预测函数序列

,其中每个

都有一个权重,预测效果好的预测函数的权重较大。最终的预测函数为

对于分类和回归问题可采用如下的两种方法:

  1. 分类问题:有权重的投票方式
  2. 回归问题:加权平均


AdaBoost和GBDT(Gradient Boosting Decision Tree)是基于Boosting思想的两个最著名的算法。


算法示例:


机器学习之集成学习Ensemble_决策树_02

  1. 随机森林(Random Forest: bagging + 决策树):
    将训练集按照横(随机抽样本)、列(随机抽特征)进行有放回的随机抽取,获得n个新的训练集,训练出n个决策树,通过这n个树投票决定分类结果。主要的parameters 有n_estimators 和 max_features。
  2. Adaboost (adaptive boosting: boosting + 单层决策树):训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在统一数据集上再训练分类器。在第二次训练中,会调高那些前一个分类器分类错误的样本的权重。如此反复,训练出许多分类器来进行加权投票,每个分类器的权重是基于该分类器的错误率计算出来的。
  3. GBDT (Gradient Boosting Decision Tree: boosting + 决策树):
    GBDT与Adaboost类似,反复训练出多个决策树,每次更新训练集的权重是按照损失函数负梯度的方向。n_estimators是弱分类器个数;max_depth或max_leaf_nodes可以用来控制每棵树的规模;learning_rate是hyper-parameter,取值范围为(0, 1.0],用来控制过拟合与欠拟合


Boosting和Bagging的区别:  
(1)从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成;而Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更加明显; 
(2)Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boosting的各轮训练集的选择与前面各轮的学习结果有关,即Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging; 
(3)Bagging的各个预测函数没有权重,而Boosting是有权重的; 
(4)Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成; 
(5)对于像神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销; 
(6)bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。但在有些数据集中,boosting会导致Overfit。




补充结合策略 :


机器学习之集成学习Ensemble_权重_03




标签:集成,分类器,训练,学习,算法,Boosting,Bagging,Ensemble
From: https://blog.51cto.com/u_12667998/7074448

相关文章

  • 机器学习machine learning
    机器学习 朴素贝叶斯的优点: 对小规模的数据表现很好,适合多分类任务,适合增量式训练。 缺点: 对输入数据的表达形式很敏感。 决策树的优点: 计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征; 缺点: 容......
  • python 学习-函数-匹配替换等操作
    1.re.match匹配re.match(pattern,string)`:从字符串的开头匹配正则表达式,返回一个匹配对象。如果没有找到匹配的子串,返回`None`str='choice:['app1-ui','app2-ui']'#查找str是否以空格开头第一个有效字符是choice的的行,如果是打印okifre.match(r'\s+choice.*',str):......
  • 4月份学习总结
       这个月开始了向自己的课外计划迈步。   学会了UltraISO、老毛桃、虚拟机的使用,从光盘提取iso文件制作了系统U盘并用虚拟机调试装机。也开始向会声会影进攻,接下来还会有photoshop.  期间并没有那么顺利,如iso文件不可用,虚拟机无法启动,会声会影等软件需付费激活等......
  • Java入门学习——day4(基础语法)
    一、关键字Java语言自己用到的一些词,有特殊作用的,我们称之为关键字,如:public、class、int、double......注意:关键字是Java用了的,我们就不能用来作为:类名、变量,否则会报错!注意:关键字很多,不用刻意去记,因为会报错。二、标识符标识符就是名字,我们写程序时会起一些名字,如类名......
  • 传统企业的智能化IPD(产品集成开发)转型
    我国传统企业在完成建立与市场经济体制相适应的现代企业制度改革后,随着近几十年来的不懈努力,我国综合国力和经济实力不断提升,不少国内传统企业近些年在国内外地位、行业声望、企业利润方面均有大幅增长,呈现出发展速度快、经济效益好的良好局面。但我们同时也清醒地认识到,一直以来国......
  • gateway网关快速启动的学习
    配置gateway网关需要先创建model为这个model添加spring-cloud-starter-gateway依赖以及spring-cloud-starter-alibaba-nacos-discovery的依赖,然后在yml文件中为对应的服务器编写属性注意:服务器名称需要是唯一,重新启动后10010就可以访问user接口了 ......
  • 学习go语言编程之错误处理
    error接口Golang中有一个关于错误处理的标准模式,即:error接口。typeerrorinterface{ Error()string}对于大多数函数,如果要返回错误,大致上都可以定义为如下模式:funcFoo(paramint)(nint,errerror){ //...}将error作为多种返回值中的一个,但是这并非强制要求。......
  • 学习go语言编程之面向对象
    类型系统类型系统是指一个语言的类型体系结构,一个典型的类型系统通常包含如下基本内容:基础类型,如:byte、int、bool、float等复合类型,如:数组、结构体、指针等可以指向任意对象的类型(Any类型)值语义和引用语义面向对象,即:所有具备面向对象特征(比如成员方法)的类型接口为类型添......
  • Kafka 消息传递机制与 Spring Boot 集成实践
    Kafka作为一款强大的分布式消息中间件,被广泛应用于实时数据流处理和事件驱动的架构。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中集成和使用Kafka进行消息传递。1.Kafka消息传递机制概述Kafka使用发布-订阅模型来实现高效的消......
  • Kafka 消息传递机制深度解析与 Spring Boot 集成实践
    Kafka作为一款强大的分布式消息中间件,在实时数据流处理和事件驱动架构中扮演着关键角色。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中集成和使用Kafka进行消息传递。1.Kafka消息传递机制剖析Kafka采用发布-订阅模型实现高效的......