boosting

Boosting 算法的特点在于:将表现一般的弱分类器通过组合变成更好的模型。代表自然就是我们的随即森林了。

GBDT和Adaboost是boost算法中比较常见的两种,这里主要讲解Adaboost。

Adaboost

Adaboost算法的核心就是两个权重。对于数据有一个权重,权重大的数据计算的损失就大;然后对于每一个弱分类器有一个权重,这个权重就是每一个弱分类器最终投票的比重。

【先给出Adaboost关键的公式】

\(\alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1})\) 分类器的投票权重

\(W_i=W_ie^{-\alpha_i y_i \hat{h}(x_i)}\) 更新样本的权重

【随即森林中最终投票每一个弱分类器的比重相同】

大概流程就是,现在有一个数据集,然后每个数据的比重都相同,然后训练了好几个不同的弱分类器。

  1. 挑选错误率最低的弱分类器,然后通过【某种算法】得到这个弱分类器最终投票的比重,然后通过【某种算法】更新每一个数据的比重;
  2. 因为每一个数据的比重更新了,所以再选择一个错误率最低的弱分类器,然后通过【某种算法】得到这个弱分类器最终投票的比重,然后通过【某种算法】更新每一个数据的比重;
  3. 重复这个过程。

算法的流程:


这里给一个具体计算的例子:

假设这里有10个数据:

加号和减号分别代表不同的类别。然后每个类别有5个样本。

下面会给出3个弱分类器:

这三个分类器分别是\(h_1(x),h_2(x),h_3(x)\)

图中画圈的数据就是分类错误的数据。可以发现每个弱分类器都分错了3个。下面开始Adaboost的算法。

先计算三个弱分类器的错误率,因为一开始每个样本的权重都是0.1,每个分类器又都错了3个样本,所以错误率都是0.3。这里就随机选取第一个分类器作为错误率最低的那个好了。

我们这里通过第一个【某种算法】计算第一个弱分类器在最终的投票权重:

\(\alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1})=0.5*ln(\frac{0.7}{0.3})=0.4236\)

然后通过这个\(\alpha_1=0.4236\)来更新每一个样本的权重。这也就是上面提到的第二个【某种算法】:

\(W(i)=W(i)*e^{-\alpha y_i \hat {h}(x_i)}\)

这啥意思的,现在假设第一个样本+1,这个样本的权重是0.1(更新前),然后这个样本在第一个分类器中是非类正确的,所以\(y_i \hat{h}(x_i)=1\),所以这个样本更新后的权重就是\(0.1e^{-0.4236}=0.0655\)

当然,对于+3这个样本,第一个分类器就分类错误,所以\(y_i \hat{h}(x_i)=-1\),所以呢这个样本更新后的权重就是:\(0.1e^{0.4236}=0.1527\)

下面经过第一个分类器之后的样本的权重:

然后再计算每一个分类器的基于更新之后样本权重的错误率:

这一次选的是第二个分类器,然后计算它的\(\alpha_2\),然后再更新每一个样本的权重值:

然后是再寻找错误率最低的分类器:

到这一步的时候,我们已经有了\(\alpha_1,\alpha_2,\alpha_3\),所以我们的adaboost已经得到了所有分类器的投票权重,所以最终的模型投票公式就是:


喜欢的话请关注我们的微信公众号~【你好世界炼丹师】。

  • 公众号主要讲统计学,数据科学,机器学习,深度学习,以及一些参加Kaggle竞赛的经验。
  • 公众号内容建议作为课后的一些相关知识的补充,饭后甜点。
  • 此外,为了不过多打扰,公众号每周推送一次,每次4~6篇精选文章。

微信搜索公众号:你好世界炼丹师。期待您的关注。

