hhhhhhh文章目录

  • 前言
  • 混淆矩阵
  • 精确率 & 准确率 & 召回率
  • 1.含义
  • 2.举个例子
  • Roc曲线 & Auc曲线
  • 1.含义
  • 2.怎么来画Roc曲线?


前言

在分类问题中,想要衡量模型/分类器的性能,采取的以下指标。

在代码实现上,一般是用scikit-learn来实现,具体用到的是sklearn.metrics模块下的函数
sklearn:官网链接

混淆矩阵

混淆矩阵(Confusion Matrix)是一个将分类问题按照 判别情况真实情况 两个维度进行归类的矩阵。
以二分类问题为例,首先我们需要明确数据是positive还是negative。 对于实际值中可以用一个2×2的矩阵表示

  • P(Positive):代表1/阳性/正类
  • N(Negative):代表0/阴性/负类
  • T(True):代表预测 正确
  • F(False):代表预测 错误


目标检测混淆矩阵怎么看精度_分类


即这种表示方法是从预测结果和实际结果出发的

先要看预测结果P/N,再看实际结果,对比预测结果看预测是否正确,给出判断结果T/F

所以:

指标

含义

简称

TP

预测为 1/阳性,实际为 1/阳性,预测 正确

True Positive,真阳性

FP

预测为 1/阳性,实际为 0/阴性,预测 错误

False Positive,假阳性

FN

预测为 0/阴性,实际为 1/阳性,预测 错误

False Negative,假阴性

TN

预测为 0/阴性,实际为 0/阴性,预测 正确

True Negative,真阴性

精确率 & 准确率 & 召回率

1.含义

  • 准确率(Accuracy):预测正确的结果占总样本的百分比
    目标检测混淆矩阵怎么看精度_混淆矩阵_02
  • 精确率(Precision):它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是
    目标检测混淆矩阵怎么看精度_分类_03
  • 召回率(Recall):在实际为真的样例中,被判断为真的样例比例,也就是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
    所以召回率应该等于预测为正样本的结果 / 实际为正样本的所有样本

目标检测混淆矩阵怎么看精度_sklearn_04

2.举个例子

假设我们手上有60个正样本,40个负样本,我们要找出所有的正样本,系统查找出50个,其中只有40个是真正的正样本,计算上述各指标。
TP: 将正类预测为正类数 40
FN: 将正类预测为负类数 20
FP: 将负类预测为正类数 10
TN: 将负类预测为负类数 30

  • 准确率(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN) = 70%
  • 精确率(precision) = TP/(TP+FP) = 80%
  • 召回率(recall) = TP/(TP+FN) = 2/3

Roc曲线 & Auc曲线

1.含义

AUC - ROC 曲线是在各种阈值设置下(遍历所有阈值来绘制整条曲线的)对分类问题的性能度量。 ROC 是概率曲线,AUC 表示可分离性的程度或度量。 它告诉模型能够区分类别的程度。 AUC 越高,模型越能将 0 类预测为 0,将 1 类预测为 1。以此类推,AUC 越高,模型在区分患有疾病和没有疾病的患者方面越好。Roc曲线如下图:



目标检测混淆矩阵怎么看精度_分类_05


下面来看两个重要的横纵坐标含义:
目标检测混淆矩阵怎么看精度_目标检测混淆矩阵怎么看精度_06

目标检测混淆矩阵怎么看精度_召回率_07

TPR和FPR分别是基于实际结果1和0出发的,可以从上面混淆矩阵的列出发。

  • TPR表示在所有实际为 1/阳性 的样本中,被正确地判断为 1/阳性 之比率,也就是召回率
  • FPR表示在所有实际为 0/阴性 的样本中,被错误地判断为 1/阳性 之比率

2.怎么来画Roc曲线?

以异常检测为例,得到的是异常分数,label表示真实标签,其中1表示异常,0表示正常

(1) 首先按照异常分数大小排序

目标检测混淆矩阵怎么看精度_召回率_08

(2)接下来,从高到低,依次将“Score”值作为阈值threshold

当样本的异常分数大于这个阈值时,就认为他是异常样本(label 1),否则就是正常

例如:
以异常分数862365为例,大于等于这个分数就是异常,有1个样本,的确是异常,所以TP(真阳类)=1,FP(假阳类)=0;
以ID=4阈值11383为例,大于等于这个阈值被判断为异常,有5个样本,但是其中有3个不是异常,所以TP=2. FP=3

目标检测混淆矩阵怎么看精度_召回率_09

(3)每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点

目标检测混淆矩阵怎么看精度_目标检测混淆矩阵怎么看精度_10