机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)
是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accuracy)
,精确率(Precision)
,召回率(Recall)
和F1-Measure
。 (注: 相对来说,IR 的 ground truth 很多时候是一个 Ordered List, 而不是一个 Bool 类型的 Unordered Collection,在都找到的情况下,排在第三名还是第四名损失并不是很大,而排在第一名和第一百名,虽然都是“找到了”,但是意义是不一样的,因此 更多可能适用于 MAP(下面会介绍) 之类评估指标。)
准确率、精确率、召回率
在介绍准确率,精确率,召回率和F1值之前,我们先来看这样一个例子:
假设一个班级有100个学生,其中男生70人,女生30人。如下图,蓝色矩形表示男生,橙色矩形表示女生。又假设,我们不知道这些学生的性别,只知道他们的身高和体重。我们有一个程序(分类器),这个程序可以通过分析每个学生的身高和体重,对这100个学生的性别分别进行预测。最后的预测结果为,60人为男生,40人为女生,(我们假设男生为正例,女生为负例)如下图。
- TP:(实际为正例,预测也为正例) 实际为男生,预测为男生;
- FP:(实际为负例,预测为正例) 实际为女生,预测为男生;
- FN:(实际为正例,预测为负例) 实际为男生,预测为女生;
- TN:(实际为负例,预测也为负例) 实际为女生,预测为女生;
- 准确率(Accuracy) = (TP + TN) / 总样本 =(40 + 10)/100 = 50%。 定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。
- 精确率(Precision) = TP / (TP + FP) = 40/60 = 66.67%。它表示:预测为正的样本中有多少是真正的正样本,它是针对我们预测结果而言的。Precision又称为查准率。
- 召回率(Recall) = TP / (TP + FN) = 40/70 = 57.14% 。它表示:样本中的正例有多少被预测正确了, 它是针对我们原来的样本而言的。Recall又称为查全率。
总结:准确率就是找得对,召回率就是找得全
准确率、召回率、F1
信息检索、分类、识别、翻译等领域两个最基本指标是召回率(Recall Rate)和准确率(Precision Rate),召回率也叫查全率,准确率也叫查准率,下面我们主要看看在信息检索中的情况。概念公式:
召回率(Recall) = 系统检索到的相关文件 / 系统所有相关的文件总数
准确率(Precision) = 系统检索到的相关文件 / 系统所有检索到的文件总数
图示如下:
- A:检索到的,也相关的 (搜到的也想要的)
- B:检索到的,但是不相关的 (搜到的但没用的)
- C:未检索到的,但却是相关的 (没搜到,然而实际上想要的)
- D:未检索到的,也不相关的 (没搜到也没用的)
注意:准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高。
一般情况,用不同的阀值,统计出一组不同阀值下的精确率和召回率,如下图:
如果是做搜索,那就是保证召回的情况下提升准确率;如果做疾病监测、反垃圾,则是保准确率的条件下,提升召回率。
所以,在两者都要求高的情况下,可以用F1来衡量,计算公式如下。
MAP(mean Average Precision) 信息检索
MAP是为解决P,R,F-measure的单点值局限性的。为了得到 一个能够反映全局性能的指标,可以看考察下图,其中两条曲线(方块点与圆点)分布对应了两个检索系统的准确率-召回率曲线
**分析: **
- 可以看出,虽然两个系统的性能曲线有所交叠但是以圆点标示的系统的性能在绝大多数情况下要远好于用方块标示的系统。
- 我们可以 发现一点,如果一个系统的性能较好,其曲线应当尽可能的向上突出。更加具体的,曲线与坐标轴之间的面积应当越大。
- 最理想的系统, 其包含的面积应当是1,而所有系统的包含的面积都应当大于0。这就是用以评价信息检索系统的最常用性能指标,平均准确率MAP其规范的定义如下:(其中P,R分别为准确率与召回率)
ROC和AUC 分类识别
ROC和AUC是评价分类器的指标,ROC的全名叫做Receiver Operating Characteristic
。
ROC关注两个指标
- True Positive Rate ( TPR ) = TP / ( TP + FN) ,TPR代表能将正例分对的概率
- False Positive Rate( FPR ) = FP / (FP + TN),FPR代表将负例错分为正例的概率
在ROC 空间中,每个点的横坐标是FPR,纵坐标是TPR,这也就描绘了分类器在TP(真正的正例)和FP(错误的正例)间的trade-off。ROC的主要分 析工具是一个画在ROC空间的曲线——ROC curve。我们知道,对于二值分类问题,实例的值往往是连续值,我们通过设定一个阈值,将实例分类到正类或者负类(比如大于阈值划分为正类)。因此我们 可以变化阈值,根据不同的阈值进行分类,根据分类结果计算得到ROC空间中相应的点,连接这些点就形成ROC curve。ROC curve经过(0,0)(1,1),实际上(0, 0)和(1, 1)连线形成的ROC curve实际上代表的是一个随机分类器。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。如图所示。
用ROC curve来表示分类器的performance很直观好用。可是,人们总是希望能有一个数值来标志分类器的好坏。于是**Area Under roc Curve(AUC)**就出现了。顾名思义,AUC的值就是处于ROC curve下方的那部分面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的Performance。