【机器学习】集成学习算法之AdaBoost

news2024/11/22 4:20:12

文章目录

  • 基本步骤
  • 示例
    • 生成第 1 棵决策树
    • 生产第 2 棵决策树
    • 生成第 T 棵决策树
    • 加权投票
  • sklearn 实现

基本步骤

首先,是初始化训练数据的权值分布 D 1 D_1 D1。假设有 m m m 个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值: w 1 = 1 m w_1 = \large \frac{1}{m} w1=m1,这样训练样本集的初始权值分布 D 1 ( i ) D_1(i) D1(i)
D 1 ( i ) = w 1 = ( w 11 , ⋯   , w 1 m ) = ( 1 m , ⋯   , 1 m ) D_1(i) = w_1 = (w_{11}, \cdots, w_{1m}) = (\frac{1}{m}, \cdots, \frac{1}{m}) D1(i)=w1=(w11,,w1m)=(m1,,m1)

进行迭代 t = 1 , ⋯   , T t = 1, \cdots, T t=1,,T

选取一个当前误差最低的弱分类器 h t h_t ht 作为第 t t t 个基本分类器,并计算弱分类器 h t : X → { − 1 , 1 } h_t:X\rightarrow \{-1, 1\} ht:X{1,1},该弱分类器在分布 D t D_t Dt 上的分类错误率为:
ϵ t = P ( h t ( x i ) ≠ y i ) = ∑ i = t n w t i I ( h t ( x i ) ≠ y i ) \epsilon_t = P(h_t(x_i) \neq y_i) = \sum ^n _{i=t} w_{ti} I(h_t(x_i) \neq y_i) ϵt=P(ht(xi)=yi)=i=tnwtiI(ht(xi)=yi) 其中,
I ( h t ( x i ) ≠ y i ) = { 1 h t ( x i ) ≠ y i 0 h t ( x i ) = y i I(h_t(x_i) \neq y_i) = \begin{cases} 1 & h_t(x_i) \neq y_i \\\\ 0 & h_t(x_i) = y_i \\ \end{cases} I(ht(xi)=yi)= 10ht(xi)=yiht(xi)=yi​分类错误率应满足 0 < ϵ < 0.5 0 < \epsilon < 0.5 0<ϵ<0.5

​第 t t t 个弱分类器 h t h_t ht 的权重系数为:
α t = 1 2 l o g ( 1 − ϵ t ϵ t ) \alpha_t = \frac{1}{2} log\left(\frac{1 - \epsilon_t}{\epsilon_t}\right) αt=21log(ϵt1ϵt)
​并求出新权重 w t + 1 = ( w t + 1 , 1 , ⋯   , w t + 1 , m ) w_{t+1} = (w_{t+1,1}, \cdots, w_{t+1,m}) wt+1=(wt+1,1,,wt+1,m),其中:
w t + 1 , i = w t i e − α t y i h t ( x i ) = { w t i e α t h t ( x i ) ≠ y i w t i e − α t h t ( x i ) = y i w_{t+1,i} = w_{ti} e^{-\alpha_t y_i h_t(x_i)} = \begin{cases} w_{ti} e ^{\alpha_t} & h_t(x_i) \neq y_i \\\\ w_{ti} e ^{-\alpha_t} & h_t(x_i) = y_i \\ \end{cases} wt+1,i=wtieαtyiht(xi)= wtieαtwtieαtht(xi)=yiht(xi)=yi
对新权重进行归一化处理,其中 Z t Z_t Zt归一化常数,得出训练样本的权重分布 D t + 1 D_{t+1} Dt+1 为:

D t + 1 = w t + 1 Z t D_{t+1} = \frac{w_{t+1}}{Z_{t}} Dt+1=Ztwt+1 简化上述过程公式为:
D t + 1 = D t Z t × { e − α t h t ( x i ) ≠ y i e α t h t ( x i ) = y i = D t e − α t y h t ( x ) Z t \begin{aligned} D_{t+1} & = \frac{D_t}{Z_t} × \begin{cases} e^{-\alpha_t} & h_t(x_i) \neq y_i \\\\ e^{\alpha_t} & h_t(x_i) = y_i \\ \end{cases} \\\\ & = \frac{D_te^{{-\alpha_t y h_t(x)}}}{Z_t} \end{aligned} Dt+1=ZtDt× eαteαtht(xi)=yiht(xi)=yi=ZtDteαtyht(x)

最后是集合策略。Adaboost分类采用的是加权表决法,构建基本分类器的线性组合:
f ( x ) = ∑ t = 1 T α t h t ( x ) f(x) = \sum ^T _{t=1} \alpha_t h_t(x) f(x)=t=1Tαtht(x)
通过符号函数 sign 的作用,得到一个最终的强分类器为:
H ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ t = 1 T α t h t ( x ) ) H(x) = sign(f(x)) = sign(\sum ^T _{t=1} \alpha_t h_t(x)) H(x)=sign(f(x))=sign(t=1Tαtht(x))

示例

考虑一个分类数据集

序号 X 1 X_1 X1 X 2 X_2 X2 Y Y Y
1001
20.50.91
311.2-1
41.20.7-1
51.40.61
61.60.2-1
71.70.41
8201
92.20.1-1
102.51-1

生成第 1 棵决策树

(随机) 选择条件 x 2 ≤ 0.65 x_2 ≤ 0.65 x20.65 生成第 1 棵决策树

在这里插入图片描述

在分布 D 1 = ( 0.1 , ⋅ ⋅ ⋅ , 0.1 ) T D_1 = (0.1, · · · , 0.1)^T D1=(0.1,⋅⋅⋅,0.1)T 下,计算分类错误率 ϵ = 0.3 ϵ = 0.3 ϵ=0.3,求出权重系数 α 1 \alpha_1 α1
α 1 = 1 2 l o g ( 1 − ϵ ϵ ) = 0.184 α_1 = \frac{1}{2} log\left( \frac{1−ϵ} {ϵ} \right) = 0.184 α1=21log(ϵ1ϵ)=0.184

再求出新权重 w 2 = ( w 2 , 1 , ⋯   , w 2 , 10 ) w_2 = (w_{2,1}, \cdots, w_{2,10}) w2=(w2,1,,w2,10),其中:
w 2 , i = { w 1 i e α 1 i f    y ≠ y ^ w 1 i e − α 1 i f    y = y ^ w_{2,i} = \begin{cases} w_{1i} e ^{\alpha_1} & if ~~ y \neq \hat y \\\\ w_{1i} e ^{-\alpha_1} & if ~~ y = \hat y \\ \end{cases} w2,i= w1ieα1w1ieα1if  y=y^if  y=y^
对求得的新权重进行归一化求出权重分布 D 2 D_2 D2

X 1 X_1 X1 X 2 X_2 X2 Y Y Y Y ^ \hat Y Y^ D 1 D_1 D1 w 2 w_2 w2 D 2 D_2 D2
00110.10.0830.088
0.50.91-10.10.120.128
11.2-1-10.10.0830.088
1.20.7-1-10.10.0830.088
1.40.6110.10.0830.088
1.60.2-110.10.120.128
1.70.4110.10.0830.088
20110.10.0830.088
2.20.1-110.10.120.128
2.51-1-10.10.0830.088

生产第 2 棵决策树

随机选择条件 x 1 ≤ 1.5 x_1 ≤ 1.5 x11.5 生成第 2 棵决策树

在分布 D 2 = ( 0.088 , 0.128 , ⋅ ⋅ ⋅ , 0.088 ) T D_2 = (0.088, 0.128, · · · , 0.088)^T D2=(0.088,0.128,⋅⋅⋅,0.088)T 下,计算分类错误率 ϵ = 0.352 ϵ = 0.352 ϵ=0.352,求出权重系数 α 2 \alpha_2 α2
α 2 = 1 2 l o g ( 1 − ϵ ϵ ) = 0.133 α_2 = \frac{1}{2} log\left( \frac{1−ϵ} {ϵ} \right) = 0.133 α2=21log(ϵ1ϵ)=0.133

再求出新权重 w 3 w_3 w3,对 w 3 w_3 w3 进行归一化求出权重分布 D 3 D_3 D3

X 1 X_1 X1 X 2 X_2 X2 Y Y Y Y ^ \hat Y Y^ D 2 D_2 D2 w 3 w_3 w3 D 3 D_3 D3
00110.0880.0770.079
0.50.9110.1280.1120.115
11.2-110.0880.1010.104
1.20.7-110.0880.1010.104
1.40.6110.0880.0770.079
1.60.2-1-10.1280.1120.115
1.70.41-10.0880.1010.104
201-10.0880.1010.104
2.20.1-1-10.1280.1120.115
2.51-110.0880.0770.079

生成第 T 棵决策树

如此循环下去生成 T T T 棵决策树。

加权投票

通过加权投票的方式得到集成分类器:
F ( x ) = α 1 T r e e 1 + α 2 T r e e 2 + ⋯ + α t T r e e t = 0.184 I ( X 2 ≤ 0.65 ) + 0.133 I ( X 1 ≤ 1.5 ) + ⋯ + α t T r e e t \begin{aligned} F(x) & = α_1Tree_1 + α_2Tree_2 + \cdots + α_tTree_t \\\\ & = 0.184I(X_2 ≤ 0.65) + 0.133I(X_1 ≤ 1.5) + \cdots + α_tTree_t \end{aligned} F(x)=α1Tree1+α2Tree2++αtTreet=0.184I(X20.65)+0.133I(X11.5)++αtTreet

sklearn 实现

import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import AdaBoostRegressor

# Create the dataset
X = np.array([[0, 0], [0.5, 0.9], [1, 1.2], [1.2, 0.7], [1.4, 0.6], [1.6, 0.2], [1.7, 0.4], [2, 0], [2.2, 0.1], [2.5, 1]])
y = np.array([1, 1, -1, -1, 1, -1, 1, 1, -1, -1])

# Fit the classifier
regr_1 = DecisionTreeRegressor(max_depth=3)
regr_2 = AdaBoostRegressor(regr_1, n_estimators=10, random_state=20)

regr_1.fit(X, y)
regr_2.fit(X, y)

# Score
core_1 = regr_1.score(X, y)
core_2 = regr_2.score(X, y)

print("Decision Tree score : %f" % core_1)
print("AdaBoost score : %f" % core_2)

# Predict
y_1 = regr_1.predict(X)
y_2 = regr_2.predict(X)

# Plot the results
x = range(10)
plt.figure()
plt.scatter(x, y, c="k", label="training samples")
plt.plot(x, y_1, c="g", label="n_estimators=1", linewidth=2)
plt.plot(x, y_2, c="r", label="n_estimators=20", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Boosted Decision Tree Regression")
plt.legend()
plt.show()
# output
Decision Tree score : 0.733333
AdaBoost score : 1.000000

在这里插入图片描述

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

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

相关文章

传统算法:使用 Pygame 实现广度优先搜索(BFS)

使用 Pygame 模块实现了广度优先搜索(BFS)的动画演示。首先,通过邻接矩阵表示了一个图的结构,其中每个节点表示一个字符,每个字符的邻居表示与之相邻的节点。然后,通过广度优先搜索算法按层级顺序访问节点,过程中通过动画效果可视化每一步的变化。每次访问一个节点,该节…

计算机服务器中了_locked勒索病毒如何处理,_locked勒索病毒解密数据恢复

网络技术的不断发展&#xff0c;给企业的生产生活提供了极大便利&#xff0c;越来越多的企业走向数字化办公时代&#xff0c;但网络的发展也为网络安全埋下隐患&#xff0c;网络安全威胁不断增加。近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计…

制造企业建设数字工厂管理系统的难点主要有哪些

随着科技的飞速发展&#xff0c;制造企业正面临着从传统生产模式向数字化、智能化转型的挑战。其中&#xff0c;建设数字工厂管理系统是实现这一目标的重要途径。然而&#xff0c;在实际操作过程中&#xff0c;制造企业往往会遇到一系列难点。本文将对这些难点进行详细的分析。…

kNN-NER: Named Entity Recognition with Nearest Neighbor Search

原文链接&#xff1a;https://arxiv.org/pdf/2203.17103.pdf 预发表论文 介绍 受到增强式检索方法的启发&#xff0c;作者提出了kNN-NER&#xff0c;通过检索训练集中k个邻居的标签分布来提高模型命名实体识别分类的准确性。该框架能够通过充分利用训练信息来解决样本类别不平衡…

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示整数、小数应用

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示整数、小数应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD1602简单介绍IIC通信简单介绍…

Qt应用开发--国产工业开发板全志T113-i的部署教程

Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用&#xff0c;因其跨平台性和丰富的功能而备受青睐。 Qt能够为工业领域带来什么好处&#xff1a; -…

MAVEN冲突解决

MAVEN冲突解决 1.安装下面这个插件 2.安装成功点击pom文件 dependency analyzer标志&#xff0c;说明maven helper插件就安装成功 3.点击dependency analyzer之后就会进入到下面的页面 4.标记红色就是版本冲突&#xff0c;右击complie&#xff0c;排除不是使用的 5.POM 文件…

单体架构demo

idea 新建maven项目 1、外层pom.xml 2、jar 包pom.xml 3、主要pom.xml 这个打包插件放在有main 启动模块中 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifact…

3D模型渲染导致电脑太卡怎么办?

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 1、什么是3D渲染&#xff1f; 3D渲染是指通过计算机图形学技术将三维模型转化为二维图像的过程…

[安洵杯 2019]easy_web

打开环境 img传参还有cmd img应该是base&#xff0c;先解码看看 3535352e706e67 这个好像是十六进制的&#xff0c;再解 访问一下看看&#xff0c;得到一张图片 尝试base解码&#xff0c;但是没有什么发现 再看看地址栏出现index.php,应该是要下载源码&#xff0c;但是还没有…

Vue3-数据交互请求工具设计

1.安装axios pnpm add axios 2.利用axios.create创建一个自定义的axios来使用 参考官网&#xff1a;axios中文文档|axios中文网 | axios 在src/utils文件夹下新建request.js&#xff0c;封装axios模块 import axios from axios const baseURL const instance axios.creat…

单细胞 | 批量 FeaturePlot 可视化n个基因表达量

要点&#xff1a;CITE-seq 的膜蛋白marker的意义&#xff1b;批量绘制 FeaturePlot。 T: CD5, CD7, TNFRSF8(CD30)?, NCAM1(CD56)?mono: CD33, ANPEP(CD13), FCGR1A(CD64), FUT4(CD15)?, IL3RA(CD123)B: MME(CD10), CD38ery: TFRC(CD71),HSC: CD34, KIT(CD117), 1,feature…

React Native环境搭建及Hello World

写这篇博客的目的就是想说,react native 挺简单,但是大部分初级前端会被环境搭建给难住,从而放弃. 环境搭建 环境搭建其实说简单也挺简单的,有经验的前端直接翻看react native中文文档就行,直接按上面来肯定没错 以下以安卓开发,windows配置环境为例,来演示一遍 首先 电脑…

Arduino、ESP8266、HTML相关知识点记录

C代码 const char *ssid "********"; // 这里定义将要建立的WiFi名称。 const char *password "********"; // 这里定义将要建立的WiFi密码。 多WiFi连接&#xff1a; wifiMulti.addAP("**…

IDEA性能优化的相关配置

有时候会发现idea用起来特别卡&#xff0c;你会发现不是整个电脑卡&#xff0c;而是idea用起来卡。这时候就需要对idea做一下性能优化了。 首先我们把idea的内存调出来&#xff1a;可以右击idea底部然后点这个Memory Indicator&#xff0c;然后就能看到idea使用的内存了。 为什…

深眸科技加速进入深度学习赛道,以开创思维引领制造企业智慧升级

在工业4.0的浪潮下&#xff0c;工业企业亟需向高端化、自动化、智能化转型&#xff0c;以应对大批量精密产品的质量控制需求。这些产品对质量有着极高的要求&#xff0c;单凭传统机器视觉检测技术较难满足。 同时&#xff0c;随着大数据的不断涌现及计算机算力的稳步提升&…

MidJourney笔记(5)-面板使用2

前面介绍面板使用的时候,忘记介绍了一些功能,这次再补充一下。 V1、V2、V3、V4 V1、V2、V3、V4对应图片的版本,我们可以选择对应的图片,然后基于这个图片的版本,再生成一批图片。编号是对应上图的1/2/3/4,千万不要搞错了。 我们分别点击看一下效果:

Node.js【文件系统模块、路径模块 、连接 MySQL、nodemon、操作 MySQL】(三)-全面详解(学习总结---从入门到深化)

目录 Node.js 文件系统模块&#xff08;二&#xff09; Node.js 文件系统模块&#xff08;三&#xff09; Node.js 文件系统模块&#xff08;四&#xff09; Node.js 路径模块 Node.js 连接 MySQL Node.js nodemon Node.js 操作 MySQL Node.js 应用 Node.js 文件系统模块…

旋转框(obb)目标检测计算iou的方法

首先先定义一组多边形&#xff0c;这里的数据来自前后帧的检测结果 pre [[[860.0, 374.0], [823.38, 435.23], [716.38, 371.23], [753.0, 310.0]],[[829.0, 465.0], [826.22, 544.01], [684.0, 539.0], [686.78, 459.99]],[[885.72, 574.95], [891.0, 648.0], [725.0, 660.0]…

ubantu配置网卡ip

1.ifconfig查看网卡 2. vi /etc/network/interfaces auto ens33 # 网卡名 iface ens33 inet static # 注意网卡名 address 192.168.43.10 # 配置ip地址 netmask 255.255.255.0 # 掩码 gateway 192.168.43.1 # 网关 3.重启网卡 ifconfig ens33 down ifco…