easy ensemble 算法和balance cascade算法

看了一下easy ensemble 算法的matlab代码,发现之前的理解有问题

easy ensemble 算法和balance cascade算法_第1张图片

从上面的伪代码可以看出,easy ensemble每次从多数类中抽样出和少数类数目差不多的样本,然后和少数类样本组合作为训练集。在这个训练集上学习一个adaboost分类器。
最后预测的时候,是使用之前学习到的所有adaboost中的弱分类器(就是每颗决策树)的预测结果向量(每个树给的结果组成一个向量)和对应的权重向量做内积,然后减去阈值,根据差的符号确定样本的类别。

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

balance cascade算法的算法框架如下:
这里写图片描述
easy ensemble 算法和balance cascade算法_第2张图片

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

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

f=|P||N|1/(T1)

这样的话,根据 Hi 的阈值 θi 对所有的多数类样本进行预测,如果样本的估计值大于该阈值则判定为正例(即少数类),这些都是预测错误的多数类样本。如果样本的估计值小于阈值则判定为负例(即多数类),这些就是预测正确的多数类样本,第8步中去掉的也就是这一部分样本,而这些样本占当前所有多数类的样本的多少呢?答案是 1f ,即每次迭代多数类样本保留下来的比例为 f ,那么T-1次后,多数类样本还剩 |N|fT1=|P| 个,那么在第T次迭代中,多数类样本就会少于少数类样本,此时可以停止迭代。

你可能感兴趣的:(easy ensemble 算法和balance cascade算法)