分类模型的评估
1)混淆矩阵(confusion matrix)
类 | Buys_c = yes | Buys_c = no | 合计 | 识别率(%) |
Buys_c = yes Buys_c = no | 6954 412 | 46 2588 | 7000 3000 | 99.34 86.27 |
合计 | 7366 | 2634 | 10 000 | 95.52 |
列表示真实分类,行表示分类模型的分类预测
从该混淆矩阵可以看到7000个真实的yes数据,6954个分类预测yes,46个分类预测no
3000个真实的no数据,412个分类预测yes ,2588个分类预测no
对角线是判断对的,非对角线是判断不对的。
正确率(accuracy)
对于平衡数据,可以由混淆矩阵计算分类模型正确预测的比例:
正确率 = 所有Cii/所有Cij
如果数据不平衡,那么可以再乘上权值
加权正确率 = 所有wiiCii/所有wijCij
2)二分类的四种情况
对于二分类,可以把所有元组分成两类,正元组和负元组,
正元组(positive):感兴趣的主类的元组,比如那些buys_computer=yes的元组
负元组(negative):不感兴趣的元组,比如那些buys_computer=no的元组
分类判断四种情况:
真正(true positives):正确标记的正元组;
真负(true negatives):正确标记的负元组;
假正(false positives):错误标记的正元组;
假负(false negatives):错误标记的负元组。
C1 | C2 | |
C1 C2 | 真正(t_pos)TP 假正(f_pos)FP | 假负(f_neg)FN 真负(t_neg)TN |
t_pos + f_neg = pos
f_pos + t_neg = neg
对于负元组远远多于正元组的数据,正确率无法真实反映评估情况
灵敏性(sensitivity) = t_pos / pos 正元组判对的
特效性(specificity)= t_neg / neg 负元组判对的
精度(precision)= t_pos / ( t_pos + f_pos )
那么,正确率 = 灵敏性 + 特效性
召回率(recall 查全率)= 灵敏性
ROC曲线(Receiver Operating Characteristic接收者运行特性)
ROC曲线是一种比较两个分类模型的有用的可视工具
曲线容易看到真正识别“正”的比例和错误识别“正”的比例情况。
ROC空间将伪阳性率(FPR)定义为 X 轴,真阳性率(TPR)定义为 Y 轴。这两个值由上面四个值计算得到,公式如下:
TPR:在所有实际为阳性的样本中,被正确地判断为阳性之比率。TPR=TP/(TP+FN)
FPR:在所有实际为阴性的样本中,被错误地判断为阳性之比率。FPR=FP/(FP+TN)
放在具体领域来理解上述两个指标。如在医学诊断中,判断有病的样本。那么尽量把有病的揪出来是主要任务,也就是第一个指标TPR,要越高越好。而把没病的样本误诊为有病的,也就是第二个指标FPR,要越低越好。不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的第一个指标应该会很高,但是第二个指标也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么第一个指标达到1,第二个指标也为1。
ROC曲线的绘制
1)筛选所有判断为正的元组,计算每个元组预测类的概率,按从大到小排列
2)从第一个(概率最高的)开始,如果判断对,也就是真正的正TP,则向上跳一步,并绘制一个点;
3)如果判断错,即是个假正,向右跳一步,并绘制一个点。
刚开始,可能会一直碰到真正的元组,则一直比较陡峭的上升,后面随着概率减小,不确定性增加,会比较平缓。
极端情况是,全对,即原本正的全判断为真,原本负的也全判断为假。
AUC值
AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。
AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
AUC的计算(略)