AdaBoost原理

AdaBoost基本原理与算法描述 一. 前言 最近在看集成学习方法,前面已经对XGBoost的原理与简单实践做了介绍,这次对AdaBoost算法做个学习笔记,来巩固自己所学的知识,同时也希望对需要帮助的人有所帮助。 关于集成学习主要有两大分支,一种是bagging方法,一种是boosting方法。 bagging方法的弱学习器之间没有依赖关系,各个学习器可以并行生成,最终通过某种策略进行集成得到强学习器(比如回归问题用所有弱... 阅读详情

 

Bagging套袋法

随机森林就采用的套袋法,在Bagging中,通过对训练样本重新采样的方法得到不同的训练样本集,在这些新的训练样本集上分别训练学习器,学习器之间是独立的,最终合并每一个学习器的结果,作为最终的学习结果,Bagging方法的具体过程如下图所示:

 

在Bagging方法中,b个学习器之间彼此是相互独立的,这样的特点使得Bagging方法更容易并行。每个学习器权重都为1/b。

Bossting提升树

梯度提升树就采用的Boosting算法,与Bagging方法不同,在Boosting算法中,学习器之间是存在先后顺序的,同时,每一个样本是有权重的,初始时,每一个样本的权重是相等的。首先,第1个学习器对训练样本进行学习,当学习完成后,增大错误样本的权重,同时减小正确样本的权重,再利用第2个学习器对其进行学习,依次进行下去,最终得到b个学习器,最终,合并这b个学习器的结果,同时,与Bagging中不同的是,每一个学习器的权重也是不一样的。Boosting方法的具体过程如下图所示:

在Boosting方法中,最重要的方法包括:AdaBoost和GBDT。

AdBoosting

AdaBoost算法与Boosting算法不同,它是使用整个训练集来训练弱学习器,其中训练样本在每次迭代的过程中都会重新被赋予一个权重,在上一个弱学习器错误的基础上进行学习来构建一个更加强大的分类器。下面通过一个图来了解AdaBoost算法的工作过程。

 

adaboost相关例子代码实现

AdaBoost算法学习一个强分类器

导包

import numpy as np

from sklearn.ensemble import AdaBoostClassifier

from sklearn import tree

import matplotlib.pyplot as plt
%matplotlib inline

数据

X = np.arange(10).reshape(-1,1)
y = np.array([1,1,1,-1,-1,-1,1,1,1,-1])
display(X,y)

算法

ada = AdaBoostClassifier(n_estimators=3)
ada.fit(X,y)

ada.estimators_

画出第一棵树

plt.figure(figsize=(9,6))
_ = tree.plot_tree(ada[0])

 

y_ = ada[0].predict(X)
y_

真实值

误差率

# 误差率
e1 = np.round(0.1*(y != y_).sum(),4)
e1

计算第一颗树权重,权重越大,说明就越重要

# 计算第一颗树权重,权重越大,说明就越重要
# 随机森林中每棵树的权重一样的
# adaboost提升树中每棵树的权重不同
a1 = np.round(1/2*np.log((1-e1)/e1),4)
a1

更新权重

# 样本预测准确:更新的权重
w2 = 0.1*np.e**(-a1*y*y_)
w2 = w2/w2.sum()#归一化权重,让权重之和等于1
w2 = w2.round(4)
w2

由此可以看出,被误分类的数据的权重从之前的0.1增大到了0.1667

分类函数f1(x)= a1*G1(x) = 0.4236G1(x),G1(x)就是上图w1。

第二轮迭代

画第二棵树

plt.figure(figsize=(9,6))
_ = tree.plot_tree(ada[1])

此轮结果将3个数据划分错了。相应的权重都是0.0715。

计算误差率

# 计算误差率
e2 = 0.0715*3
e2

计算G系数

a2 = np.round(1/2*np.log((1 - e2)/e2),4)
a2

更新权重

y_ = ada[1].predict(X)
w3 = w2*np.e**(-a2*y*y_)
w3 = w3/w3.sum()
w3 = w3.round(4)
w3

依次类推,第3棵树

plt.figure(figsize=(9,6))
_ = tree.plot_tree(ada[2])

 

y_ = ada[2].predict(X)
y_

实际数值

误差率

e3 = (w3*(y_ != y)).sum()
e3

求树的权重

a3 = 1/2*np.log((1 - e3)/e3)
a3

三棵树的权重

display(a1,a2,a3)

弱分类器合并成强分类器

 

# 综上,将上面计算得到的a1、a2、a3各值代入G(x)中,
#     G(x) = sign[f3(x)] = sign[ a1 * G1(x) + a2 * G2(x) + a3 * G3(x) ],
    
# 得到最终的分类器为:
# sign意思负号函数,大于等于0变成1,小于0变成-1
#G1,G2,G3代表树的预测值
G(x) = sign[f3(x)] = sign[ 0.4236G1(x) + 0.6496G2(x)+0.7514G3(x) ]。


y_predict = a1*ada[0].predict(X) + a2*ada[1].predict(X) + a3*ada[2].predict(X)
y_predict

np.sign(y_predict).astype(np.int)

# 使用模型

ada.predict(X)

由此可看,自己推的过程准确。

AdaBoost算法原理详细总结         在集成学习方法之Bagging,Boosting,Stacking篇章中,我们谈论boosting框架的原理,在boosting系列算法中,AdaBoost是著名的算法之一。AdaBoost是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。  ... 阅读详情

相关推荐

AdaBoost算法原理及实例

AdaBoost算法原理及实例 Adaboost相关函数 弱分类器的误差率 ek=P(Gk(xi)≠yi)=∑i=1mwkiI(Gk(xi)≠yi) e_{k}=P\left(G_{k}\left(x_{i}\right) \neq y_{i}\right)=\sum_{i=1}^{m} w_{k i} I\left(G_{k}\left(x_{i}\right) \neq y_{i}\right) ek​=P(Gk​(xi​)​=yi​)=i=1∑m​wki​I(Gk​(xi​)​=yi​)

kui_kui的博客 891

【机器学习】集成算法Bagging和Boosting动画指南

本文通过运用动画理解Bagging和Boosting的核心要点和内部工作原理。

weixin_46287760的博客 726

傻子都能看懂的——详解AdaBoost原理

之前纠结是否要离开优快云,最近还是决定留下来继续。 关于Boost 集成学习中有两个重要概念,分别为Bagging和Boost。其中Boost也被称为增强学习或提升法,是一种重要的集成学习方法,它能够将预测精度仅仅比随机猜测略高的弱学习器增强为预测精度很高的强学习器。这是在直接构造强学习器较为困难的情况下,为学习算法提供了一种有效的新思路和新方法。其中较为成功的是上个世纪90年代Yoav Freund和Robert Schapire提出的AdaBoost算法。 Boost原理图 可以将上图过程总结

大脸猫的博客 4万+

AdBoost算法详解

AdBoost算法详解1 算法简介 算法引入:  对于Boosting算法,存在两个问题   在每一轮中如何调整训练集,使训练的弱分类器得以进行   如何将各个弱分类器联合起来形成强分类器  Boosting框架中的代表算法是AdaBoost算法. 1 算法简介 属于集成学习中的串行学习方法. AdaBoost自适应提升算法和Boosting考虑的点一样 AdaBoost自适应在于:’’关注”被错分的样本,”器重”性能好的弱分类器  不同的训练集–>调整样本的权重  “关注”—>增加错分样本权重

weixin_43179522的博客 1233

AdaBoost算法中寻找最优阈值分类器的代码优化

AdaBoost算法中寻找最优阈值分类器的代码优化,优化的代码

Adaboost 算法的原理与推导

AdaBoost,是英文"AdaptiveBoosting"(自适应增强)的缩写,由YoavFreund和RobertSchapire在1995年提出。它的自适应在于:前一个基本分 类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小 的错误率或达到预先指定的最大迭代次数。

AdaBoost算法超详细讲解

AdaBoost算法超详细讲解

wzk4869的博客 4万+

adaboost原理讲解

adaboost原理讲解;adaboost原理讲解;adaboost原理讲解

adaboost原理(包含权重详细解释)

 1.1 Adaboost是什么 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数

葫芦与瓢的博客 6082

别再手动下单了!用Python+EasyTrader+同花顺,5分钟搞定你的第一个自动化交易机器人

本文详细介绍了如何使用Python和EasyTrader结合同花顺客户端快速构建自动化交易机器人。从环境配置到实战脚本编写,涵盖自动打新、条件单、跟单策略等核心功能,并分享性能优化与风险控制技巧,帮助投资者高效实现自动化交易。

weixin_30381317的博客 398

别再只看K线了!聊聊“板块联动”和“热点轮动”的跟踪方法与工具(实战派分享)

本文深入解析了如何通过板块联动和热点轮动构建高效交易系统。从三维验证框架到主流工具配置,再到持续性热点的五大特征,实战派交易员分享了识别市场主线和预判轮动方向的高阶技巧,帮助投资者摆脱单纯依赖K线的局限,提升交易决策效率。

weixin_29281941的博客 759

Adboost算法

一、发展历史Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合 为一个分类器的方法,即boostrapping方法和bagging方法。我们先简要介绍一下bootstrapping方法和bagging方法。  1)bootstrapping方法的主要过程  主要步骤:  i)重复地从一个样本集合D中采样n个样本  ...

