Python NLTK学习9(评估分类器的方法)
本系列博客为学习《用Python进行自然语言处理》一书的学习笔记。
引言
假设我们现在写了一个垃圾邮件分类器,它可以将邮件分类成垃圾邮件和非垃圾邮件。现在我们有一个总数为1000的测试样本集,其中垃圾邮件数量100,非垃圾邮件数量900。我们将分类器分类后的结果用下图表示:
- True positive 真阳性(TP):正确识别为相关的,也就是正确识别为垃圾邮件。
- False positive 假阳性(FP):错误识别为相关的,也就是错误识别为垃圾邮件。
- True negative 真阴性(TN):正确识别为不相关的,也就是正确识别为非垃圾邮件。
- False negative 假阴性(FN):错误识别为不相关的,也就是错误识别为非垃圾邮件。
我们假设:
- TP = 80
- FP = 10
- TN = 890
- FN = 20
其中TP+FN肯定等于垃圾邮件数量100,FP+TN肯定等于非垃圾邮件数量900。我们该如何评估该分类器呢?
准确度
我们最常用的评估方法就是准确度,准确度=(TP+TN)/样本总数,准确度就是我们有多少分类是真确的。我们例子的准确度为(80+890)/1000=97%,但是准确度对于我们的垃圾邮件分类器来说可能不太有用,因为即使分类器将所有的样本都识别为非垃圾邮件,它依然还有90%的准确度。一般来说准确度对于这种非均衡的样本集都不太有用。
精确度(Precision)
精确度=TP/(TP+FP),精确度就是我们发现的项目中有多少是相关的,也就是说我们预测的垃圾邮件中有多少是真正的垃圾邮件。我们例子的精确度为80/(80+10)=88.88%,精确度对于我们的垃圾邮件分类器来说很重要,我们应该尽可能的提高该数字,因为对用户来说将非垃圾邮件分类为垃圾邮件是一件不能容忍的事情。
召回率(Recall)
召回率=TP/(TP+FN),召回率就是相关的项目中我们发现了多少,也就是说我们发现了多少垃圾邮件。我们例子的召回率为80/(80+20)=80%,召回率对我们的垃圾邮件分类器比较重要,它反映的是我们发现垃圾邮件的能力。可能对于用户来说我们的这个能力可以稍微弱一点,因为将垃圾邮件分类为非垃圾邮件是可以容忍的一件事。
F-度量值(F-Measure)
F-度量值=2*精确度*召回率/(精确度+召回率),F-度量值综合了精确度和召回率,是一个综合值。我们例子的F-度量值为2*0.8888*0.8/(0.8888+0.8)=0.8421。
后话
不同的分类模型我们可能需要选择不同的度量值来评估我们的分类器,这个要根据实际情况做选择。
其他章节链接
Python NLTK学习9(评估分类器的方法)
还没有人评论...