对机器学习的分类结果进行分析是一个很重要的过程,之前一直忽略了这一个过程,一直到使用了Scikit-learn之后才发现有一堆不懂的名词需要学习。下面主要解释下混淆矩阵、准确率、召回率、f1-score等概念。这些概念其实也是模式识别和信息检索里面经常碰到的东西。
混淆矩阵其实很好理解,就是把预测值和实际值写在同一个矩阵里。假设总共需要分为两类,那么混淆矩阵就是2x2的大小。每一行就是每一类的实际值,每一列就代表的是每一类的预测值。具体含义见下面的表格:
预测类1预测类2预测类3实际类14352实际类22453实际类30149
比方下面这个混淆矩阵:
[515 34]
[ 80 262]
表达的含义是对于一个01的二分类问题,实际值是0且预测值也为0的有515个,实际值是0但预测值为1的有34个,实际值是1但预测值也为0的有80个,实际值是1但预测值为1的有262个。
准确率和召回率是最常用的评估方法,听上去玄乎其实很简单。
准确率是指对于预测而言,我的预测正确的概率。比如上面的那个混淆矩阵表示的结果,预测值为0的准确率就是515/(515+80)=0.87。
召回率是指对于实际而言,我的实际结果能够被正确预测出来的概率。比如上面的混淆矩阵中,实际值为0的召回率就是515/(515+34)=0.94
分出这两个判断标准也是有着实际的重要意义的。
比如通常我们在判断正确率的时候,用Accuracy表示就可以了,但是如果我们面对的是类似地震的预测时,我们并不特别在意他实际的准确率,宁可多预警几次来避免大的损失。此时召回率就显得特别重要了。
最后F1-score其实是准确率和召回率的综合考量,f1score=\frac{2*Accuracy*Recall}{Accuracy+Recall}。
机器学习 F1-Score, recall, precision 召回率 Recall、精确度Precision、准确率Accuracy、虚警、漏警等分类判定指标 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure