Adaboost算法实现二

           终于把这个Adaboost算法的源码看完了,基本了解了算法。对于一些地方还是存在疑问,不知道为啥要这样处理,如相似性度量。

          测试了好几个例子,感觉Adaboost对样本分类的效果还不错,但是对于预测,正确率也就70%-80%,不是很高,感觉应该是比较低的了,应该有改进的措施,还没来得及看。

          用主程序中的一段代码对adaboost算法做下自己的总结。

 

for i=1:weak_learner_n
	adaboost_model = ADABOOST_tr(tr_set,tr_labels,i);
	[L_tr,hits_tr] = ADABOOST_te(adaboost_model,tr_set,tr_labels);
	tr_error(i) = (tr_n-hits_tr)/tr_n;%训练样本错误率
	[L_te,hits_te] = ADABOOST_te(adaboost_model,te_set,te_labels);
	te_error(i) = (te_n-hits_te)/te_n;%测试样本错误率
end


        Adaboost主要是通过改变权重不断训练弱分类器,最后得到一个强分类器。随着迭代次数的增多,弱分类器也在增加,分类效果也就越好。

       本实例中设置weak_learner_n为20,也就是迭代到最后,有20个弱分类器组成。对20次循环来说,每次循环产生的弱分类器数量不同,逐步递增,分类效果也越来越好,,这可以通过tr_error(i)的结果来进行分析,te_error(i),是相应的各个弱分类器组的预测能力。

      ADABOOST_tr %函数功能:用来生成加权的弱分类器组合

      ADABOOST_te%测试函数,主要是对前面训练的弱分类器组进行误差检测,返回的hits值就是正确分类的个数

你可能感兴趣的:(Adaboost算法实现二)