AdaBoost与前向分步算法 10-16最小化指数损失函数 公式解析
本文是将文章《AdaBoost与前向分步算法》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。
公式 (10-16) 是前向分步算法在 AdaBoost 中的关键步骤,用于选择当前轮次中的弱分类器及其对应的权重,以最小化整体模型的损失。具体来说,公式 (10-16) 表示如何选择第 t t t 个弱分类器的权重 α t \alpha_t αt 和基模型 G t ( x ) G_t(x) Gt(x) 以使加性模型的损失最小化。
公式 (10-16) 的内容
公式 (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)))
其中:
- N N N 是训练样本的数量。
- y i y_i yi 是第 i i i 个样本的真实标签,取值为 ± 1 \pm 1 ±1。
- f t − 1 ( x ) f_{t-1}(x) ft−1(x) 表示在前 t − 1 t-1 t−1 轮已经构建好的加性模型,即第 t − 1 t-1 t−1 轮之前所有弱分类器的加权组合。
- G t ( x ) G_t(x) Gt(x) 是第 t t t 轮选择的弱分类器。
- α t \alpha_t αt 是第 t t t 轮弱分类器的权重。
- exp ( − y i ( f t − 1 ( x i ) + α G ( x i ) ) ) \exp(-y_i (f_{t-1}(x_i) + \alpha G(x_i))) exp(−yi(ft−1(xi)+αG(xi))) 是损失函数的一部分,表示模型在样本 x i x_i xi 上的损失。
公式的含义
公式 (10-16) 的目的是找到使当前加性模型的损失最小的弱分类器 G t ( x ) G_t(x) Gt(x) 和权重 α t \alpha_t αt。具体步骤如下:
-
最小化加性模型的损失:我们希望新加入的弱分类器能够最小化加性模型的损失,这里损失函数采用的是指数损失函数:
L ( y i , f ( x i ) ) = exp ( − y i f ( x i ) ) L(y_i, f(x_i)) = \exp(-y_i f(x_i)) L(yi,f(xi))=exp(−yif(xi))在AdaBoost中,指数损失函数的使用有助于模型对分类错误的样本赋予更大的权重。
-
加性模型的更新:在前向分步算法中,模型逐步构建,每一轮迭代会在已有模型 f t − 1 ( x ) f_{t-1}(x) ft−1(x) 的基础上加入一个新的弱分类器 G t ( x ) G_t(x) Gt(x):
f t ( x ) = f t − 1 ( x ) + α t G t ( x ) f_t(x) = f_{t-1}(x) + \alpha_t G_t(x) ft(x)=ft−1(x)+αtGt(x)新的弱分类器会根据指数损失函数最小化的要求进行选择。
-
最小化损失目标:公式 (10-16) 的目标是最小化每个样本的损失和,即
∑ i = 1 N exp ( − y i ( f t − 1 ( x i ) + α G ( x i ) ) ) \sum_{i=1}^N \exp(-y_i (f_{t-1}(x_i) + \alpha G(x_i))) i=1∑Nexp(−yi(ft−1(xi)+αG(xi)))这里的和表示对所有样本的总损失。通过最小化这个表达式,AdaBoost能在当前轮次中找到最优的弱分类器及其对应权重,以尽可能减少当前模型的整体误差。
公式的推导
要详细理解公式 (10-16),可以分解如下:
- 前一轮的模型:假设在第 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,使得新的模型 f t ( x ) = f t − 1 ( x ) + α t G t ( x ) f_t(x) = f_{t-1}(x) + \alpha_t G_t(x) ft(x)=ft−1(x)+αtGt(x) 的误差最小。
- 引入指数损失:使用指数损失函数将优化目标转化为最小化总损失的形式。
- 得到当前优化问题:最终,我们的目标变成最小化所有样本的指数损失的和。
公式的意义
公式 (10-16) 通过选择最优的弱分类器及其权重来逐步减少模型的总体误差。在每一轮中:
- 分类错误的样本(即 y i ≠ G t ( x i ) y_i \neq G_t(x_i) yi=Gt(xi))会使 (-y_i G_t(x_i)) 为正,从而导致 exp ( − y i ( f t − 1 ( x i ) + α G ( x i ) ) ) \exp(-y_i (f_{t-1}(x_i) + \alpha G(x_i))) exp(−yi(ft−1(xi)+αG(xi))) 较大,增加了该样本在损失中的贡献。
- 正确分类的样本则会使损失较小,从而降低其在损失和中的贡献。
总结
公式 (10-16) 是AdaBoost算法的核心,用于确定每一轮中的弱分类器及其权重。通过最小化指数损失函数,AdaBoost可以有效地提高模型对难以分类样本的关注度,同时逐步降低整体错误率。