机器学习笔记:AdaBoost 公式推导

AdaBoost 是集成算法中 Boosting 家族的一种,它的特点是分类器串行。首先要知道加法模型和指数损失函数。

加法模型

加法模型是一个加和模型,每一轮训练一个分类器 ,并且基于这个分类器的误差,得到这个分类器的权重 。

指数损失函数

对于分类模型而言,上述损失函数,在分类正确的时候,指数部分为负数;在分类错误的时候,指数部分为正数,符合损失函数的意义。

公式推导

1、由加法模型的定义:

得到迭代公式:

这里 。此时应该认为函数 是已知的,每一轮迭代求的是分类器 和这个分类器的权重 。

2、将 代入损失函数得:

把指数加法因子展开,变成指数的乘积(想一下具体的例子:)得到:

3、由于 和 已知,可以令 ,于是

于是分类器 和这个分类器的权重 可以表示成:

4、先求 ,看上面的式子,分类器的权重 可以认为是一个确定的数, 是使得分错的(带权重的)样本里损失函数最小的那个,可以写成:

注意:重点理解上面两个式子的等价性,这一步相当于针对不同权重的样本训练分类器

5、得到 以后,再求 。还是看损失函数,可以写成:
\begin {aligned} L(y,f(x)) &= \sum_{i=1}^{N}\overline w_{mi} \exp(-y_i\alpha_mG_{m}(x)) \\ &=\sum_{y_i = G_m(x_i)}\overline w_{mi} e^{-\alpha} + \sum_{y_i \neq G_m(x_i)}\overline w_{mi} e^{\alpha} \\ &=\sum_{y_i = G_m(x_i)}\overline w_{mi} e^{-\alpha} + \sum_{y_i \neq G_m(x_i)}\overline w_{mi} e^{-\alpha} - \sum_{y_i \neq G_m(x_i)}\overline w_{mi} e^{-\alpha} + \sum_{y_i \neq G_m(x_i)}\overline w_{mi} e^{\alpha} \\ &= e^{-\alpha}\sum_{i=1}^{N}\overline w_{mi} + (e^{\alpha} - e^{-\alpha})\sum_{y_i \neq G_m(x_i)}\overline w_{mi} \\ &= e^{-\alpha}\sum_{i=1}^{N}\overline w_{mi} + (e^{\alpha} - e^{-\alpha})\sum_{i=1}^N \overline w_{mi} I(y_i \neq G_m(x_i)) \end{aligned}
把上式对 求导,再令导函数为 ,得:

上式两边同时除以 ,得:

令 ,则有:

\begin {aligned} -e^{-\alpha} + (e^{\alpha} + e^{-\alpha})e_m &= 0 \\ (e^{\alpha} + e^{-\alpha}) e_m &= e^{-\alpha} \\ (e^{2\alpha} + 1)e_m &= 1 \\ e^{2\alpha} + 1 &= \cfrac{1}{e_m} \\ e^{2\alpha} &= \cfrac{1}{e_m} -1 = \cfrac{1 - e_m}{e_m} \\ 2\alpha &= \log\cfrac{1 - e_m}{e_m} \\ \alpha &= \cfrac{1}{2}\log\cfrac{1 - e_m}{e_m} \end {aligned}

于是得到使得损失函数最小的

这里

权重更新公式

那么权重如何更新呢?
已知:

和我们之前的定义:

于是就有:
\begin {aligned} \overline w_{m+1,i} &=\exp[-y_if_{m}(x_i)] \\ &=\exp[-y_i[f_{m-1}(x_i) + \alpha_mG_{m}(x_i)]]\\ &=\exp[-y_if_{m-1}(x_i)]\exp[-y_i\alpha_mG_{m}(x_i)]\\ &=\overline w_{m,i}\exp[-y_i\alpha_mG_{m}(x_i)] \end {aligned}

(本节完)

你可能感兴趣的:(机器学习笔记:AdaBoost 公式推导)