概念

机器学习中,对于二分类的问题,我们一般通过准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分数等指标来评测模型的好坏,之前一直没搞明白是怎么计算的,今天终于弄清楚来,于是把它们记录下来。

混淆矩阵(Confusion Matrix)

先看一个概念混淆矩阵,它是一种特定的矩阵用来呈现算法性能的可视化效果,通常是监督学习(非监督学习,通常用匹配矩阵:matching matrix)。其每一列代表预测值,每一行代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class)。

为什么要先看它,因为计算准确率、精确率、召回率需要通过其中不同维度的值来计算,看下表:

Positive Negative
True True Positive(TP) True Negative(TN)
False False Positive(FP) False Negative(FN)

解释一下表格中的参数概念(这里的正负只是一个代称,就是描述一个对立的概念):
True Positive(真正例, TP):将正类预测为正类数
True Negative(真负例, TN):将负类预测为负类数
False Positive(假正例, FP):将负类预测为正类数
Flase Negative(假负例, FN):将正类预测为负类数

通俗点说就是,True这一行,预测的都是正确的,正为正,负为负,False这一行,预测的都是错误的,正的被预测为负的,负的被预测为正的

准确率 Accuracy

准确率可以理解为所有数据中,预测正确的占比多少:

Accuracy = TP+TNTP+TN+FP+FN{TP+TN} \over {TP+TN+FP+FN}TP+TN+FP+FNTP+TN

精确率 Precision

精确率可以理解为正例样本在所有预测为正例样本中的占比:

Precision = TPTP+FP{TP} \over {TP+FP}TP+FPTP

召回率 Recall

召回率可以理解为预测正确的正例样本在所有真正正例样本中的占比:

Recall = TPTP+FN{TP} \over {TP+FN}TP+FNTP

F1分数

F1分数是精确率与召回率的调和平均数,就是综合考虑精确率与召回率的一个评价指标:

F1 = 2×Precision×RecallPression+Recall{2×Precision×Recall} \over {Pression+Recall}Pression+Recall2×Precision×Recall

举个例子

举个例子看一下就懂了:

序列号 1 2 3 4 5 6 7 8 9 10
真实喜欢与否 True True False False True True False True True False
预测喜欢与否 True True True False True True True False True False

根据上表:
TP(真正例),原本为True,预测也为True的个数一共是5个;
FN(假负例),原本为True,预测为False的个数一共是1个;
TN(真负例),原本为False,预测也为False的个数一共是2个;
FP(假正例),原本为False,预测为True的个数一共是2个。

所以根据公式,此时:

准确率Accuracy = TP+TNTP+TN+FP+FN{TP+TN} \over {TP+TN+FP+FN}TP+TN+FP+FNTP+TN = 5+25+2+2+1{5+2} \over {5+2+2+1}5+2+2+15+2*100% = 70%

精确率Pression = TPTP+FP{TP} \over {TP+FP}TP+FPTP = 55+2{5} \over {5+2}5+25*100% = 71.4%

召回率Recall=TPTP+FN{TP} \over {TP+FN}TP+FNTP = 55+1{5} \over {5+1}5+15*100% = 83.3%

F1分数 = 2×Precision×RecallPression+Recall{2×Precision×Recall} \over {Pression+Recall}Pression+Recall2×Precision×Recall = 76.92%

总结

绝大多数情况下,在模型评价中,这些值越大越好

如果有用的话,记得点赞、评论、关注哦!

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