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=1∑Tα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 xi∈Rn, 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=1∑NL(yi,t=1∑Tα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=1∑NL(yi,ft−1(xi)+αtb(xi;γt))
其中:
- f t − 1 ( x ) f_{t-1}(x) ft−1(x) 表示前 t − 1 t-1 t−1 步构建的模型。
- α 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=1∑NL(yi,ft−1(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)=ft−1(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=1∑Tαtb(x;γt)
5. 将前向分步算法应用于AdaBoost
对于AdaBoost而言,基模型是二分类器 G t ( x ) G_t(x) Gt(x),加性模型构建过程如下:
- 假设在第 t − 1 t-1 t−1 步,我们已经获得了一个模型 f t − 1 ( x ) f_{t-1}(x) ft−1(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=1∑Nexp(−yi(ft−1(xi)+αG(xi)))
通过这个优化,我们可以得到每一轮中需要添加的弱分类器 G t ( x ) G_t(x) Gt(x) 及其权重 α t \alpha_t αt,从而逐步逼近最优解。
6. 总结
综上所述,AdaBoost可以看作是前向分步算法的具体应用。在每一轮中,AdaBoost通过选择一个新的弱分类器及其权重,逐步逼近整体目标函数的最小化。
本文部分公式详细解析:
公式 (10-16)