混淆矩阵介绍以及评价指标(准确率,精确率,召回率,特异度,假警报率,G-mean,F1_score,KS值)

混淆矩阵


混淆矩阵(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)值越大,表示模型能够将正、负客户区分开的程度越大。
这个跟模型设置的判断的阈值有很大关系。

### 机器学习评估指标概述 #### 准确率 (Accuracy) 准确率是指分类器正确预测的结果占总预测结果的比例。对于二分类问题而言,准确率可以通过下述公式来表示: \[ \text{Accuracy} = \frac{\text{TP + TN}}{\text{TP + FP + FN + TN}} \] 其中 TP 表示真正例(True Positive),TN 表示真反例(True Negative),FP 表示正例(False Positive),FN 表示反例(False Negative)[^2]。 #### 精确 (Precision) 精确衡量的是模型预测为正类别的实例中有多少比例确实是正类别。其计算方式如下所示: \[ \text{Precision} = \frac{\text{TP}}{\text{TP + FP}} \] 这反映了在所有被预测成正向标签的数据集中有多少是真的属于该类[^3]。 #### 召回率 (Recall) 召回率关注的是实际为正类别的数据中有多大比例被成功识别出来。具体表达式为: \[ \text{Recall} = \frac{\text{TP}}{\text{TP + FN}} \] 此比越高说明漏检的情况越少[^1]。 #### 异度 (Specificity) 异性反映的是真实负样本中被判别为负样本的概,即: \[ \text{Specificity} = \frac{\text{TN}}{\text{TN + FP}} \] 它用来评价检测方法对正常情况下的区分能力。 #### F1分数 (F1 Score) 为了综合考量精确召回率之间的平衡关系,引入了F1得分这一概念。它是两者调和平均数的一种形式,定义如下: \[ \text{F1 score}=\frac{(2*\text{precision}*\text{recall})}{(\text{precision}+\text{recall})} \] 当精确召回率达到最佳均衡状态时,F1得分会达到最大。 ```python from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix def calculate_metrics(y_true, y_pred): tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel() specificity = tn / (tn + fp) acc = accuracy_score(y_true, y_pred) prec = precision_score(y_true, y_pred) rec = recall_score(y_true, y_pred) f1 = f1_score(y_true, y_pred) metrics = { 'accuracy': acc, 'precision': prec, 'recall': rec, 'specificity': specificity, 'f1_score': f1 } return metrics ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值