AdaBoost 算法

        AdaBoost 算法 是一种经典的集成学习算法,它将多个弱分类器集成起来,以达到较高的分类准确率,广泛应用于数据分类、人脸检测等应用中。尤其在人脸检测方面,AdaBoost 是非常经典、成功的一个算法。弱分类器被线性组合成为一个强分类器。

一、面临两个问题:

  1. 在每一轮,如何改变训练数据的概率分布或者权值分布。
  2. 如何将弱分类器组合成强分类器。

二、AdaBoost 的思路:

  1. 提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权值。
  2. 采用加权多数表决。具体的,加大分类错误率低的分类器的权值,使其在表决中起较大作用,减少分类误差率大的弱分类器的权值,使其在表决中起较小作用。

三、训练目标:

最小化指数损失函数。

四、三部分组成:

  1. 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
  2. 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
  3. 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

五、具体步骤:

输人参数:e是预测误差,m 是需要构建的单决策器的个数,如:

if(x < 3 )
    y ﹦1
else
    y =-1

就是一个简单的单决策器,基于x 预测y。α是每个单决策器的不同权重。n 是数据集中点的个数。

W = [ 1/n,1/n,…,1/n ]   # W是一个数组,表示每个数据点的权重,初始相同

C = {};  # C 是一个集合,存放每次循环得到的最佳单决策器

For i = 1 : m

1) 在当前的权重W 下,尝试各种不同的单决策器,直到找到预测误差最小的那个单决策器Hi(针对所有数据),使得误分的数据点的权重之和最小。对Hi预测错误的数据点,计算这些点的权重之和εi;

2) C ﹦C 与 Hi 的并集;

3) 计算分类器的权重αi, αi = 1/2 *log((1-εi + /εi) ;

4) 更新W 数组,

    w_right = exp( - αi) ,w_wrong = exp( αi) ; # exp 是自然对数

    预测正确的数据点,原始权重乘以w_right;

    预测错误的数据点,原始权重乘以w_rong;

5) W = W/sum(W) ;    # 规范化W,规范化之后,使各元素之和为1

6) 对C 中保留的所有分类器,集成决策器为:H_all = α1 * H1 + …αi* Hi

7)使用H_all对所有数据点再次预测,如果 H_a11 预测的误差e为0 或小于某个阈值,终止 for 循环;否则继续 for 循环。

六、AdaBoost的优缺点

1、AdaBoost算法优点

  1. 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
  2. AdaBoost具有很高的精度,训练误差以指数速率下降。
  3. 相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。

2、Adaboost算法缺点

  1. AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。
  2. 数据不平衡导致分类精度下降。
  3. 训练比较耗时,每次重新选择当前分类器最好切分点。
  4. 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

3、AdaBoost应用领域

  1. 模式识别、计算机视觉领域,用于二分类和多分类场景
  2.  

参考:

### Adaboost算法原理 Adaboost是一种迭代型的集成学习方法,旨在通过组合多个弱分类器形成强分类器。该过程始于赋予训练数据集中每个样本相同的权重。随着每一轮迭代,错误分类样本的权重会增加,使得后续的弱分类器更加关注这些难分样本[^1]。 具体来说,在每次迭代过程中: - 训练一个新的弱分类器,并计算其误差率。 - 基于误差率更新此分类器的重要性(即系数),低误差意味着高重要性。 - 调整训练集内各个样例的权值分布:被当前模型误判的例子会被给予更高的重视程度;反之,则降低它们的影响力度。 - 将新得到的弱分类器加入到最终预测函数之中,直到达到预定的最大轮数或满足其他停止条件为止。 ```python from sklearn.ensemble import AdaBoostClassifier from sklearn.datasets import make_classification # 创建虚拟数据集 X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=7) # 初始化并训练AdaBoost分类器 clf = AdaBoostClassifier(n_estimators=50, learning_rate=1.0, algorithm='SAMME') clf.fit(X, y) ``` ### 应用案例分析 作为一种高效且易于实现的技术方案,Adaboost已被成功应用于众多领域内的模式识别任务当中,比如图像处理、自然语言处理等。由于它能够有效提高基础估计量的表现力而不显著增加计算成本,因此非常适合用来构建初始解决方案框架。不过值得注意的是,当面对含有大量噪音或是极端值的数据环境时,应当谨慎选用本方法,因为这可能导致性能下降甚至发散现象的发生[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值