不平衡数据集过(欠)采样后预测概率的调整

很多机器学习算法无法在不平衡样本上取得很好地效果,这是由于其损失函数在判定正负样本损失时没有考虑到样本不均衡导致的。比如逻辑回归的损失函数:

这里没有加入正则项,但也可以看出对于正负样本预测错了的惩罚是一样的,当样本非常不均衡时,这个损失函数可能导致分类器输出结果全都是占比较大的样本:如99%都是正样本,1%是负样本,则学习出来的结果可能是不管扔进去什么数据,分类器一律预测为正样本,因为这样的损失已经很小了。

解决这一问题,一是改变损失函数,比如y=1的样本远少于y=0的,就在损失函数里加大y=1的系数权重。二是通过采样方法改变y的先验分布。若通过采样方法如下采样改变了Y=1:Y=0的比例,则在使用某些算法如逻辑回归时会有一些问题:在调整后的数据集上训练出来的输出概率不是原始数据分布的概率,若要知道原分布下的概率,要对结果进行调整

这里插一句,尽管理论上来说人们认为逻辑回归的输出是某类别的概率,但我在工作中很少用“概率”来这么看待他们,而更多的是用这个连续值对输出结果排序,并根据需要选取分类阈值。比如做信贷审批,不会简单地把输出逾期概率0.5以上的人拒绝,而是用lift chart看分到哪一步的人群的逾期率是可接受的,所以逻辑回归的输出更多应用在对人群排序,而非真的用“概率”这层含义去解释。

回到本文主题,毕竟通过采样,我们改变了先验概率,导致模型预测的后验概率不是原样本的概率,如果硬要还原,做法如下:

 

令X为输入数据,Y为原始标签,Y′为数据平衡(subsample/oversample)后的标签,P(X|Y)P为模型得到的似然函数,P(Y)为0/1类概率的先验知识。似然函数只和模型相关,和数据无关,所以在数据平衡前后是一致的,P(X|Y)=P(X|Y′)。

根据贝叶斯理论,后验概率这里P(X)只和数据有关认为是常数。

假设平衡后P(Y′=1)=P(Y′=0)=0.5,此时逻辑回归输出标签1的概率ps,则ps=P(Y′=1|X)=P(X|Y′=1)P(Y′=1)

假设平衡前P(Y=1)/P(Y=0)=β,β∈[0,1),想要知道原始的标签为0/1的概率p0,p1。其满足以下公式

又因为p0+p1=1,则有

以上就是讲平衡后的概率转换成平衡前的概率的公式,其核心思想是似然函数于数据无关,样本平衡只影响先验概率,所以以似然函数为桥梁,根据贝叶斯公式,从平衡后的后验概率推导出平衡前的后验概率

 

没有更多推荐了,返回首页