机器学习---集成学习(三个臭皮匠顶个诸葛亮)

2024-02-12 02:30

本文主要是介绍机器学习---集成学习(三个臭皮匠顶个诸葛亮),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本思路

群体智慧:如果能从所有的科学家中选择一群科学家组成一个团队,并且团队中的每个科学家都略强于随机选择的一个科学家,那么有理由相信这个科学家团队能比单个科学家做出更好的决定。
这样的群体智慧用到机器学习的学习器上也成立,集合多个个体学习器的方法称为集成学习
目前集成学习主要分成两大流派:

  • bagging
  • boosting

1 bagging

一棵树是决策树,多棵树是随机森林,解决决策树泛化能力不足的缺点
随机森林:

  • 随机选择样本
  • 随机选择特征

而且是有放回的随机抽样:自主采样法(bootstap sampling)
分类器并行。
在这里插入图片描述
投票法:少数服从多数

2 boosting(提升)

自适应地改变训练样本的分布,使得弱分类器聚焦到那些很难分类的样本上。它的做法是每一个训练样本赋予一个权重,在每一轮训练结束后自动地调整权重。
弱分类器是串行的,因此是个迭代的过程。
在这里插入图片描述

  • adaboost:boosting + 决策树
  • GBDT:梯度提 升树
  • XGBoost:

2.1 结合策略

多个学习器并不是简单的拼凑在一起,而是有策略的组合在一起,机器学习是靠数据驱动的,因此通过训练集就能找到能让每个学习器发挥最大效果的策略组合。
常用的组合策略有:

2.1.1 平均法

算术平均
加权平均
H ( x ) = 1 / n ∑ i = 1 n w i h i s . t . w I ≥ 0 , ∑ i = 1 n w i = 1 H(x)=1/n\sum_{i=1}^{n}w_ih_i \\ s.t. w_I \geq0,\sum_{i=1}^{n}w_i=1 H(x)=1/ni=1nwihis.t.wI0,i=1nwi=1

2.2.2 投票法

分类常用

  • 相对多数投票法:少数服从多数
  • 绝对多数投票法:投票数过半数
  • 加权投票法:权重

2.2.3 学习法

代表:stacking
对结果再加一层学习器,将训练集弱学习器的学习结果作为输入,训练集的输出作为输出,重新训练一个学习器来得到最终结果。
kaggle中一般用学习法。

2.2 Adaboost (adaptive boosting)

Adaboost 被认为是模型为加法模型,损失函数为指数函数、学习算法为前向分布算法时的二类分类学习方法。

2.2.1 加法模型

加法模型可以看作模型是一系列基函数的线性组合。
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=\sum_{m=1}^{M}\beta_mb(x;\gamma_m) f(x)=m=1Mβmb(x;γm)

b ( x ; γ m ) b(x;\gamma_m) b(x;γm)是基函数, γ m \gamma_m γm是基函数的参数, β m \beta_m βm是基函数的系数。

2.2.2 损失函数

指数函数
L ( y , f ( x ) ) = e x p ( − y f ( x ) ) L(y,f(x)) = exp(-yf(x)) L(y,f(x))=exp(yf(x))

我们总是希望损失函数极小化:
m i n β m , γ m ∑ i = 1 N L ( y i , f ( x i ) ) = m i n β m , γ m ∑ i = 1 N L ( y i , ∑ i = 1 M β m b ( x i ; γ m ) ) \underset{\beta_m,\gamma_m}{min}\quad\sum_{i=1}^{N}L(y_i,f(x_i))\\ =\underset{\beta_m,\gamma_m}{min}\quad \sum_{i=1}^{N}L(y_i,\sum_{i=1}^{M}\beta_mb(x_i;\gamma_m)) βm,γmmini=1NL(yi,f(xi))=βm,γmmini=1NL(yi,i=1Mβmb(xi;γm))

2.2.3 前向分布算法

通常上面的损失函数是一个复杂的优化问题。但因为学习的是加法模型,如果能够从前往后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数项,就可以简化优化的复杂度。
具体每步只需要优化如下的损失函数:

  1. 初始化模型 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0;

  2. 对每个样本 f o r m = 1 , 2 , . . . M for\quad m = 1,2,...M form=1,2,...M

    • 极小化损失函数
      a r g    m i n β m , γ m ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x ; γ ) ) ) \underset{\beta_m,\gamma_m}{arg\;min}\sum_{i=1}^{N}L(y_i,f_{m-1}(x_i)+\beta b(x_;\gamma))) βm,γmargmini=1NL(yi,fm1(xi)+βb(x;γ)))

    • 更新加法模型 f m ( x ) f_m(x) fm(x)
      f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_m(x)=f_{m-1}(x)+\beta_mb(x;\gamma_m) fm(x)=fm1(x)+βmb(x;γm)

  3. 得到加法模型:
    f ( x ) = f M ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=f_M(x)=\sum_{m=1}^{M}\beta_mb(x;\gamma_m) f(x)=fM(x)=m=1Mβmb(x;γm)

只需把基函数换成弱分类器 G m ( x ) G_m(x) Gm(x),就能得到adaboost算法:

