0%

数据评估

数据评估

基本数值

acc(准确率)

顾名思义,$\frac{正确的}{总数}$

precision(查准率)与recall(召回率)

混淆矩阵

实际值 预测结果(正在预测,得出如下结果[正、反])
正例 反例 召回率R
正例 TP(true positive真正例)【对】 FN(false negative假反例)【错】 $TP\over{TP+FN}$
反例 FP(false positive假正例)【错】 TN(false negative真反例)【对】 $FP\over{FP+TN}$
查准率P $TP\over{TP+FP}$ $TN\over{FN+TN}$

上面是2*2的混淆矩阵

TP、FP、FN、TN定义如上

查准率就是我猜是这个东西,在猜这个东西的情况下猜对的概率—->对某东西的命中率

召回率就是我在猜的时候对某一类的偏好概率(比如在判断天上飞的是导弹还是鸟的时候,会要求导弹的召回率大—->另可错杀100,也不放过1个)

F1-score

F1-score是基于查准率和找回率的调和平均定义的

${1\over F1}=\frac{1}{2}*(\frac{1}{P}+\frac{1}{R})$

简化

$F1=\frac{2PR}{P+R}$

像上面说的导弹和鸟的问题,我们可以给R加权

${1\over F1}=\frac{1}{1+\beta^2}*(\frac{1}{P}+\frac{\beta^2}{R})$

可用来度量两个分类器的优秀程度

多个结果的统合

macro(P,R,F1)

直接把所有的数值求均值

$宏查准率macro_P={1\over n}\sum_{i=1}^n P_i$

$宏召回率macro_R={1\over n}\sum_{i=1}^n R_i$

$宏F1macro_F1=\frac{2macro_Pmacor_R}{macro_P+macro_R}$

micro(P,R,F1)

还有一种想法就是先得到TP,TN,FP,FN的均值,然后在计算这三个

叫做微查准率,微召回率,微F1

ROC曲线与AUC

TPR与FPR

${TPR(真正例的召回率)=}{TP\over{TP+FN}}$

${FPR(假正例的召回率)=}{FP\over{FP+TN}}$

对正例来说,我们当然希望TPR趋近于1,FPR趋近于0

阈值与流程

ROC曲线,首先有个很重要的东西,就是需要treshVal(阈值)。

对于二分类问题,阈值是相对于正例的。

  • 1、我们对于测试集的一个样本x在学习到的模型中得到一个[0,1]的分类值,将相当于逻辑回归sigmoid之后的值
  • 2、然后我们用这个值与阈值比较,来判断这个测试集样本的类别
  • 3、得到的这个类别与真实的类别比较更新TP,FP,TN,FN
  • 4、用得到东西计算TPR和FPR
  • 5、每个ROC曲线上的点就是(FPR,TPR)

举个例子:

有8个导弹和2只鸟,导弹未正例。

所有士兵判断预测导弹的方法一样(怎么预测的你就不用管了)

当阈值为0.9的时候,我预测了9个导弹一个鸟,TPR=1,FPR=0.5

但是有些士兵心中的阈值不一样可能是1.0,可能是0.8,0.7,0.6,0.55,…..

所以我们把所有的阈值对应的情况画出一个曲线ROC,来估计这些士兵方法的好坏

一般的,如果一个ROC可以几乎完全包含另一个ROC,则前一个好

AUC

AUC是一个值,它等于ROC下面的面积(积分)

由于我们用的东西都是一个个点放在一起的,所以我们只用求很多个梯形的面积就好了

1
2
for i in range(roc.shape[0]-1):   
AUC+=0.5*(roc[i,1]+roc[i+1,1])*(roc[i+1,0]-roc[i,0])

下面是knn与logistic的ROC

knn怎么ROC???我们把k中正例的比例来和阈值判断

image-20191031204847864

!!!下面哪行东西不要理会,那是鼠标移到的位置

下面的是knn的三种划分方法的比较

Figure_1