前言
在使用机器学习的方法解决分类问题时,我们通常需要一个指标来衡量模型的性能,以下介绍一些常用的性能指标,在实际应用中可以依照应用需求采用相应的指标。
错误率
错误率是使用最普遍、最简单同时又是最粗糙的分类指标。其计算方法为:
设测试样本集T={(X1,Y1),···,(Xn,Yn)},其中Xi为该样本i的输入特征,Yi为样本的真实标签。
T的预测结果:PY={PY1,PY2,···,PYn},其中PYi表示模型对T中第i个样本的预测结果。
则错误率
其实就是所有判断错误的样本数占所有样本数的比例。
错误率十分简单也特别好计算,但是它太简单了,以至于无法显示出样本具体是如何被分错。我们看下面的混淆矩阵就可以一下子知道错误率的局限性。
混淆矩阵
假设有一个图片三分类的问题的分类结果整理如下:
对角线上的那些元素表示分类正确的情况,而其中格子表示分类错误的情况。
通过这个表,我们可以很容易的计算出错误率:所有非对角元的元素求和除以整个矩阵的和即可。如果所有非对角元的元素都为0,那我们的模型的就特别完美了!因为没有任何样本被分类错误。
除了简单的错误率外,这个表还能告诉我们我们一些样本是如何被分类错误的信息。例如:有4+9=13条真实结果是狗却被分类成猫和猪的错误分类样例。13/(13+24)约为1/3,说明模型对狗的分类能力并不是很强,有1/3的概率把狗误认为其它动物。
二分类混淆矩阵
上面举例的混淆矩阵一个三分类的混淆矩阵,实际上 混淆矩阵可以用于任何一种分类问题。特别地,当问题是一个二分类时(在回答诸如 是或不是的问题),混淆矩阵有一些特别的表示方法。
真·正例:True positive ,真正的正例,那些预测为”是” 而 真实结果也的确为 “是” 的样例
伪·反例:False Negative,假的反例,那些预测为“否” 而 真实结果为“是” 的样例.这种样例本来就是真的,却被预测为假。
伪·正例:False Positive,假正例,那些预测为“真” 而 真实结果为“否” 的样例。本来是假的,却被预测为真。
真·反例:True Negative,真的反例,那些预测为“否” 而 真实结果为“否” 的样例。真实是假,预测也为假。
这四个有点拗口,但是我们可以发现 ,这四个描述词的主体都是后两个字,而且主体描述的都是预测结果。。例如 伪反例,主体为“反例”,修饰词为“伪”,主体“反例”是指 预测结果为反例,”伪”表示这个预测是伪的。
正确率、准确率Precision rate 和召回率Recall rate其实都是针对 二分类混淆矩阵的。
其中
由公式,正确率反映了那些预测为“是”的样例中实际为“是”的比率。召回率 反映了 所有真实的“是”被预测正确的比率。
构造一个高正确率或高召回率的分类器是相对较简单的,但是一般两者都要很高就比较难构造了。而且单方面的让其中一个高是存在很大的局限性,比如下面两个情况:
高正确率:
正确率是100%,表示那些预测为“是”的两个样本都是真实的“是”样例,但是这个分类器性能却很低,因为:102个真实为“是”的样例有100被错误预测为“否”。其错误率其实为:100/102 ,基本没啥实际用处。
高召回率:
召回率为100%,也就是说,那些真实为“是”的样例都被预测为“是”了。但是,这个分类器性能还是不高,其错误率为100/(100+200)=1/3。为了追求高召回率,分类器只要对任意输入都无脑输出“是”即可,然而这种分类器的性能是不可能高的。
高召回率、高正确率:
高召回率、高正确率的分类结果的混淆矩阵的非对角元元素很小。