机器学习算法的指标首要是准确度,对于不平衡数据,准确度这个指标显然是不够的,比如数据比例为1000:10.
算法对大样本类(样本多的那一类)分类全部正确,对小样本类分类全部错误,准确度也高达(1000)/1010=99%。
所以对于不平衡数据,引入了几种不同的指标:
本文也使用了其它一些
真正率(TPR , TruePositive Rate),或称灵敏度(Sensitivity)、召回率(Recall)等;
真负率(TNR,True Negative Rate),或称特指度(Specificity)
F-measure以及G-mean等
首先设置以下几个指标:
TP(正确预测的正样本数)FN (错误预测的正样本数)
FP(错误预测的负样本数) TN (正确预测的负样本数)
Acc =(TP+TN)/(TP + TN + FP + FN)
TPR = Sensitivity = Recall =TP/(TP+FN)
TNR = Specificity =TN/(TN + FP)
Precision =TP/(TP + FP)
F - measure = 2* Precision * Recall(Precision + Recall)
G - mean = sqrt(TPR × TNR)
实际做实验的时候,可能出现分母为零而程序出错无法运行的情况,所以在 Precision=TP/(TP + FP)的分母上加一个极小的数(如1e-5),由于TP=0,对实验结果没有影响。如果TP=FP=0,就是正类全部分错,负类全部分对,就会这样。
TP/(TP+FN) TN/(TN + FP)两个数,如果测试集中恰好没有正类,或没有负类,也会分母为零导致程序运算错误。
这时候应该注意一下测试集的选取,可以考虑现将数据按照类别分开,然后抽取数据集。