yan的博客 1421

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下...

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下 CT Image with Window presets This is an example of displaying a ct image along with buttons to set ww/wc pres...

浩秦的博客 1841

Adaboost原理

Adaboost介绍 AdaBoost算法与Boosting算法不同,它是使用整个训练集来训练弱学习器,其中训练样本在每次迭代的过程中都会重新被赋予一个权重,在上一个弱学习器错误的基础上进行学习来构建一个更加强大的分类器。下面通过一个图来了解AdaBoost算法的工作过程。 Adaboost算法分析 从图1.1中,我们可以看到adaboost的一个详细的算法过程。Adaboost是一种比较有特点的算法,可以总结如下: 每次迭代改变的是样本的分布,而不是重复采样(re weight) 样本分布的改变取决

Grateful_Dead424的博客 2246

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

【ARMv8 异常模型入门及渐进7 - GIC及安全中断介绍】

GIC-v3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。

CodingCos的博客 2116

AdaBoost原理详解

AdaBoost原理详解

weixin_41529389的博客 188

AI 编程工具面试题(Claude Code、Codex 等)基础篇(一)

文章摘要: 本文整理了20道AI编程工具基础面试题,涵盖Claude Code、Codex CLI、GitHub Copilot等主流工具的核心概念与实操技巧。内容分为工具分类(代码补全/对话式/自主代理)、安装配置(静默部署/API管理)、关键命令(上下文加载/token监控)、调试策略(错误处理/提示优化)及对比选型(Tabnine vs Copilot)。重点解析了终端工具与模型能力的差异,并针对实际场景(如长代码生成/私有化部署)提供解决方案。附追问环节,深入探讨工具边界问题(如上下文溢出处理)和成

篮球界最会写bug的人;程序猿中打球最菜的人。 336

AdaBoost--从原理到实现

一.引入   对于Adaboost,可以说是久闻大名,据说在Deep Learning出来之前,SVM和Adaboost是效果最好的 两个算法,而Adaboost是提升树(boosting tree),所谓“提升树”就是把“弱学习算法” 二.原理 三.实现

DarkScope从这里开始 18万+

电子科技大学计算机预推免(最终去向)

电子科技大学,预推免报名时必须要有一封本校老师写的推荐信,推荐信基本上就是复试的入场券,所以一定要提前联系老师,拿到推荐信。只要有机会进了面试,我觉得老师对于双非并不歧视,面试的个人表现才是关键性决定因素,技巧性也是很强的,如果有需要帮助的,欢迎私信~~

D1379951481的博客 3366

如何创建 SAP ABAP CDS View 的 Association

所以本文我们虽然学习了如何创建 SAP CDS View 的 association,知道了 association 是用来在 CDS View 里将两张数据库表关联起来,但根本不知道怎么使用这个 association. 而且从 association 的写法来看,似乎和本教程之前介绍 inner join,left join 这些数据库表的连接操作没什么区别,都是根据两张表的 carrid 和 connid 字段相同进行的连接。只看到了我们在 CDS View 源代码实现里,放出来的四个字段。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 902

AdaBoost人脸检测原理

AdaBoost人脸检测原理 FROM:http://blog.sina.com.cn/s/blog_4e6680090100d2se.html 对人脸检测的研究最初可以追溯到 20 世纪 70 年代,早期的研究主要致力于模板匹配、子空间方法,变形模板匹配等。近期人脸检测的研究主要集中在基于数据驱动的学习方法,如统计模型方法,神经网络学习方法,统计知识理论和支持向量机方法,基于马尔可夫

凌风探梅的专栏 1067

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

AdaBoost算法原理及实现

AdaBoost算法 输入:训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)}T={(x1,y1),(x2,y2),…,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\},其中xi∈X⊆Rnxi∈X⊆Rnx_i\in \mathcal{X} \subseteq \mathbb{R}^n,yi∈{−1,+1}yi∈{−1,+1}y_...

nudt_oys的博客 1674

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: pandas批量处理体育成绩
下一篇: 线性回归原理及应用
Wind_know
博客等级 码龄9年 17粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值