发现有很多资料对混线矩阵以及recall、precision的定义不一致,经过比较发现《数据挖掘导论》对其定义比较的正确
混淆矩阵
预测值 | |||
+ | - | ||
真实值 | + | TP | FN |
- | FP | TN |
所谓的TN,TP都是针对预测值阐述的,例如预测值为‘-’,对应的为‘N’,至于是TN还是FN根据真实值的情况判断,真实值也为‘-’,则TN,真实值为‘+’,作为FN
recall(召回率) = TP/(TP+FN),即在真实值为‘+’的所有样本中,model预测也为‘+’的概率,也被成为TPR(真正率、灵敏度),与之对应的为FPR(假正率) = FP/(FP+TN)。ROC曲线的y轴即recall,x轴为FPR。
精度(precision) = TP/(TP+FP),即在所有预测为‘+’的样本中,真实值为‘+’所占的比例。
由上可知,假如对于二分类(样本100,正例50,负例50),model全部预测为‘+’,则recall = 1,precision = 0.5,所以不见得recall越大越好,我们希望recall高的同时,precision也最好高,由此得出平衡这两个指标的新的度量:f1,f1 = 2(1/recall + 1/precision),由f1公式可知,当recall和precision值很接近的时候f1才会很大。
最后准确率的概念较简单,即(TP+TN)/(TN+FN+TP+FP),在sklearn中,model.score(x,y)即可得出。