Adaboost算法流程记录

下面关于adaboost的内容部分参考李航老师的《统计学习方法》

输入:训练数据集\(T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\}\),其中\(X\)为实例空间,\(Y \in \{-1, +1\}\)为标签集合。

输出:最终的分类器\(G(x)\)

Adaboost算法流程:

1、初始化训练数据的权值分布:

$$u_n^{(1)} = (u_1^{(1)}, u_2^{(1)}, ..., u_N^{(1)}) = (\frac{1}{N}, \frac{1}{N}, ..., \frac{1}{N}),其中右上角的(1)表示第一次迭代$$

2、迭代直到收敛:

     (1)、根据训练集\(T\)和权值分布\(u_n^{(t)}\)训练出弱分类器\(g_t(x)\);

     (2)、根据训练集\(T\)、权值分布\(u_n^{(t)}\)和弱分类器\(g_t(x)\)求出\(\alpha_t\)和下一次迭代时使用的权值分布\(u_n^{(t+1)}\);

3、构建最终的分类器:

$$G(x) = sign(\sum_{n=1}^N \alpha_t g_t(x))$$

扫描二维码关注公众号,回复: 2872275 查看本文章

符号说明:算法中的上标或者下标\((t)\)表示第\(t\)次迭代,如果原字母没有下标,则\(t\)使用下标形式;如果原字母已经有了下标,则\(t\)使用带小括号的上标形式。

上面的算法中第1步和第3步不用说明。先看第2-(1)步,这一步就是训练弱分类器,具体的训练方式根据采用的弱分类器决定,比如采用决策桩作为弱分类器,那这一步就和回归树的训练类似。


为了对步骤2-(2)进行叙述,定义正确权重和、错误权重和、错误权重率三个概念方便后续描述:

正确权重和:所有分类正确的样本点的权重求和,\(sum_r^{(t)} = \sum_{n=1}^N u_n^{(t)} I(y_n = g_t(x_n))\)

错误权重和:所有分类错误的样本点的权重求和,\(sum_e^{(t)} = \sum_{n=1}^N u_n^{(t)} I(y_n \neq g_t(x_n))\)

权重错误率:错误权重和与总权重和的比率,\(\epsilon_t = \frac{sum_e^{(t)}}{\sum_{n=1}^N u_n^{(t)}}\)

再引入一个中间变量:\(\Diamond^{(t)} = \sqrt{\frac{1 - \epsilon_t}{\epsilon_t}}\)

步骤2-(2)算法详情:输入为数据集\(T\)、第\(t\)次迭代的权值分布\(u_n^{(t)}\)、弱分类器\(g_t(x)\)。输出为\(\alpha_t\)、第\(t+1\)次迭代的权值分布\(u_n^{(t+1)}\)。

求得\(\alpha_t\)和\(u_n^{(t+1)}\)的公式为:

$$\alpha_t = ln(\Diamond^{(t)}) = ln(\sqrt{\frac{1 - \epsilon_t}{\epsilon_t}})$$

$$u_n^{(t+1)} = \begin{cases} u_n^{(t)}\Diamond^{(t)} \qquad If \quad y_n \neq g_t(x_n) \\ u_n^{(t)}/\Diamond^{(t)} \qquad If \quad y_n = g_t(x_n) \end{cases}$$

猜你喜欢

转载自blog.csdn.net/wang2011210219/article/details/81746636
今日推荐