混淆矩阵介绍以及评价指标(准确率,精确率,召回率,特异度,假警报率,G-mean,F1_score,KS值)
混淆矩阵混淆矩阵(Confusion Matrix),可以理解为就是一张表格。混淆这个名字还是很有内涵的,咳咳。混淆矩阵是判断分类好坏程度的一种方法。另外还有ROC曲线和AUC曲线。以分类模型中最简单的二分类为例,对于这种问题,我们的模型最终需要判断样本的结果是0还是1,或者说是positive还是negative。我们通过样本的采集,能够直接知道真实情况下,哪些数据结果是positive,哪些结
混淆矩阵
混淆矩阵(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} G−mean=Recall∗Specificity
该指标可以用来评定数据的不平衡度
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+Recall2∗Precision∗Recall
范式
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β=β2∗Precision+Recall(1+β2)∗Precision∗Recall
β
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 + β 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 - 带权重的调和平均数公式如下:
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 - 进一步推导:
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β=Recallweight∗Precision+Precisionweight∗RecallPrecision∗Recall=PrecisionweightRecallweight∗Precision+RecallPrecisionweightPrecision∗Recall=β2∗Precision+Recall(1+β2)∗Precision∗Recall
KS值
K S = m a x ( T P R − F P R ) KS=max(TPR-FPR) KS=max(TPR−FPR)
KS(Kolmogorov-Smirnov)值越大,表示模型能够将正、负客户区分开的程度越大。
这个跟模型设置的判断的阈值有很大关系。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)