一文搞懂:Adaboost及手推算法案例的更多相关文章

  1. 一文搞懂RAM、ROM、SDRAM、DRAM、DDR、flash等存储介质

    一文搞懂RAM.ROM.SDRAM.DRAM.DDR.flash等存储介质 存储介质基本分类:ROM和RAM RAM:随机访问存储器(Random Access Memory),易失性.是与CPU直接 ...

  2. 基础篇|一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  3. 一文搞懂 Prometheus 的直方图

    原文链接:一文搞懂 Prometheus 的直方图 Prometheus 中提供了四种指标类型(参考:Prometheus 的指标类型),其中直方图(Histogram)和摘要(Summary)是最复 ...

  4. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

  5. 一文搞懂vim复制粘贴

    转载自本人独立博客https://liushiming.cn/2020/01/18/copy-and-paste-in-vim/ 概述 复制粘贴是文本编辑最常用的功能,但是在vim中复制粘贴还是有点麻 ...

  6. 三文搞懂学会Docker容器技术(中)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 6,Docker容器 6.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --na ...

  7. 三文搞懂学会Docker容器技术(下)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 三文搞懂学会Docker容器技术(中) 7,Docker容器目录挂载 7.1 简介 容器目录挂载: 我们可以在创建容器的时候,将宿主机的目录与容器 ...

  8. 一文搞懂所有Java集合面试题

    Java集合 刚刚经历过秋招,看了大量的面经,顺便将常见的Java集合常考知识点总结了一下,并根据被问到的频率大致做了一个标注.一颗星表示知识点需要了解,被问到的频率不高,面试时起码能说个差不多.两颗 ...

  9. 一文搞懂 js 中的各种 for 循环的不同之处

    一文搞懂 js 中的各种 for 循环的不同之处 See the Pen for...in vs for...of by xgqfrms (@xgqfrms) on CodePen. for &quo ...

随机推荐

  1. ArcCore重构-打通Can各层ID配置

    https://mp.weixin.qq.com/s/JX7VZwyMqk_9iVMm_N2pxA https://mp.weixin.qq.com/s/5Y8Dt9j1-NQmnjfYhE19dg ...

  2. Java实现 蓝桥杯 算法训练 Bit Compressor(暴力)

    试题 算法训练 Bit Compressor 问题描述 数据压缩的目的是为了减少存储和交换数据时出现的冗余.这增加了有效数据的比重并提高了传输速率.有一种压缩二进制串的方法是这样的: 将连续的n个1替 ...

  3. Java实现 LeetCode 729 我的日程安排表 I(二叉树)

    729. 我的日程安排表 I 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安排. MyCalendar 有一个 book(int sta ...

  4. Java实现 LeetCode 509 斐波那契数

    509. 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0, F(1) = 1 ...

  5. Java实现 蓝桥杯VIP 算法提高 我们的征途是星辰大海

    算法提高 我们的征途是星辰大海 时间限制:1.0s 内存限制:256.0MB 最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成. 共有四种方格: '.' 代表空地,c ...

  6. Java实现 蓝桥杯 历届试题 邮局

    问题描述 C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流.为了方便村民们发信,C村打算在C村建设k个邮局,这样每户村民可以去离自己家最近的邮局发信. 现在给出了m个备选的邮局,请从中 ...

  7. 密码学DAY1_02

    目录 1.1 ASCII编码 1.2 凯撒加密 1.2.1 中国古代加密 1.2.2 外国加密 1.2.3 凯撒位移加密--JAVA代码实现 1.2.4 频度分析法破解恺撒加密 1.3现代常用的加密方 ...

  8. 关于virgo-tomcat-server-3.6.0.RELEASE服务的启动

    1.先查看程序是否启动,如果已经启动可以执行第3步的操作进行关闭. [user01@ ~]$ # ps -ef|grep java //查看virgo-tomcat-server的java进程是否存在 ...

  9. 大型Electron应用本地数据库技术选型

    开发一个大型Electron的应用,或许需要在客户端存储大量的数据,比如聊天应用或邮件客户端 可选的客户端数据库方案看似很多,但一一对比下来,最优解只有一个 接下来我们就一起来经历一下这个技术选型的过 ...

  10. 用Java模拟游戏重力的实现(弹跳)

    年末开了Java实训大作业 想了好几天决定选择马里奥小游戏 发现即使做出来但是跳跃功能是很“笨拙”的,和我们玩的游戏不一样,没有跳跃速度的快慢什么的,后来才知道这个叫做游戏里面重力的模拟. 组队做系统 ...