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则表示该文章是科技的概率更大。
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、实际情况下分类器在预测时会出现一定得误差,比如得到的数据是这样的:
可以看到在第5篇文章分类错误的情况下,即负样本排在了正样本的前面,故AUC=0.96
我们接下来做进一步的测试:
整体是符合我们预期的,当分类预测值误差越大,负样本在正样本前面的概率就越小,即AUC越小。