机智的ensemble

1 引言

本文主要结合了李宏毅的机器学习课程之Ensemble和周志华的《机器学习》西瓜书两者的说法,对ensemble这一竞赛利器做了总结。
Ensemble主要可以分为bagging和boosting两种方法。其中,bagging适用于基模型复杂度比较高的情况(如树模型),其目的是为了减小variance,即阻止过拟合的情况。而boosting则是适用于基模型是弱学习器的情况,其目的是减小biases,基本上多弱模型都可以用(如果分类正确率低于50%,取个反就可以了)~

2 Bagging

个人觉得bagging其实和神经网络中的drop-out非常相似。我们只给每个模型看数据的一部分,不给它们看全貌,然后希望它们在这一部分上有比较好的学习结果,最后综合各个模型的结果,做一个blending,得到最终的结果。
Bagging在选取数据时,采用的是bootstrap的方法,即有放回的抽样。假设我们有 mm 个样本的数据集 D 。我们希望利用有放回的抽样方法构造一个新的数据集 DD′,其样本个数仍旧是m。显然 DD 中的一些数据会在 D 中重复出现,这也就意味着有一部分数据在 DD′ 中是不会出现的。
bagging示意图

图1 bagging示意图(此图出自李宏毅的视频)

我们可以做一个简单的估计。样本在m次采样中,始终没有被采到的概率为 (11m)m(1−1m)m ,取极限的话为
limm(11m)m1e0.368limm→∞(1−1m)m→1e≈0.368

这一部分没有被采样到的数据可以作为验证集来使用,这个方法被称“包外估计”(out-of-bag estimate)。
根据该方法训练得到多个模型之后,可以取平均或者投票得到最终结果。
其中,随机森林便是一个典型的利用bagging方法的模型,只不过在随机森林当中,数据的特征也是随机选取的。

3 Boosting

Boosting的主要想法是在已有模型的基础上,重视被错分的样本,再训练一个模型来融合到原模型中,以此来提高模型的准确率,如此不断反复。那么如何重视被错分的样本呢?这就是boosting的一个有意思的地方了。它给每个样本赋予了一个权重,每次boosting之后,样本的权重就会被更新,而这里的权重直接影响了训练时的Loss function。

L(f)=nl(f(xn),yn)L(f)=nunl(f(xn),yn)L(f)=∑nl(f(xn),yn)→L(f)=∑nunl(f(xn),yn)

式中, unun 即为每个样本的权重。也就是说,现在我们的样本变成了这个样子
{(x1,y1,u1),(x2,y2,u2),,(xn,yn,un)}{(x1,y1,u1),(x2,y2,u2),⋯,(xn,yn,un)}

Boosting的方法有很多,我们这里主要讲一下其中比较流行的AdaBoost算法。
假设我们在第一个基模型 f1(x)f1(x) 上训练得到的错误率为(此时所有样本权重均相同)
ϵ1=nun1δ(f1(xn)yn)Z1ϵ1=∑nu1nδ(f1(xn)≠yn)Z1

其中
Z1=nun1Z1=∑nu1n

我们希望学习器的错误率 ϵ1ϵ1 是大于0.5的,否则我们取个反,或者不要这个学习器,换一个。
知道了哪些训练错了,哪些训练对了之后,我们就要进行最重要的重新分配权重了。所谓的重新分配权重就是给正确的权重除以一个 d1d1 ,错误的权重乘以一个 d1d1 d1>1d1>1
那么这个 d1d1 怎么来?我们希望再更新权重之后,新的权重满足下式
f1(xn)ynun2=f1(xn)=ynun2∑f1(xn)≠ynu2n=∑f1(xn)=ynu2n

也就是说,从权重上来看要错的对的各占一半,即
f1(xn)ynun1d1=f1(xn)=ynun1/d1∑f1(xn)≠ynu1nd1=∑f1(xn)=ynu1n/d1

其中, Z1ϵ1=f1(xn)ynun1d1Z1ϵ1=∑f1(xn)≠ynu1nd1 Z1(1ϵ1)=f1(xn)=ynun1d1Z1(1−ϵ1)=∑f1(xn)=ynu1nd1,代入上式可得
d1=(1ϵ1)/ϵ1d1=(1−ϵ1)/ϵ1

