不平衡数据处理

在做实验中遇到了非平衡数据集,导致实验结果很忧伤,数据类别不均对模型训练有挺大影响,尤其是在类别极度不均的时候。目前还没有很好的解决方法,还处于查找资料,比着葫芦找葫芦的过程中,记录一下,或许能有所启发。

对于不平衡数据,其实类别精度(precise)和召回率(recall),或者是准确率(accuracy)这些指标并不能很好的反映出来效果如何。比如97个正样本,3个负样本,在识别的时候,全部识别为正样本,则准确率就会达到97%,但是一个负样本都木有检测出来,如果用作异常检测,这也是毫无作用的。

知乎专栏找了有关评价标准的一些表述,感觉很通俗易懂,借鉴一下,若侵犯版权,请告知,删掉。
不平衡数据处理
混淆矩阵、精度、召回率和 F1

在处理分类问题时,一个很好且很简单的指标是混淆矩阵(confusion matrix)。该指标可以很好地概述模型的运行情况。因此,它是任何分类模型评估的一个很好的起点。上图总结了从混淆矩阵中可以导出的大部分指标:
准确率(accuracy)就是正确预测的数量除以预测总数;
类别精度(precision)表示当模型判断一个点属于该类的情况下,判断结果的可信程度。
类别召回率(recall)表示模型能够检测到该类的比率。
类别的 F1 分数是精度和召回率的调和平均值(F1 = 2×precision×recall / (precision + recall)),F1 能够将一个类的精度和召回率结合在同一个指标当中。

个人对类别精度或者精准度的理解:精准度,在于一个“准”字,主要是看你挑的准不准,以西瓜书上的例子来说,从一堆西瓜里面挑出来了10个好瓜,精准度就是来说明你挑的准不准,10个好瓜里面到底真的有几个是好的,如果有7个是好的,那么精准度就是70%。
个人对召回率的理解:召回率,在于一个“回”字,主要是看你挑的全不全,能不能把好西瓜给找全,还是以西瓜书上的例子来说,一堆西瓜里面有多少好瓜被你跳出来了,比如一共15个好瓜,你挑出来的10个“好瓜”里面有7个是真正好的,那么召回率就是7/15

对于不平衡数据,输出多数类会带来更高的分类准确率,但在我们所关注的少数类中表现不佳。

AUC(AreaUnderRoc):是一个模型评价指标,只能用于二分类模型的评价。AUC即ROC曲线下的面积,而ROC曲线的横轴是FPRate,纵轴是TPRate。
不平衡数据处理
不平衡数据处理
auc只能用来评价二分类
auc非常适合评价样本不平衡中的分类器性能
auc会比较预测出来的概率,而不仅仅是标签类别