文章转自【机器学习炼丹术】机器学习
首先,要背住的几个概念就是:accuracy,precision,recal, TP,FP,TN,FN学习
一般咱们会作出这样的一个混淆矩阵:
左边的positive,negative表示样本真实值,表格上边的positive,negative表示样本的预测结果。测试
如今咱们有这样的一个例子:
图中的TP,FP等是一个比例,假设总共有100个样本,有40个是TP,有20个是FP……(不过混淆矩阵通常不用除以总样本数量)spa
如今咱们有了
$TP=0.3,FP=0.1$
$TN=0.4,FN=0.2$blog
准确率是指,对于给定的测试数据集,分类器正确分类的样本书与总样本数之比,也就是预测正确的几率。ci
对应上面的例子,能够获得Accuracy=0.7。rem
【准确率Accuracy的弊端】get
准确率做为咱们最经常使用的指标,当出现样本不均衡的状况时,并不能合理反映模型的预测能力。例如测试数据集有90%的正样本,10%的负样本,假设模型预测结果全为正样本,这时准确率为90%,然而模型对负样本没有识别能力,此时高准确率不能反映模型的预测能力。it
表示预测为正的样本中,实际的正样本的数量。io
对应上面的例子,$precision=\frac{0.3}{0.3+0.1}=0.75$。
【我的理解】
Precision是针对预测结果而言的。预测结果中,预测为正的样本中预测正确的几率。相似于一个考生在考卷上写出来的答案中,正确了多少。体现模型的精准度,模型说:我说哪一个对哪一个就是对的。
Recall表示实际为正的样本被判断为正样本的比例
对应上述的例子,获得$Recall=\frac{0.3}{0.3+0.2}=0.6$
【我的理解】
Recall是针对数据样本而言的。数据样本中,正样本中预测正确的几率。相似于一个考生在考卷上回答了多少题。体现一个模型的全面性,模型说:全部对的我都能找出来。
Precision和Recall是一对矛盾的度量,通常来讲,Precision高时,Recall值每每偏低;而Precision值低时,Recall值每每偏高。当分类置信度高时,Precision偏高;分类置信度低时,Recall偏高。为了可以综合考虑这两个指标,F-measure被提出(Precision和Recall的加权调和平均),即:
F1的核心思想在于,在尽量的提升Precision和Recall的同时,也但愿二者之间的差别尽量小。F1-score适用于二分类问题,对于多分类问题,将二分类的F1-score推广,有Micro-F1和Macro-F1两种度量。
【Micro-F1】
统计各个类别的TP、FP、FN、TN,加和构成新的TP、FP、FN、TN,而后计算Micro-Precision和Micro-Recall,获得Micro-F1。具体的说,统计出来各个类别的混淆矩阵,而后把混淆矩阵“相加”起来,获得一个多类别的混淆矩阵,而后再计算F1score
【Macro-F1】
我感受更经常使用的是Macro-F1。统计各个类别的TP、FP、FN、TN,分别计算各自的Precision和Recall,获得各自的F1值,而后取平均值获得Macro-F1
【总结】
从上面两者计算方式上能够看出,Macro-F1平等地看待各个类别,它的值会受到稀有类别的影响;而Micro-F1则更容易受到常见类别的影响。
参考: