样本不平衡是指:不同类别的样本差别比较大,比如说正类和负类的样本比例为50:1。
处理样本不平衡的原因:
一般而已,如果类别不平衡比例超过4:1,那么其分类器会大大地因为数据不平衡性而无法满足分类要求的。因此在构建分类模型之前,需要对分类不均衡性问题进行处理。
在前面,我们使用准确度这个指标来评价分类质量,可以看出,在类别不均衡时,准确度这个评价指标并不能work。因为分类器将所有的样本都分类到大类下面时,该指标值仍然会很高。即,该分类器偏向了大类这个类别的数据。
解决办法:
一、增加数据集
(1)在增加数据集的同时不仅增加了小类的样本个数,同时也增加了大类的样本个数。
(2)选择大类样本中的一部分数据进行训练。
二、尝试其它评价指标
混淆矩阵:
精确度:分类正确的样本数占样本总数的比例。
查准率和查全率。
召回率:召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率与灵敏度是一样的。
F1得分(F1 Score):精确度与找召回率的加权平均。
Kappa:https://blog.csdn.net/xtingjie/article/details/72803029
ROC曲线:ROC(Receiver Operating Characteristic)曲线是以假正率(FP_rate)和真正率(TP_rate)为轴的曲线,ROC曲线下面的面积我们叫做AUC,如下图所示:
三、对数据集进行重采样
上采样、下采样:让目标值(如0和1分类)中的样本数据量相同。
下采样:以数据量少的那一类为标准。获取数据时一般是从分类样本多的数据从随机抽取等数量的样本。
上采样:以数据量多的一方的样本数量为标准,把样本数量较少的类的样本数量生成和样本数量多的一方相同,称为上采样。
四、设置惩罚系数
你可以使用相同的分类算法,但是使用一个不同的角度,比如你的分类任务是识别那些小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值(这种方法其实是产生了新的数据分布,即产生了新的数据集,译者注),从而使得分类器将重点集中在小类样本身上。一个具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加“关心”小类样本。如penalized-SVM和penalized-LDA算法。
Weka中有一个惩罚模型的通用框架CostSensitiveClassifier,它能够对任何分类器进行封装,并且使用一个自定义的惩罚矩阵对分错的样本进行惩罚。
如果你锁定一个具体的算法时,并且无法通过使用重采样来解决不均衡性问题而得到较差的分类结果。这样你便可以使用惩罚模型来解决不平衡性问题。但是,设置惩罚矩阵是一个复杂的事,因此你需要根据你的任务尝试不同的惩罚矩阵,并选取一个较好的惩罚矩阵。
参考:https://blog.csdn.net/stranger_man/article/details/79055748