类别不平衡问题
一、定义
类别不平衡是指分类任务中不同类别的训练样例数目差别很大的情况。
二、问题:从线性分类器角度讨论,用y = wTx+b对新样本x进行分类,事实上是用预测出的y值与一个阈值进行比较,例如通常在y>0.5时判别为正例,否则为反例。y表达的是正例的可能性,几率y/1-y反映了正例可能性与反例可能性之比例,阈值设置为0.5恰表明分类器认为真实正、反例可能性相同,即分类器决策规则为
若y/1-y >1则预测为正例。(1)
然而,正反例数目不同时,令m+表示正例数目,m-表示反例数目,则观测几率是m+/m-,假设训练集是真实样本总体的无偏采样,因此观测几率代表了真实几率。于是预测几率高于观测几率就应判别为正例,即
若y/1-y > m+/m- 则 预测为正例。(2)
但是,我们的分类器是基于式(1)进行决策,因此,需对其预测值进行调整,使其在基于式(1)决策时,实际是执行式(2)。只需令
y'/1-y' = (y/1-y )*(m-/m+)。(3)
这就是类别不平衡学习的基本策略——“再缩放”。
再缩放的前提是“训练集是真实样本总体的无偏采样”,时代价敏感学习的基础。在代价敏感学习中将式(3)中的m-/m+用cost+/cost-代替即可,其中cost+是将正例误分为反例的代价,cost-是将反例误分为正例的代价。
三、解决方法
1、欠采样,直接对训练集里的反类样例进行“欠采样”,即去除一些反例使得正反例数目接近,然后再进行学习。
2、过采样,对训练集里的正例进行“过采样”,即增加一些正例使得正反例数目接近,然后在进行学习。
3、直接基于原始训练集进行学习,但在用训练好的分类器进行预测,将式(3)嵌入到其决策过程中,称为“阈值移动”。
四、代价敏感
以二分类任务为例,设定一个“代价矩阵”,costij 表示将第i类样本预测为第j类样本的代价。一般来说,costii=0;若将第0类判别为第1类所造成的的损失更大,则cost01>cost10;损失程度相差越大,cost01与cost10值的差别越大。
真实类别 |
预测类别 |
|
第0类 |
第1类 |
|
第0类 |
0 |
cost01 |
第1类 |
cost10 |
0 |