2.2.4 adaboost

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , y ∈ { − 1 , + 1 } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},y\in\{-1,+1\} T={(x1,y1),(x2,y2),...,(xN,yN)},y{1,+1}
输出:最终分类器 G ( x ) G(x) G(x)

  1. 初始化训练数据的权值分布:
    赋予训练集中每个样本一个权重,构成权重向量D,并假设每个权重都相等。
    D = ( w 11 , . . . , w 1 i , . . . , w i N ) , w 1 i = 1 N D=(w_{11},...,w_{1i},...,w_{iN}),w_{1i}=\dfrac{1}{N} D=(w11,...,w1i,...,wiN),w1i=N1

  2. 加法模型:叠加模型直到满足条件
    f o r m = 1 , 2 , . . . , M : for\quad m=1,2,...,M: form=1,2,...,M:(m为模型个数)
    (a). 使用具有权值分布 D m D_m Dm的训练数据集学习,得到基本分类器:
    G m ( x ) : χ → { − 1 , + 1 } G_m(x):\chi \to \{-1,+1\} Gm(x):χ{1,+1}

    (b). 计算 G m ( x ) G_m(x) Gm(x)在训练数据集上的分类误差率:
    e m = 分 错 的 数 量 样 本 总 数 e_m=\dfrac{分错的数量}{样本总数} em=

    e m = ∑ i = 1 N w m i I ( y i    ≠ G m ( x i ) ) ∑ i = 1 N w m i = ∑ i = 1 N w m i I ( y i    ≠ G m ( x i ) ) e_m=\dfrac{\sum_{i=1}^{N}w_{mi}I(y_i\;\neq G_m(x_i))}{ \sum_{i=1}^{N}w_{mi} } \\=\sum_{i=1}^{N}w_{mi}I(y_i\;\neq G_m(x_i)) em=i=1Nwmii=1NwmiI(yi̸=Gm(xi))=i=1NwmiI(yi̸=Gm(xi))

    ©.计算分类器 G m ( x ) G_m(x) Gm(x)的权重系数
    α m = 1 2 l o g 1 − e m e m \alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m} αm=21logem1em

    1 − e m \quad \quad 1-e_m 1em是准确率, 1 − e m e m \dfrac{1-e_m}{e_m} em1em是相对准确率,可见错误率 e m e_m em上升,分类器所占的权重 α m \alpha_m αm就会降低。
    (d). 更新训练数据集的权重分布
    D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , . . . . , w m + 1 , N ) D_{m+1}=(w_{m+1,1},w_{m+1,2},....,w_{m+1,N}) Dm+1=(wm+1,1,wm+1,2,....,wm+1,N)

w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x i ) ) w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i)) wm+1,i=Zmwmiexp(αmyiGm(xi))

Z m Z_m Zm是归一化因子,它使 D m D_m Dm成为一个概率分布:
Z m = ∑ i = 1 N w m i e x p ( − α m y i G m ( x i ) ) Z_m=\sum_{i=1}^{N}w_{mi}exp(-\alpha_my_iG_m(x_i)) Zm=i=1Nwmiexp(αmyiGm(xi))

  1. 构建基本分类器的线性组合:
    f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^{M}\alpha_mG_m(x) f(x)=m=1MαmGm(x)

得到最终分类器:
G ( x ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x)=sign(\sum_{m=1}^{M}\alpha_mG_m(x)) G(x)=sign(m=1MαmGm(x))

Adaboost的训练误差分析表明,Adaboost的每次迭代可以减少它在训练数据集上的分类误差率,这说明了它作为提升方法的有效性。

Adaboost的优点:

  • 易用,需要调节的参数少;
  • 弱分类器可以是任何模型,比如逻辑回归, 线性回归等等, 最常用的是决策树桩;

3. 提升树

提升树是以分类树和回归树为基本分类器的提升方法,提升方法采用加法模型与前向分布算法,以决策树为基函数的提升方法称为提升树。

3.1梯度提升树算法

当损失函数是平方损失和 指数损失函数时,每一步的优化是简单的。但对于一般损失函数而言,则利用损失函数的负梯度去近似平方损失中的残差。

代码实现

决策树桩:基于单个特征的单层决策树,相当于在分类平面的一条水平线
每个弱分类器只能选择一个特征。

参考:

  1. 李航- 统计学习
  2. https://zhuanlan.zhihu.com/p/38507561
  3. https://www.bilibili.com/video/av56033745?from=search&seid=17687865746952149587

这篇关于机器学习---集成学习(三个臭皮匠顶个诸葛亮)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701442

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

SpringBoot集成Netty,Handler中@Autowired注解为空

最近建了个技术交流群,然后好多小伙伴都问关于Netty的问题,尤其今天的问题最特殊,功能大概是要在Netty接收消息时把数据写入数据库,那个小伙伴用的是 Spring Boot + MyBatis + Netty,所以就碰到了Handler中@Autowired注解为空的问题 参考了一些大神的博文,Spring Boot非controller使用@Autowired注解注入为null的问题,得到

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容进行存储,断电数据就没了。 器件之间传输bit数据在总线上是一个一个传输的,因为通过电压传输(电流不稳定),但是电压属于电势能,所以可以叠加互相干扰,这也就是硬盘,U盘

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主