机器学习算法-Adaboost,学习算法-adaboost
本章内容
- 组合相似的分类器来提高分类性能
- 应用AdaBoost算法
- 处理非均衡分类问题
主题:利用AdaBoost元算法提高分类性能
1.基于数据集多重抽样的分类器
| - | AdaBoost |
|---|---|
| 优点 | 泛化错误率低,易编码,可以应用在大部分分类器上,无需参数调整 |
| 缺点 | 对离群点敏感 |
| 适合数据类型 | 数值型和标称型数据 |
bagging:基于数据随机重抽样的分类器构建方法
自举汇聚法(bootstrap aggregating),也称为bagging方法,是从原始数据集选择S次后得到S个新数据集的一种技术。新数据集和原始数据集的大小相等。每个数据集都是通过在原始数据集中随机选择一个本来进行替换而得到的。
在S个数据集建好之后,将某个学习算法分别作用域每个数据集得到了S个分类器。当我们对新数据进行分类时,就可以应用S个分类器进行分类。与此同时,选择分类器投票结果最多的类别作为最后的分类结果。
有一些比较先进的bagging方法,如随机森林(RF)。
boosting是一种与bagging很类似的技术。不论是boosting还是bagging当中,当使用的多个分类器的类型都是一致的。但是在前者当中,不同的分类器是通过串行训练而获得的,每个新分类器都根据已训练出的分类器的性能来进行训练。boosting是通过训练集中关注被已有分类器错分的那些数据来获得新的分类器。
boosting方法有多个版本,当前最流行便属于AdaBoost。
AdaBoost的一般流程
(1)收集数据:可以使用任何方法;
(2)准备数据:依赖于所使用的若分类器类型;
(3)分析数据:可以使用任意方法
(4)训练算法:AdaBoost的大部分时间都用在训练上,分类器将多次在同一数据集上训练若分类器;
(5)测试算法:计算分类的错误率;
(6)使用算法:同SVM一样,AdaBoost预测的两个类别中的一个,如果想要把它应用到多个类的场合,那么就像多类SVM中的做法一样对AdaBoost进行修改。
2.训练算法:基于错误提升分类器的性能
AdaBoost是adaptive boosting(自适应boosting)的缩写,其运行过程:训练集中的每个样本,赋予其一个权重,这些权重构成向量D。一开始,这些权重都初试化成相等值。首先在训练数据上训练处一个若分类器并计算该分类器的错误率,然后在同一数据集上再次训练若分类器。在分类器的第二次训练当中,将会重新调整每个样本的权重,其中第一次分队的样本的权重值将会降低,而第一次分错的样本的权重将会提高。为了从所有分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权重值alpha,这些alpha值是基于每个分类器的错误率进行计算的。其中错误率定义为
alpha计算公式
计算出alpha值之后,可以对权重向量D进行更新,使得正确分类的样本的权重值降低而分错的样本权重值升高,D的计算方法如下
如果某个样本被正确分类,更新该样本权重值为:

