分类模型评价及AUC计算详解

1、分类模型评测指标

在使用模型进行分类时,一般使用准确度(Accuracy)、精确率(Precision)、召回率(Recall)作为评测指标对模型的好坏进行评价,今天主要就auc进行介绍。

混淆表 分类器预测类别
confusion table A(军事) B(科技)
实际类别 A(60) X11(50) X12(10)
B(40) X21(5) X22(35)

假设A、B分别为军事和科技,现有100篇文章,其中军事60篇,科技40篇,使用分类器分类得到的数据如上表,实际为军事的60篇中有50篇被正确分类,余下10篇被误分类到科技;实际为科技的40篇文章,有35篇被正确分类到科技,其余5篇被误分类到军事。

那么,该分类器的评测指标如下:

准确度(Accuracy):(X11+X22)/(X11+X12+X21+X22)

精确率(Precision):X11/(X11+X21)

召回率(Recall):X11/(X11+X12)

2、AUC

实际工作中我们常用AUC来衡量二分模型的有效性,即使用负样本排在正样本前面的概率进行评估,

1、假设有10篇文章,0代表为军事,1代表为科技,第三列为分类器预测值,值越靠近0则认为该文章是军事的概率更大,值越接近1则表示该文章是科技的概率更大。

分类模型评价及AUC计算详解_第1张图片

2、对这组数据按照预测值进行排序,得到如下数据:

分类模型评价及AUC计算详解_第2张图片

从上图可以看到当按照预测值进行排序时,(第二列)实际分类也是有序的,并没有出现1排在0的前面,此时负样本全部排在正样本前面。使用如下脚本计算,得到AUC=1。

#!/usr/bin/python
import sys

x=y=a=0
for line in sys.stdin:
        w=line.strip().split(' ')
        if w[1]=='0':
                x=x+1
                a=a+y
        else:
                y=y+1

print(1.0-a/(x*y))

3、实际情况下分类器在预测时会出现一定得误差,比如得到的数据是这样的:

分类模型评价及AUC计算详解_第3张图片

可以看到在第5篇文章分类错误的情况下,即负样本排在了正样本的前面,故AUC=0.96

我们接下来做进一步的测试:

分类模型评价及AUC计算详解_第4张图片

整体是符合我们预期的,当分类预测值误差越大,负样本在正样本前面的概率就越小,即AUC越小。

 

你可能感兴趣的:(AI,BigData)