评价分类器的性能

1、准确率–0/1损失
对于一个特定的测试点,损失或者为0或者为1,取决于预测是正确还是错误的。显然,这个值越低越好。
不足:

(1)、如何评价这个量不容易,如0.2怎么样?
(2)、对于类别数据不平衡的数据,如80%是类别一,20%是类别2,如果我们总 是将对象归为类别1,却也能得到0.2的平均损失。下面介绍一个克服这个问题的方法。

2、敏感性和特异性
假设一个探测疾病的二分类任务,t=0代表健康的人,t=1代表患病的人。如果我们试图去检测一种稀有的疾病,那么0/1损失就是这一种糟糕的主意–诊断所有人都健康就能得到非常低的0/1损失。分析敏感性和特异性这两个值,是一个更好的主意。要计算敏感性和特异性,需要从分类结果提取4个统计值,他们是:

  • 正确的正例(TP) –本身为t’=1,被分类为t=1的对象的数量(患病的人被诊断为患病)
  • 正确的反例(TN)–本身为t’=0,被分类为t=0的对象的数量(健康的人被诊断为健康)
  • 错误的正例(FP) –本身为t’=0,被分类为t=1的对象的数量(健康的人被诊断为患病)
  • 错误的反例(FN)–本身为t’=1,被分类为t=0的对象的数量(患病的人被诊断为健康)

敏感性

Se=TP/(TP+FN)

特异性

Sp=TN/(TN+FP)

两个值都位于0到1之间。
敏感性是被正确诊断为患病的人(TP)与所有患病人(TP+FN)的比。
特异性是被正确诊断为健康的人(TN)与所有健康人(TN+FP)的比。

对于稀有疾病的例子,如果我们判断所有人都健康,那么我们得到的敏感性将是1,但是特异性却是0。理想情况下我们希望Se=Sp=1.这对于所有的应用不一定适合,我们需要定义如何最优化敏感性和特异性的值。例如,Sp=0.9、Se=0.8和Sp=0.8、Se=0.9哪个更好?这个答案依赖于问题。在我们稀有疾病诊断中,我们不希望漏诊任何一个患病的人,但可以容忍将健康的人诊断为患病。由此,我们可能希望减小Sp,从而提高Se。

3、ROC曲线
在许多分类算法中,我么都提供一个实数值的输出,从而根据阈值来进行分类。例如,在贝叶斯分类器(二值)和逻辑回归中,我们提供我们提供P(Tnew=1|xnew,X,t)–值位于0和1之间。在SVM中,我们提供了以0为阈值的函数,对于任何算法,我们都可以使用任意阈值来获得一个硬分类器。
ROC(接收者操作特征)曲线让我们可以观察随着阈值的改变,性能如何变化由一系列阈值计算得到敏感性和特异性,描绘了敏感性和特异性。
这里写图片描述
这里写图片描述
我们知道我们想让Se和Sp尽可能地高,因此曲线越接近左顶点(Se=1,1-Sp=0)越好。如果曲线达到左顶点,说明我们可以选择一个完美分类数据的阈值。
我们通过计算ROC曲线下方区域(AUC)的面积来评估性能。一个能完美分类数据的分类器应该有大小为1的AUC。
在大多数应用中,AUC是一个比0/1损失更好的评价性能的方法。缺点是无法扩展到多值分类器,把它应用在多值分类器中的一个方法是以多个二值问题的形式来分析分类器的结果。
4、混淆矩阵
这里写图片描述
5、判别式和产生式分类器
产生式:为每个类别定义一个模型,然后将新元素指定为最适合他们的模型。如、贝叶斯分类器。
判别式:定义类别之间的决策边界。如、SVM和逻辑回归。

猜你喜欢

转载自blog.csdn.net/chaoshengmingyue/article/details/57407203
今日推荐