当前位置: 首页 > article >正文

AdaBoost与前向分步算法

1. 加性模型的定义

在AdaBoost算法中,我们可以将其视为一种加性模型。加性模型是指由多个基模型的线性组合构成的模型。图中的公式 (10-9) 描述了加性模型的形式:
f ( x ) = ∑ t = 1 T α t b ( x ; γ t ) f(x) = \sum_{t=1}^T \alpha_t b(x; \gamma_t) f(x)=t=1Tαtb(x;γt)

其中:

  • b ( x ; γ t ) b(x; \gamma_t) b(x;γt) 表示第 t t t 个基模型,参数 γ t \gamma_t γt 是模型的参数。
  • α t \alpha_t αt 是基模型的系数,表示每个基模型的权重。
  • T T T 是基模型的数量。

加性模型的目标是最小化损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x)),通过逐步优化每个基模型的参数和权重,逐渐逼近目标值。

2. 加性模型的目标函数

对于给定的训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } D = \{(x_1, y_1), (x_2, y_2), \dots, (x_N, y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)},其中 x i ∈ R n x_i \in \mathbb{R}^n xiRn y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi{1,+1},我们可以定义加性模型的目标函数为:
min ⁡ α t , γ t ∑ i = 1 N L ( y i , ∑ t = 1 T α t b ( x i ; γ t ) ) \min_{\alpha_t, \gamma_t} \sum_{i=1}^N L\left(y_i, \sum_{t=1}^T \alpha_t b(x_i; \gamma_t)\right) αt,γtmini=1NL(yi,t=1Tαtb(xi;γt))

即在所有基模型的权重 α t \alpha_t αt 和参数 γ t \gamma_t γt 上最小化损失函数。

由于这个优化问题非常复杂,难以一次性求解所有参数,所以可以采用前向分步算法来进行逐步优化。

3. 前向分步算法的思想

前向分步算法的核心思想是:逐步优化。每一步仅优化一个基模型的参数和权重,将其加入到模型中,逐渐逼近目标值。

每一步的优化目标可以用公式 (10-11) 表示为:
min ⁡ α t , γ t ∑ i = 1 N L ( y i , f t − 1 ( x i ) + α t b ( x i ; γ t ) ) \min_{\alpha_t, \gamma_t} \sum_{i=1}^N L(y_i, f_{t-1}(x_i) + \alpha_t b(x_i; \gamma_t)) αt,γtmini=1NL(yi,ft1(xi)+αtb(xi;γt))

其中:

  • f t − 1 ( x ) f_{t-1}(x) ft1(x) 表示前 t − 1 t-1 t1 步构建的模型。
  • α t \alpha_t αt γ t \gamma_t γt 是第 t t t 个基模型的参数,需要通过最小化损失函数来确定。

4. 前向分步算法在AdaBoost中的应用

在AdaBoost中,前向分步算法的思想体现在逐步增加弱分类器,并为每个弱分类器分配权重,以最小化整个模型的损失函数。

具体步骤如下:

(1) 初始化模型

首先,将模型初始化为常数值 f 0 ( x ) = 0 f_0(x) = 0 f0(x)=0,即模型初始时没有任何分类能力。

(2) 迭代构建模型

对于每一轮 t = 1 , 2 , … , T t = 1, 2, \dots, T t=1,2,,T

  • 选择基模型:选择一个基模型 b ( x ; γ t ) b(x; \gamma_t) b(x;γt) 和对应的参数 γ t \gamma_t γt 以及权重 α t \alpha_t αt,使得当前损失函数最小化。这一步可以通过公式 (10-12) 来表示:
    ( α t , γ t ) = arg ⁡ min ⁡ α , γ ∑ i = 1 N L ( y i , f t − 1 ( x i ) + α b ( x i ; γ ) ) (\alpha_t, \gamma_t) = \arg \min_{\alpha, \gamma} \sum_{i=1}^N L(y_i, f_{t-1}(x_i) + \alpha b(x_i; \gamma)) (αt,γt)=argα,γmini=1NL(yi,ft1(xi)+αb(xi;γ))
  • 更新模型:将新的基模型加入到当前模型中,更新后的模型为:
    f t ( x ) = f t − 1 ( x ) + α t b ( x ; γ t ) f_t(x) = f_{t-1}(x) + \alpha_t b(x; \gamma_t) ft(x)=ft1(x)+αtb(x;γt)
