在二分类的情景中,Adaboost为了实现高精准的分类器,采取了集思广益,博取众长的集成的策略,集中群众智慧,成就英雄之举。实现了1+1大于2的分类效果。
今天我们用excel实现Adaboost全链路的计算模拟,在计算的过程中更清晰的了解Adaboot,从未达到知其然亦知其所以然的程度。
例如:根据X值判别Y值的二分类数据表:
用直角坐标系清楚的表达:用曲线模型H(x)可以轻松的完成精准率100%的分类,我们可想而知这样的模型就像诸葛亮一样难得;但是用了Adaboot算法,能轻易将三个简单的分类模型H1(x),H2(x),H3(x)合成一个超强的模型。
第一步:确定一组弱模型,弱模型要求对x样本必须是有拆分的,如上我们在Y值变换的节点中切割了三个弱模型:H1(x),H2(x),H3(x)。
第二步,基于初始的样本权重d1(1/N=1/10)来计算出误差最小的模型,记住模型的误差等于误判X样本值的权重值之和。H1(x)误判了6,7,8对应的误差值=0.3;H2(x)误判了0,1,2,9对应的误差值=0.4;H3(x)误判了3,4,5对应的误差值=0.3;确定最有模型为H1(x)。
第三步,基于上一步确定的最有模型对应的模型误差e重新分配样本权限,让最有模型误判的权重变高,以凸显处理误判样本能力强的模型。
样本权重重新分配的公式:基于当前最优模型H1(x)的误差e=0.3,来重新确定样本权重,
错误分类的样本,权重值更新为:d2= d1/2e =0.1/0.6=0.07142857;
正确分类的样本,权重值更新为:d2 = d1/2(1-e)=0.1/1.4=0.16666667;
基于d2的样本权限,我们可以重新计算模型H1(x)、H2(x)、H3(x)的误差值大小,很明显H3(x)模型误差最小为:0.2143;
接着基于第二轮的最优模型H3(x)及模型误差,我们可以重新分配d3轮的样本权限,来凸显误判样本的权重。如上重复(确定最优模型->基于最优模型误差->重新计算样本权重->基于样本权重确定最优模型)。
我们经过多轮计算,每一轮确定了最有模型及误差:
最后一步,对弱模型进行集中组合成一个强模型H(x),组合的原则误差越小的模型对应的权重系数越大。弱模型权重的计算公式 :
计算的弱模型的权重:
所以我们最终的强分类模型:
H(x)=0.42364*H1(x)+0.64964*H2(x)+0.75203*H3(x)
这个模型很强:H(x)对训练样本的错误率为0!
Adaboost算法的某些特性是非常好的,这里主要介绍Adaboost的两个特性。(1)是训练的错误率上界,随着迭代次数的增加,会逐渐下降;(2)是Adaboost算法即使训练次数很多,也不会出现过拟合的问题。
关注 “数据指象”,一起开启数据之旅