再用此时的权重去训练出第二个模型 f2(xn)f2(xn) 。之后,继续如此操作,直到达到弱分类器个数限制。
为了方便表示,我们通常把 dd 表示成 eα 的形式,那么,权重的更新可以直接写成
unt+1=unteynft(xn)αt=i=1teynαifi(xn)ut+1n=utn⋅e−ynft(xn)αt=∏i=1te−ynαifi(xn)

其中, αt=ln(dt)αt=ln(dt)
得到所有的模型之后,我们希望把训练的 TT 个模型融合起来,这个融合的过程就叫做blending。
一种简单的做法就是直接取结果的平均
H(x)=sign(t=1Tft(x))H(x)=sign(∑t=1Tft(x))

但这样的做法不够机智。我们每个模型的可信度是不同的,我们需要给每个模型一个权重,得到一个加权平均的结果
H(x)=sign(t=1Tαtft(x))H(x)=sign(∑t=1Tαtft(x))

这里的 αtαt 就是我们前面的 αt=ln((1ϵ1)/ϵ1)αt=ln((1−ϵ1)/ϵ1)。可以证明随着模型数量的增加,模型在训练集上的表现会越来越好,详细证明可参见李宏毅的视频。

4 Gradient Boosting

顾名思义,这是用Gradient的方法来进行boosting。上文中的Adaboost其实就是一种特殊的Gradient Boosting。Gradient Boosting的总体流程为
GB流程图

图2 Gradient Boosting流程图

既然是要做Gradient,当然要有目标函数啊。这里的目标函数就是
L(g)=nl(yn,g(xn))L(g)=∑nl(yn,g(xn))

于是,就有
gt(x)=gt1ηL(g)g(x)|g(x)=gt1(x)gt(x)=gt−1−η∂L(g)∂g(x)|g(x)=gt−1(x)

又由于
gt(x)=gt1(x)+αtft(x)gt(x)=gt−1(x)+αtft(x)

所以我们希望 ηL(g)g(x)|g(x)=gt1(x)−η∂L(g)∂g(x)|g(x)=gt−1(x) αtft(x)αtft(x) 是方向相同的。即找到一个 ft(x)ft(x) 使得
maxft(x)ηft(x)L(g)g(x)|g(x)=gt1(x)maxft(x)−ηft(x)∂L(g)∂g(x)|g(x)=gt−1(x)

然后找一个 αtαt 使得 L(g)L(g) 最小。
L(g)=neyng(xn)L(g)=∑ne−yng(xn) 的时候,可以推出这就是我们的Adaboosting。
详细推导过程偷下懒,参见李宏毅的视频即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux的sort命令

Linux的sort命令 Linux的sort命令就是一种对文件排序的工具,sort命令的功能十分强大,是Shell脚本编程时常使用的文件排序工具。 sort命令将输入文件看做由多条记录组成的数据流,而记录由可变宽度的字符串组成,以换行符作为定界符。…

delphi 调用php接口_爱站权重查询 API 接口请求调用

爱站权重查询 API 接口在网上已经很多且大都封装成了 API 供别人调用。支持前台跨域请求,以GET/POST方式提交即可。爱站权重查询 API 接口可以查询百度权重、搜狗等级、360权重、神马权重、谷歌等级等,你可以选择调用本站的接口,也可以利用本…

Express 路由、Ejs 、静态文件托管、中间件

一、 Express 简单介绍 Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架,它提供一系 列强大的特性,帮助你创建各种 Web 和移动设备应用。 Express 官网: 英语官网:http://expressjs.com/中文官网…

相邻位数字差值的绝对值不能超过_热点争议中技术问题,伺服控制有几个零点?对应真绝对值多圈编码器意义...

回归技术,把技术问题单独挑出来讲透,争要争个明白,看要看得明白。技术就能越辩越明。如果有“真”与“假”之争,沉默不去争,就是让“真的”受伤,让真心实干的人受伤。伺服控制有三个零点,对应三…

Chapter1-1_Speech_Recognition(Overview)

文章目录1 古人看语音辨识2 什么是语音辨识2.1 输出部分 - Token2.2 输入部分 - 声音信号特征3 数据集4 模型本文为李弘毅老师【Speech Recognition - Overview】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自…

[Swift]loadNibNamed方法

我们自定义UITableViewCell的时候,经常会创建一个xib文件。 (注意:选择创建文件要继承于cocoa touch class,而不是cocoa class,否则你是选不了创建xib的!!!) 然后我们可以…

Express Cookie 的基本使用

一、Cookie 简介 ● cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域 名的时候共享数据。 ● HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个…

Chapter1-2_Speech_Recognition(LAS)

文章目录1 内容简述2 模型详述2.1 ListenRNN Encoder1D-CNN EncoderSelf-attentinon EncoderDown Sampling2.2 Attend2.3 Spell2.4 Beam Search2.5 Training2.6 Back to Attention本文为李弘毅老师【Speech Recognition - Listen, Attend, Spell】的课程笔记,课程视…

智能车的转弯部分_江西智能搬运平板车铁路轨道运输车-厂家直销

本公司致力发展搬运设备,从公司成立至今一直在做电动平车的研发,从几十千克自动化物流车到成百上千吨都能自行研发制造,取得了优异的业内好评和广大消费者的肯定! BWP型无轨平板车是一种使用特殊的行走机构,能够在较小…

Express Session 的基本使用

一、 Session 简单介绍 session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。 Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上。Session 相比 Cookie 要 更安全一些。由于 Ses…

Chapter1-3_Speech_Recognition(CTC, RNN-T and more)

文章目录1 CTC2 RNN-T3 Neural Transducer4 Monotonic Chunkwise Attention5 小结本文为李弘毅老师【Speech Recognition - CTC, RNN-T and more】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的…

java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享

项目简介:专门针对微信服务号开发的一套微信商城,微信分销商城,支持商品多规格,支持按地区设置邮费,支持限时打折,订单返现,满减送,满包邮,支持订单打印,订单…

Express 路由模块化以及 Express 应用程序生成器

一、 Express 路由模块化 https://expressjs.com/en/guide/routing.html Express 中允许我们通过 express.Router 创建模块化的、可挂载的路由处理程序。 1、新建一个 user.js 配置如下代码 var express require(express) var router express.Router() router.get(/, fun…

qscrollarea 设置滚动位置_爱剪辑:影视剧滚动字幕片尾,效果竟然如此高端精美...

大家好今天教大家制作滚动字幕片尾这种效果经常在影视剧和自媒体中看到不仅好看精美,而且还高大上快来学习吧~视频教程:爱剪辑:影视剧滚动字幕片尾教程https://www.zhihu.com/video/1174030334688632832移动视频的位置导入视频后&…

iOS 测试三方 KIF 的那些事

一: KIF 三方库的配置 今天的广州天气还不错,原本想试试UI测试的,前几天也了解到很多公司都在用 KIF 这这三方框架!!今天也就试着做做,可就跪在了这个安装上,我用cocopods 导入了 KIF&#xf…

Chapter1-4_Speech_Recognition(HMM)

文章目录1 HMM用在哪里2 HMM的state3 改造成DNN3.1 Tandem3.2 DNN-HMM Hybrid本文为李弘毅老师【Speech Recognition - HMM (optional)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。其中也涉及到了部分李琳山老师关于HMM的详解&#…

Express 结合 multer 上传图片

一、 Multer 模块介绍 Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用 于上传文件。 它是写在 busboy 之上非常高效。 注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。 https://www.npmjs.com…

ad19pcb设置恢复默认_条码打印机-斑马产品常用恢复出厂设置

当我们手上拿到条码打印机,遇到一下无法挽回的时候,我们可以选择恢复下出厂设置,这样使打印机还原到出厂,或许是很好的选择,接下来我们看下斑马条码打印机操作方法如下:Zebra 条码打印机恢复出厂1、有面板的…

Chapter1-5_Speech_Recognition(Alignment of HMM, CTC and RNN-T)

文章目录1 为什么需要Alignment2 穷举所有的alignment2.1 HMM的对齐2.2 CTC的对齐2.3 RNN-T的对齐3 小结本文为李弘毅老师【Speech Recognition - Alignment of HMM, CTC and RNN-T (optional)】的课程笔记,课程视频youtube地址,点这里👈(需翻…

mongoose 入门以及 mongoose 实现数据 的增、删、改、查

一、mongoose 介绍 Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose 是 NodeJS 的驱动,不能作为其他语言的驱动。 Mongoose 有两个特点 : 1、通过关系型数据库的思想来设计非关系型数据库 2、基于 mongodb 驱动&…