不平衡数据处理技术——RUSBoost

RUSBoost是一个非常简单的针对不平衡数据集的算法,算法如其名,就是RUS+Boost

RUS(random undersampling):随机欠抽样,随机从数据集中抽取一定量的多数类样本和少数类组成平衡分布的训练数据集

Boost:指的是 Adaboost.M2 算法

RUSBoost:将Adaboost.M2算法的每轮迭代,在训练弱分类器之前,使用RUS方法抽取训练数据集,用于弱分类器训练

算法过程:

1.为所有样本设置归一化的样本权重 D (i)

2. for t=1,2,....,T

        a.随机抽取一定数量的多数类样本,和所有的少数类组成训练数据集S,并得到S中样本的权重  SD,将SD进行归一化

        b. 使用 训练数据集 S ,依据权重 SD 训练一个弱分类器h(t), h(t)  输出为 判为两个类的概率 ,最终判定时,哪类类概率高就判为哪个类。

           设h(t)对第i个样本判为样本实际类别的概率为 p1 (i) ,  判为与样本实际类别相反  类别的概率 为 p2 (i)

        c.计算误差e,e =∑ D (i)*[1- p1(i) + p2 (i)  ],这里求和公式仅针对分错的样本

            计算α(t)=e/(1-e)

        d.更新权重, D (i)= D (i)* α(t) ^(0.5* [ 1+ p1 (i) - p2 (i) ] ),并归一化

3.输出集成分类器H= ∑ h(t)*log(1/ α(t) )

 

参考:
1.C. Seiffert, T. Khoshgoftaar, J. Van Hulse, A. Napolitano, RUSBoost: a hybrid approach to alleviating class imbalance, IEEE Transactions on Systems, Man,and Cybernetics, Part A: Systems and Humans 40 (1) (2010) 185–197.

 

转载于:https://my.oschina.net/weekn/blog/675160

你可能感兴趣的:(python,matlab,c/c++)