提升方法(boost):
强可学习与弱可学习等价. 已知弱学习算法, 提升为强学习算法.
一般而言, 提升方法采用 调整训练样本的概率分布(权重)的方式形成不同的训练集, 对于不同的训练集训练一系列的弱学习器 的方法.
即 弱学习器 T(k) 更新训练样本分布概率(权重) D(k+1), 带分布概率(权重) D(k+1) 的训练集 S(k+1) 训练弱学习器 T(k+1) 其中 1<=k<n.
Adaboost:
其基本思路为, 提高之前一轮错误分类的样本的权重(概率分布), 降低正确分类的样本的权重(概率分布), 使得错误分类的样本在后一轮的弱分类器中得到更大关
注. 对于弱分类器的组合, Adaboost 采用加权多数表决的方式, 具体地, 加大分类误差小的弱分类器的权重, 减小分类误差大的弱分类器的权重.
从另一个角度讲, Adaboost 算法是加法模型作为模型, 前向分布学习算法作为学习算法, 指数函数作为损失函数的分类问题.
设 f_{k-1}(x) = \sum_{i=1}^{k-1}\alpha_iG_i(x).
则 f_{k}(x) = \sum_{i=1}^{k}\alpha_iG_i(x) = f_{k-1}(x) + \alpha_kG_k(x).
定义损失函数 L(x) = \sum_{i=1}^{m}exp(-y_if_k(x_i)),
则 我们的目的是 最小化 L(x) 即 arg (\alpha, G) min L(x).
L(x) = \sum_{i=1}^{m}exp(-y_if_k(x_i))
= \sum_{i=1}^{m}exp((-y_i)(f_{k-1}(x_i)+\alpha_kG_k(x_i)))
= \sum_{i=1}^{m}exp(-y_i * f_{k-1}(x_i) + -y_i * \alpha_k * G_k(x_i))
由于已知 \alpha_j, G_j | 1<=j<k,
所以 我们令 w‘_{ki} = exp(-y_i * f_{k-1}(x_i)) 与 优化变量 (\alpha_k, G_k) 无关.
即 L(x) = \sum_{i=1}^{m}w‘_{ki} * exp(-y_i * \alpha_k * G_k(x_i)).
固定 \alpha_k 求 arg (G_k) min L(x).
L(x) = (exp(\alpha) - exp(-\alpha)) * \sum_{i=1}^{m}w‘_{ki} * I(y_i ≠ G_k(x_i)) + exp(-\alpha) * \sum_{i=1}^{m}w‘_{ki},
G_k(x) = arg (G_k) min (\sum_{i=1}^{m}w‘_{ki} * I(y_i ≠ G_k(x_i))).
固定 G_k 对 \alpha_k 求导 并令之等于零,
(exp(\alpha) + exp(-\alpha)) * \sum_{i=1}^{m}w‘_{ki} * I(y_i ≠ G_k(x_i)) - \sum_{i=1}^{m}w‘_{ki} * exp(-\alpha) = 0,
(1 + exp(2 * \alpha)) = \sum_{i=1}^{m}w‘_{ki} / (\sum_{i=1}^{m}w‘_{ki} * I(y_i ≠ G_k(x_i))),
\alpha = 1/2 * ln(\sum_{i=1}^{m}w‘_{ki} / (\sum_{i=1}^{m}w‘_{ki} * I(y_i ≠ G_k(x_i))) - 1),
\alpha = 1/2 * ln(1/e_k - 1), e_k = (\sum_{i=1}^{m}w‘_{ki} * I(y_i ≠ G_k(x_i))) / (\sum_{i=1}^{m}w‘_{ki}).
e_k 即 以 exp(-y_i * f_{k-1}(x_i)) 的分布下的不相等的概率, 即误差率.
w‘_{k+1, i} = exp(-y_i * f_{k}(x_i)) = w‘_{ki} * exp(-y_i * \alpha_k * G_k(x_i)).
参考文献:
博文 1: https://www.cnblogs.com/pinard/p/6133937.html,
博文 2: https://yq.aliyun.com/articles/666734.
原文:https://www.cnblogs.com/chinakevin/p/14497370.html