您的位置:首页 > 其它

easy ensemble 算法和balance cascade算法

2015-09-22 17:03 1076 查看
看了一下easy ensemble 算法的matlab代码,发现之前的理解有问题



从上面的伪代码可以看出,easy ensemble每次从多数类中抽样出和少数类数目差不多的样本,然后和少数类样本组合作为训练集。在这个训练集上学习一个adaboost分类器。

最后预测的时候,是使用之前学习到的所有adaboost中的弱分类器(就是每颗决策树)的预测结果向量(每个树给的结果组成一个向量)和对应的权重向量做内积,然后减去阈值,根据差的符号确定样本的类别。

之前我的理解是根据每个adaboost的预测结果做多数表决,比如10个adaboost,有6个adaboost预测为少数类,那么这个样本就是少数类。显然,easy ensemble不是这样来实现的。

balance cascade算法的算法框架如下:






可以看出balance cascade算法和easy ensemble还是挺像的,差别就在第7步和第8步。

第6步,算法训练出一个分类器,然后在第7步调整分类器HiH_i的阈值θi\theta_i 以保证分类器HiH_i 的false positive rate w为ff。而f的定义为:

f=|P||N|1/(T−1)
f=\frac{|P|}{|N|}^{1/{(T-1)}}

这样的话,根据HiH_i 的阈值θi\theta_i 对所有的多数类样本进行预测,如果样本的估计值大于该阈值则判定为正例(即少数类),这些都是预测错误的多数类样本。如果样本的估计值小于阈值则判定为负例(即多数类),这些就是预测正确的多数类样本,第8步中去掉的也就是这一部分样本,而这些样本占当前所有多数类的样本的多少呢?答案是1−f 1-f,即每次迭代多数类样本保留下来的比例为ff,那么T-1次后,多数类样本还剩|N|∗fT−1=|P||N|*f^{T-1}=|P|个,那么在第T次迭代中,多数类样本就会少于少数类样本,此时可以停止迭代。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: