六 机器学习之 Adaboost一

424 阅读4分钟

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1. 集成学习算法定义

集成学习(Ensemble learning)就是将若干个弱分类器通过一定的策略组合之后产生一个强分类器。弱分类器 (Weak Classifier)指的就是那些分类准确率只比随机猜测略好一点的分类器,而强分类器( Strong Classifier) 的分类准确率会高很多。这里的"强"&"弱"是相对的。某些书中也会把弱分类器称为“基分类器”。

image.png 目前集成学习算法的流派主要有两种:

  • bagging
  • boosting

2. bagging(装袋)

装袋(bagging)又称自主聚集(bootstrap aggregating),是一种根据均匀概率分布从数据集中重复抽样(有放 回的)的技术。每个新数据集和原始数据集的大小相等。由于新数据集中的每个样本都是从原始数据集中有放回的 随机抽样出来的,所以新数据集中可能有重复的值,而原始数据集中的某些样本可能根本就没出现在新数据集中。 bagging方法的流程,如下图所示:

image.png 有放回的随机抽样:自主采样法(Bootstap sampling),也就是说对于m个样本的原始数据集,每次随机选取一 个样本放入采样集,然后把这个样本重新放回原数据集中,然后再进行下一个样本的随机抽样,直到一个采样集中 的数量达到m,这样一个采样集就构建好了,然后我们可以重复这个过程,生成n个这样的采样集。也就是说,最 后形成的采样集,每个采样集中的样本可能是重复的,也可能原数据集中的某些样本根本就没抽到,并且每个采样 集中的样本分布可能都不一样。 根据有放回的随机抽样构造的n个采样集,我们就可以对它们分别进行训练,得到n个弱分类器,然后根据每个弱分 类器返回的结果,我们可以采用一定的组合策略得到我们最后需要的强分类器。 bagging方法的代表算法是随机森林,准确的来说,随机森林是bagging的一个特化进阶版,所谓的特化是因为随 机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选 择,其基本思想没有脱离bagging的范畴。

3. boosting(提升)

boosting是一个迭代的过程,用来自适应地改变训练样本的分布,使得弱分类器聚焦到那些很难分类的样本上。它 的做法是给每一个训练样本赋予一个权重,在每一轮训练结束时自动地调整权重。 boosting方法的流程,如下图所示:

image.png boosting方法的代表算法有Adaboost、GBDT、XGBoost算法

4 Adaboost是adaptive boosting(自适应boosting)的缩写

算法步骤如下: 假设我们有m个样本的训练集,标签为y ∈{—1,+1},我们的n个弱学习器的预测结果分别是(h1(z), h2(z). . .hn(z)),t=1,2,3...,n

1.计算样本权重

赋予训练集中每个样本一个权重,构成权重向量D,将权重向量D初始化相等值。设定我们有m个样本,每个样本的权重都相等,则权重为1/m。

⒉计算错误率

在训练集上训练出一个弱分类器,并计算分类器的错误率:

image.png

3. 计算弱分类器权重 为当前分类器赋予权重值alpha,则alpha计算公式为:

image.png 4. 调整权重值 根据上一次训练结果,调整权重值(上一次分对的权重降低,分错的权重增加) 如果第i个样本被正确分类,则该样本权重更改为:

image.png 如果第i个样本被分错,则该样本权重更改为:

image.png 把上面两个公式汇整成一个:

image.png 之后,在同一数据集上再一次训练弱分类器,然后循环上述过程,直到训练错误率为0,或者弱分类器的数目达到 指定值。 5. 最终强分类器结果 循环结束后,我们可以得到我们的强分类器的预测结果: