前言:
bootstrap、bagging、boosting和adaboost是机器学习中几种常用的重采样方法。其中bootstrap重采样方法主要用于统计量的估计,bagging、boosting 和 adaboost方法则主要用于多个子分类器的组合。
一、bootstrap:估计统计量的重采样方法
bootstrap方法是从大小为n的原始训练数据集 D 中随机选择n个样本点组成一个新的训练集,这个选择过程独立重复B次,然后用这B个数据集对模型统计量进行估计(如均值、方差等)。由于原始数据集的大小就是n,所以这B个新的训练集中不可避免的会存在重复的样本。
统计量的估计值定义为独立的B个训练集上的估计值
θb
的平均:
二、bagging:
bagging方法是从大小为n的原始训练数据集 D 中随机选择 n′(n′<n) 个样本点组成一个新的训练集,这个选择过程独立重复B次。然后,每一个新的训练集都被独立的用于训练一个子分类器,最终分类器的分类结果由这些子分类器投票决定。
三、boosting:
boosting依次训练k个子分类器,最终的分类结果由这些子分类器投票决定。首先从大小为n的原始训练数据集中随机选取 n1 个样本训练出第一个分类器,记为 C1 ,然后构造第二个分类器 C2 的训练集 D2 ,要求: D2 中一半样本能被 C1 正确分类,而另一半样本被 C1 错分。接着继续构造第三个分类器 C3 的训练集 D3 ,要求: C1 、 C2 对 D3 中样本的分类结果不同。剩余的子分类器按照类似的思路进行训练。
boosting构造新训练集的主要原则是使用最富信息的样本。
四、adaboost:
adaboost方法是boosting方法的一种改进。adaboost为每个样本赋予一个权值,adaboost希望在下一轮训练时被上一个子分类器正确分类的样本权重和与被错误分类的样本权重和相等,从而下一个子分类器会和前一个子分类器有较大差别。上一个子分类器在这个数据集上正确率为 50% 。
例如:假设第i个子分类器 Ci 在数据集 D 上错误分类1126个样本,正确分类6211个样本,那么错误率为 11267337 ,正确率为 62117337 。为了使 Ci 在这个数据集 D 上的分类错误率为 50% ,错误分类样本权重乘以6211,正确分类样本权重乘以1126。
按照这个思路,假设
δi=1−ϵiϵi−−−−√
,
ϵi
是
Ci
在训练集上的分类错误率,错误分类样本权重
werror
和正确分类样本权重
wcorrect
的更新规则为:
adaboost算法总结如下:
当分类结果与标签不同时 ym(xj)≠tj ,指示函数 I(ym(xj)≠tj) 等于1,否则等于0。最小化目标函数 Jm=∑nj=1w(m)jI(ym(xj)≠tj) 时可以先按照权重进行采样得到新的训练集,然后在这个训练集上训练子分类器。
参考文献:
[1]Pattern Recognition and Machine Learning
[2]模式分类