(3) 最终加性模型

经过 T T T 轮迭代后,最终的加性模型表示为:
f ( x ) = ∑ t = 1 T α t b ( x ; γ t ) f(x) = \sum_{t=1}^T \alpha_t b(x; \gamma_t) f(x)=t=1Tαtb(x;γt)

5. 将前向分步算法应用于AdaBoost

对于AdaBoost而言,基模型是二分类器 G t ( x ) G_t(x) Gt(x),加性模型构建过程如下:

  • 假设在第 t − 1 t-1 t1 步,我们已经获得了一个模型 f t − 1 ( x ) f_{t-1}(x) ft1(x)
  • t t t 步添加新的弱分类器 G t ( x ) G_t(x) Gt(x) 时,我们会选择一个权重系数 α t \alpha_t αt,使得损失函数最小化。

即公式 (10-16) 表示了这一过程:
( α t , G t ( x ) ) = arg ⁡ min ⁡ α , G ∑ i = 1 N exp ⁡ ( − y i ( f t − 1 ( x i ) + α G ( x i ) ) ) (\alpha_t, G_t(x)) = \arg \min_{\alpha, G} \sum_{i=1}^N \exp(-y_i (f_{t-1}(x_i) + \alpha G(x_i))) (αt,Gt(x))=argα,Gmini=1Nexp(yi(ft1(xi)+αG(xi)))

通过这个优化,我们可以得到每一轮中需要添加的弱分类器 G t ( x ) G_t(x) Gt(x) 及其权重 α t \alpha_t αt,从而逐步逼近最优解。

6. 总结

综上所述,AdaBoost可以看作是前向分步算法的具体应用。在每一轮中,AdaBoost通过选择一个新的弱分类器及其权重,逐步逼近整体目标函数的最小化。


本文部分公式详细解析:
公式 (10-16)


http://www.kler.cn/a/373206.html

相关文章:

  • 金和OA-C6 ApproveRemindSetExec.aspx XXE漏洞复现(CNVD-2024-40568)
  • 使用AIM对SAP PO核心指标的自动化巡检监控
  • Vim编辑器的应用与实践:让你的文本编辑更高效
  • ubuntu22安装搜狗输入法不能输入中文
  • C++中如何获取时间并格式化为字符串?
  • ArcGIS必会的选择要素方法(AND、OR、R、IN等)位置选择等
  • 使用openssl生成自签名证书(多域名)用于https的ssl验证
  • 【Java SE】变量与常量
  • JVM机制
  • 视频美颜平台的搭建指南:基于直播美颜SDK的完整解决方案
  • 可视化应急指挥平台在应急通信中的优势
  • 视觉目标检测标注xml格式文件解析可视化 - python 实现
  • 【数据结构】五分钟自测主干知识(十二)
  • 两步GMM计算权重矩阵
  • HTML5新增属性
  • 蓝桥杯练习笔记(十九-质数筛)
  • Github 2024-10-27 php开源项目日报 Top10
  • 【verilog】模十计数器
  • 电商直播带货乱象频出,食品经销商如何规避高额损失?
  • Word 每次打开时都会弹出“要还原的文件”对话框
  • iframe视频宽度高度自适应( pc+移动都可以用,jq写法 )
  • Unity控制物体透明度的改变
  • Matplotlib 网格线
  • PostgreSQL 删除角色
  • 面向对象高级-static
  • 为什么选择 Spring data hadoop