目前,业内对于机器学习,数据挖掘,推荐系统等算法模型都有比较流行的评价标准,这些评价标准在一定程度上反映了模型性能的优劣,如准确率(Prescision-rate),召回率(Recall-rate)还有F值(F-measure)。
这篇文章主要总结的是分类算法(二分类)的一些模型评价指标。
要了解准确率和召回率,先要知道什么是混淆矩阵,它反映的是预测值与真实值的预测情况,它共有四种参数(这里我们用一个二分类的例子,预测肿瘤是良性还是恶性):
真阳性即真实值为正例,预测值也为正例。即真实情况是肿瘤是良性的,而预测也是良性的。
假阳性即真实值为反例,但预测值为正例。即真实情况是恶性肿瘤,而预测为良性肿瘤。
真阴性即真实值为反例,而预测值也为反例。即真实情况是恶性肿瘤,而预测也为恶性。
假阴性即真实值为正例,而预测值为反例。即真实情况是良性肿瘤,而预测值为恶性。
acc=(TP+TN)/(TP+FP+TN+FN)
反映的是正确预测的数量占全体数量的比重,准确率越高,模型效果越好。
error=(FP+FN)/(TP+FP+TN+FN)
与准确率互斥,反映的是预测错误的数量占全体数量的比重
因此,error = 1 - acc
sensitive = TP/P,即正确被分类到正例的数量占所有真实正例数量的比重,反映了模型对于正例的识别能力。
specificity = TN/N,即正确被分类到反例的数量占所有真实反例数量的比重,反映了模型对于反例的识别能力
precision = TP/(TP+FP),即正确被分类到正例的数量占所有被分类到正例数量的比重。
recall = TP/(TP+FN),可以看出recall = TP/P = sensitive,与灵敏度是等价的
F = ((a^2 + 1) x precision x recall) / (a ^ 2 + precison + recall)
P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。
F-Measure是Precision和Recall加权调和平均。
计算速度:分类器训练和预测需要的时间;
鲁棒性:处理缺失值和异常值的能力;
可扩展性:处理大数据集的能力;
可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。
ROC曲线由假阳性(x轴)和假阴性(y轴)构成的点连接而成。
例如在肿瘤预测的分类中(1表示良性,0表示恶性),有如下样本:
真实情况:(1,1,0,0,1)
而预测情况要根据所给定的阈值threshold来确定最终预测的是1还是0。因为最终的预测值p(假定预测为良性肿瘤)是一个概率值,即0<=p<=1。因此我们需要给定一个阈值来判断预测的类别,比如我们给定threshold = 0.5,当p>=0.5时,我们规定预测值为1,即良性肿瘤,others为恶性肿瘤。当给定的threshold不同,则预测的情况也不同,例如下方给定几个threshold:
先给出预测情况:(0.5,0.6,0.55,0.4,0.7)
当threshold = 0.4,则预测为:(1,1,1,1,1),
则fp-rate = FP/N = 0,tp-rate = TP/P = 1作为roc曲线上的点,同理下方的点。
当threshold = 0.5,则预测为:(1,1,1,0,1)
当threshold = 0.6,则预测为:(0,1,0,0,1)
当threshold = 0.7,则预测为:(0,0,0,0,1)
如此,生成的点连成的线就是roc曲线,而roc曲线下方的面积就是auc,而auc越大表示模型性能越好。为什么呢?
取两个极端,下图中的A点和B点,A点(0,1)表示fp-rate=0,tp-rate=1,说明什么呢?说明预测正例全是对的,而没有预测错的正例。即模型的正确率是100%。相反,B点(1,0)说明模型的正确率为0。因此当roc曲线越靠近左上角,性能越好,而越靠近右下角性能越差。因此下图L2比L1性能更好。
而C(1,1)点表示所有样本全都预测为良性肿瘤,D(0,0)表示全都预测为恶性肿瘤。
综上,当模型处于最好的情况,即最靠近左上角,那么这条线就是DAC这个没有弧度的像是直角的线,而此时的auc即DAC下方的面积也是最大的时候。
虽然ROC曲线相比较于Precision和Recall等衡量指标更加合理,但是其在高不平衡数据条件下的的表现仍然过于理想,不能够很好的展示实际情况。
即,PR(Precision-Recall)曲线。
举个例子(例子来自Paper:Learning from eImbalanced Data):
假设N_c>>P_c(即Negative的数量远远大于Positive的数量),若FP很大,即有很多N的sample被预测为P,因为:
因此FP_rate的值仍然很小(如果利用ROC曲线则会判断其性能很好,但是实际上其性能并不好),但是如果利用PR,因为Precision综合考虑了TP和FP的值,因此在极度不平衡的数据下(Positive的样本较少),PR曲线可能比ROC曲线更实用。
参考链接:机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)