上一章:机器篇——集成学习(三) 细说 提升(Boosting) 算法
下一章:机器篇——集成学习(五) 细说 梯度提升(Gradient Boost)算法
本小节,细说 AdaBoost 算法,下一小节细说 梯度提升(Gradient Boost) 算法
二. 具体算法
4. AdaBoost 算法
AdaBoost 是 Boosting 特定损失函数的算法
(1). AdaBoost 算法的基本思路
①. 开始时,所有样本权重相同,训练得到第一个基分类器。
②. 从第二轮开始,每轮开始前都会根据上一轮基分类器的分类效果调整每个样本的权重,上一轮分错的样本权重提高,分对的样本权重降低
③. 之后根据新得到样本的权重指导本轮中的基分类器训练,即在考虑样本不同权重的情况下得到本轮错误率最低的基分类器。
④. 重复以上步骤直至训练到约定的轮数结束,每一轮训练得到一个基分类器
(2). AdaBoost 算法的实现
①. 若为 AdaBoost 分类,函数模型使用 CART 分类树
若为 AdaBoost 回归,函数模型使用 CART 回归树
②. 损失函数为:指数损失函数
③. 调整训练集:使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上。
联合弱分类器:将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的分类器具有较大的权重,而分类效果差的分类器具有较小的权重。
(3). AdaBoost 权重更新规则
①. 样本权重更新
对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重。这样分错的样本就被突显出来,从而得到一个新的样本分布
②. 弱分类器权值更新
对于准确率较高的弱分类器,加大其权重;对于准确率较低的弱分类器,减小其权重。
(4). AdaBoost 算法过程
将样本权值被更新过的新数据集送给下一层弱分类器进行训练,最后将每次训练得到的弱分类器根据弱分类器权重融合起来,从而得到强分类器
①. 给定训练样本集 ,其中 和 分别对应于正例样本和负例样本; 为训练的最大循环次数。
②. 初始化样本权重为 ,即为训练样本的初始概率分布。
③. 第一次迭代:
a. 训练样本的概率分布相当,训练弱分类器
b. 计算弱分类器的错误率
c. 选取合适阈值,使得误差最小
d. 更行样本权重
④. 经过 次循环后,得到 个弱分类器,按更新的弱分类器权重叠加,最终得到强分类器。
(5). AdaBoost 分类问题的损失函数优化
①. 由分类 AdaBoost 的损失函数,推导出分类 AdaBoost 的弱学习器权重系数公式和样本权重更新公式
②. 分类 AdaBoost 的模型为加法模型,学习算法为前向分步学习算法,损失函数为指数函数的分类问题
③. 加法模型
最终的强分类器是若干个弱分类器加权平均而得到
④. 前向分步学习
通过一轮轮的弱学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重
a. 第 轮的强学习器为:
b. 第 轮的强学习器为:
b. 上两式前向学习可以得到:
由弱学习器不断迭代前向学习算法,一步步得到强学习器。
⑤. 分类 AdaBoost 的损失函数为指数函数,即定义损失函数为: