分类问题:AUC小于0.5的原因及解决方案

背景:

在做分类任务时,遇到过auc小于0.5的情况。

原因及解决方案:

(有待进一步分析验证)

1. 样本分布不均衡

样本分布不均衡是解决分类问题过程中经常遇到的一种情况。当数据集中某一类的样本数量远超于其他样本的时候,模型自然会有一种倾向使得分类结果偏向于该类样本,这是概率统计中先验的性质。

当模型趋向于将所有样本预测为同一类别时,模型的AUC会趋于0.5

解决样本分布不均衡的手段有很多,这里简单介绍一下,详见博客“如何解决样本分布不均衡”

第一种,我们可以通过采样的方式,手动的平衡不同类别的样本的数量,主要的手法有欠采样和重采样。

第二种,解决样本分布不均衡,我们可以在分类错误时通过对不同类别的样本施加不同的惩罚,比如对数量少的类别的样本施加较小的惩罚,对数量多的类别的样本施加较大的惩罚

2. 特征本身和标签之间没有关系

AUC为0.5,意味着模型趋于“随机预测”模型,ROC曲线近似于ROC图的对角线。

“特征本身和标签之间没有关系”看起来是一件不太可能发生的事,但实际中有可能会由调取数据过程出现的问题导致。

检查模型的特征和标签是否匹配可以检验该问题是否存在,若存在应匹配特征和标签

3. 原始数据的量纲差异过大

当原始数据的量纲相差过大,而标签中“0”的过多时,训练出的模型系数会倾向于稀疏。

可以通过检查原始数据的量纲来判断是否符合该种情况,若原始数据的量纲差异过大,可考虑对数据进行标准化

4. 模型初始化参数为“0”

当模型初始化的参数特别小时,很容易会导致,开始模型每层的输出大多数为0。最后,模型要么过于稀疏,效果不好,要么需要大量的迭代次数才能达到一定的效果。

可以通过检查tf.truancated_normal()传入的参数和网络每层的输出层,模型参数的稀疏程度来判断是否符合这种情况。如果是,可以适当调大传入tf.truancated_normal()的参数(也不要太大,太大可能会找不到最优解)

5.

参考:

分类问题:导致AUC为0.5的原因及解决方案_Grayson Zhang的博客-CSDN博客_auc 0.5

你可能感兴趣的:(推荐系统,算法)