提升方法
Boosting
如果发现了"弱学习算法", 将它提升(boost)为"强学习算法". 最具代表性的是AdaBoost算法.
对于分类问题, 提升方法:
- 从若学习算法出发, 反复学习, 得到一系列弱分类器(又称基本分类器)
- 然后组合这些弱分类器, 构成一个强分类器
Boosting的两个问题
- 每一轮如何改变训练数据的权值或概率分布?
- 如何将弱分类器组合成一个强分类器?
AdaBoost
AdaBoost做法
目的: 使错误分类样本的权值加大, 在后一轮的弱分类器中, 得到更多关注
- 提高 前一轮弱分类器 错误分类样本 的权值,
- 降低 被 正确分类样本 的权值.
弱分类的组合: AdaBoost采用加权多数表决的方法.
- 加大 分类误差率小的弱分类器的权值, 使其在表决中起较大的作用,
- 减小 分类误差率大的弱分类器的权值, 使其在表决中起较小的作用,
AdaBoost算法
输入: 二分类的训练数据集 , 其中
输出: 最终分类器
- 初始化训练数据的权值分布: 假设训练数据集有均匀的权值分布, 即每个训练样本在基本分类器的学习中作用相同
AdaBoost反复学习基本分类器, 在每一轮 顺次执行下列操作:
- 使用当前权值分布 的训练数据集学习(e.g.让分类误差率 最小), 得到基本分类器:
计算基本分类器 在训练数据集上的分类误差率:
其中, 表示第m轮中第i个样本实例的权值,
计算基本分类器 的系数: 其中, 表示 在最终分类器中的重要性. 分类误差率越小的的基本分类器在最终分类器中的作用越大.
(a) ,
(b) ,
(c) , (bad g(t) --> zero weight)
(d) , (good g(t) --> superior weight)
更新训练数据集的权值分布:
因此, 被基本分类器 误分类样本的权值, 在下一轮 中得以扩大, 起更大的作用.
构建基本分类器的线性组合:
得到最终分类器:
- 系数 表示了基本分类器的重要性, 所有 之和并不为 .
- 的符号决定实例 的类, 的绝对值表示分类的确信度.
AdaBoost的训练误差分析
如果存在 , 对于所有 有 , 则:
因此, AdaBoost的训练误差是以指数速率下降的.
Adaboost的本质
Adaboost 是 前向分步加法 算法的特例:
- 加法模型: 由基本分类器组成
- 损失函数: 指数函数
AdaBoost的思想
GBDT
- 步骤:
- 求出损失函数的负梯度, 当做残差的近似值
- 然后让一棵树去拟合每个样本的残差
- 回归树和决策树很类似,只是回归树把落入叶子节点的样本,对于他们的标签求了个平均值输出,注意,这里的标签,对于GBDT来说,是每一个样本的残差
- 然后再去求这棵树的占的比重.
- 线性搜索求系数, 也就是每棵树的系数
- 最后的模型用这些树融合
反馈与建议
- 微博:@Girl_AI