Boosting(提升,提高)是一种集成技术,它通过综合多个弱分类器来获得一个强的分类器。
本文将探究机器学习中的AdaBoost集成方法,本文要解决的问题如下:
本文针对没有数理和统计基础的开发者编写,主要介绍算法的工作原理以及如何将之应用于预测问题的建模当中。
Boosting在机器学习中通常指通过综合多个弱分类器来得到一个强分类器的集成技术。
在Boosting集成技术中,后面加入模型的目的主要是纠正前面模型的错误,直到达到性能标准或者模型的数量达到设置的上限。
AdaBoost是二分类问题中非常成功的Boosting算法。对于理解Boosting算法来说,以它来入门是最适合不过的了。
现代的boosting技术都是构建在AdaBoost基础上的,尤其是随机梯度提升机(stochastic gradient boosting machines)。
AdaBoost在提升决策二分类的性能上表现最为出色。
最初的AdaBoost被它的提出者Freund和Schapire称为AdaBoost.M1。由于它更多被用于解决分类问题而不是回归问题,现在人们也称作离散AdaBoost。
AdaBoost技术可以用来提升任何机器学习算法的性能,通常被用于弱学习器(在分类问题中表现为预测正确率就比随机预测高一点)上。
最常与AdaBoost搭配使用的算法是层级为1的决策树,由于单层的决策树只包含一个决策节点,也被称作决策树桩。
训练数据集中的每一个实例都被赋予了权重,初始的权重设置为:
weight(xi) = 1 / n
xi:第i个训练实例,n:训练实例的数量。
在赋予了权重的训练数据上可以训练得到弱分类器(决策树桩)。一般只讨论二分类问题,每个决策树桩在接受输入后输出该数据对应的类别为+1(正例)或-1(反例)。
我们可以训练结束得到模型的误分类率,计算公式如下:
error = (correct - N) / N
error:误分类率,correct:模型正确分类的实例数,N:训练实例数。例如,如果模型正确预测了100个训练实例中的78个,则误分类率可以写作(78-100)/ 100或0.22。
在为实例设置权重后,上述公式可以改写为:
error = sum(w(i) * terror(i)) / sum(w)
加权和为模型的误分类率,w(i):第i个训练实例的权重,terror:第i个训练实例的预测误差,如果错误分类则为1,如果正确分类则为0。
例如,如果我们有3个权重为0.01,0.5和0.2的训练实例。预测值是-1,-1和-1,真实值是-1,1和-1,那么terror的值是0,1,0.可以通过上面的公式计算误分类率:
error =(0.01 * 0 + 0.5 * 1 + 0.2 * 0)/(0.01 + 0.5 + 0.2)
得
error = 0.704
下面计算另一个中间量来更新实例的权重。我们将该值定义为stage,计算表达式如下:
stage = ln( (1-error) / error)
ln():自然对数,error:模型的误分类率。预测正确的实例所占权重越大,stage的值越大。
利用stage值的这一特性,我们可以赋予预测错误的实例更大的权重占比,相应地,预测正确的实例权重占比就会下降,模型就会更偏向于对错误样本作出纠正而不是保持正确样本预测结果的稳定性。
我们可以通过下面的形式来实现我们所需的更新:
w = w * exp(stage * terror)
w:当前训练实例的权重,exp():数值常数e的指数函数,terror:当前实例的预测误差,计算表达式:
terror = 0,(Y == P),else 1
Y为实例的真实值,P为分类器的预测值。
如果该实例被正确分类,则权重值不变,反之权重值增大。
依次加入弱学习器并用赋予权重的训练数据进行训练。
该过程将一直持续到达到指定的弱分类器数量或者不能在训练数据集上进一步提升性能为止。
该过程完成后,你将获得一批弱学习器以及它们对应的stage值。
AdaBoost利用弱分类器的加权平均值进行预测。
对于新的输入实例,每个弱学习器的预测值为+1.0或-1.0。通过stage值可以求得各个弱学习器的加权值。各个预测结果的加权和将作为最终的预测结果。如果加权和为正,则为正例,加权和为负为反例,为零可以放弃预测或者输出任意值。
举例说明:如果我们有五个弱分类器,弱分类器的输出分别为1.0,1.0,-1.0,1.0,-1.0。如果从多数投票规则来看应该将实例划分至正例。如果此时他们的stage值为0.2,0.5,0.8,0.2,0.9。计算加权和为-0.8,模型将输出反例的预测结果。
本节列出了一些具有启发性的方法供读者参考:
下面是一些从机器学习角度描述AdaBoost的章节段落:
下面为想深入研究AdaBoost的理论基础的读者准备了相关的优秀文章:
在这篇文章中涉及了以下内容: