混淆矩阵


混淆矩阵(Confusion Matrix),可以理解为就是一张表格。混淆这个名字还是很有内涵的,咳咳。

混淆矩阵是判断分类好坏程度的一种方法。另外还有ROC曲线和AUC曲线。

以分类模型中最简单的二分类为例,对于这种问题,我们的模型最终需要判断样本的结果是0还是1,或者说是positive还是negative。

我们通过样本的采集,能够直接知道真实情况下,哪些数据结果是positive,哪些结果是negative。同时,我们通过用样本数据跑出分类型模型的结果,也可以知道模型认为这些数据哪些是positive,哪些是negative。

因此,我们就能得到这样四个基础指标,我称他们是一级指标(最底层的):

真实值是positive,模型认为是positive的数量(True Positive=TP)
真实值是positive,模型认为是negative的数量(False Negative=FN):这就是统计学上的第二类错误(Type II Error)
真实值是negative,模型认为是positive的数量(False Positive=FP):这就是统计学上的第一类错误(Type I Error)
真实值是negative,模型认为是negative的数量(True Negative=TN)
将这四个指标一起呈现在表格中,就能得到如下这样一个矩阵,我们称它为混淆矩阵(Confusion Matrix):

混淆矩阵的指标

预测性分类模型,肯定是希望越准越好。那么,对应到混淆矩阵中,那肯定是希望TP与TN的数量大,而FP与FN的数量小。所以当我们得到了模型的混淆矩阵后,就需要去看有多少观测值在第二、四象限对应的位置,这里的数值越多越好;反之,在第一、三象限对应位置出现的观测值肯定是越少越好。

二级指标

准确率(Accuracy)

A c c u r a c y = T P + T N T P + F P + T N + F N Accuracy= \frac{TP+TN}{TP+FP+TN+FN} Accuracy=TP+FP+TN+FNTP+TN

精确率(Precision)——查准率

P r e c i s i o n = T P T P + F P Precision= \frac{TP}{TP+FP} Precision=TP+FPTP

举个例子:你百度搜索关键字,你希望看到的是TP,而它给你返回的是TP+FP,此时其实只有TP是准确的。


查全率、召回率、反馈率(Recall),也称灵敏度(Sensitivity)-TPR(真阳性率)

T P R = S e n s i t i v i t y = R e c a l l = T P T P + F N TPR=Sensitivity=Recall= \frac{TP}{TP+FN} TPR=Sensitivity=Recall=TP+FNTP

特异度(Specificity)-TNR(真阴性率)

T N R = S p e c i f i c i t y = T N T N + F P TNR=Specificity= \frac{TN}{TN+FP} TNR=Specificity=TN+FPTN

FPR(假阳性率,假警报率)

F P R = T N T N + F P FPR= \frac{TN}{TN+FP} FPR=TN+FPTN


三级指标

G-mean

G − m e a n = R e c a l l ∗ S p e c i f i c i t y G-mean = \sqrt[]{Recall*Specificity} Gmean=RecallSpecificity

该指标可以用来评定数据的不平衡度

F1_score

狭义F1

F 1 = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l F1= \frac{2*Precision*Recall}{Precision+Recall} F1=Precision+Recall2PrecisionRecall

范式

F β = ( 1 + β 2 ) ∗ P r e c i s i o n ∗ R e c a l l β 2 ∗ P r e c i s i o n + R e c a l l F_β= \frac{(1+β^2)*Precision*Recall}{β^2*Precision+Recall} Fβ=β2Precision+Recall(1+β2)PrecisionRecall
β 2 = R e c a l l w e i g h t P r e c i s i o n w e i g h t β^2= \frac{Recall_{weight}}{Precision_{weight}} β2=PrecisionweightRecallweight
R e c a l l w e i g h t + P r e c i s i o n w e i g h t = 1 Recall_{weight}+Precision_{weight}=1 Recallweight+Precisionweight=1

在实际的情况中可能对于查全率和查准率的要求不同、比如对于推荐系统而言(百度关键词检索),查准率比较重要;而对于逃犯系统,查全率重要。


进行推导:

  1. 由后面两个公式,可以得出
    1 + β 2 = 1 P r e c i s i o n w e i g h t 1+β^2 = \frac{1}{Precision_{weight}} 1+β2=Precisionweight1
  2. 带权重的调和平均数公式如下:
    1 F β = 1 P r e c i s i o n w e i g h t P r e c i s i o n + R e c a l l w e i g h t R e c a l l \frac{1}{F_{β}} = \frac{1}{\frac{Precision_{weight}}{Precision}+\frac{Recall_{weight}}{Recall}} Fβ1=PrecisionPrecisionweight+RecallRecallweight1
  3. 进一步推导:
    F β = P r e c i s i o n ∗ R e c a l l R e c a l l w e i g h t ∗ P r e c i s i o n + P r e c i s i o n w e i g h t ∗ R e c a l l = P r e c i s i o n ∗ R e c a l l P r e c i s i o n w e i g h t R e c a l l w e i g h t P r e c i s i o n w e i g h t ∗ P r e c i s i o n + R e c a l l = ( 1 + β 2 ) ∗ P r e c i s i o n ∗ R e c a l l β 2 ∗ P r e c i s i o n + R e c a l l F_β = \frac{Precision*Recall}{Recall_{weight}*Precision+Precision_{weight}*Recall} \\ = \frac{\frac{Precision*Recall}{Precision_{weight}}}{\frac{Recall{weight}}{Precision_{weight}}*Precision+Recall} \qquad\qquad \\ = \frac{(1+β^2)*Precision*Recall}{β^2*Precision+Recall} \qquad\qquad \qquad Fβ=RecallweightPrecision+PrecisionweightRecallPrecisionRecall=PrecisionweightRecallweightPrecision+RecallPrecisionweightPrecisionRecall=β2Precision+Recall(1+β2)PrecisionRecall

KS值

K S = m a x ( T P R − F P R ) KS=max(TPR-FPR) KS=max(TPRFPR)

KS(Kolmogorov-Smirnov)值越大,表示模型能够将正、负客户区分开的程度越大。
这个跟模型设置的判断的阈值有很大关系。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