网络机器人吧社区

机器学习入门——泛化能力性能度量

411lab 2018-12-05 13:50:33

对比不同模型的泛化能力时,采用不同的度量方法,往往得到不同的结果,所以什么样的数据模型是好的,不仅取决于算法和数据,还取决于任务需求。下面是回归任务和分类任务常用的性能度量。

回归任务

分类任务


仿照回归任务,分类任务也可以写成更一般的形式,比如错误率:


错误率

Ⅱ(输入)表示的是指示函数,在输入为真时输出1,输入为假时,输出0

查准率、查全率与F1

在信息检索中,如果我们关心“检索出的信息中有多少比例是用户感兴趣的”,如果看成二分类问题,给检索出的信息视为(预测)正例,用户感兴趣的为真正的正例,两者的交集占检索出的信息的比例,我们称为查准率,表示我们得到的数据是否尽可能的准确(正确分类的占比高,被误分类的占比低)。同理,查全率表示的是真实的正例中是否尽可能多的被找出来了。


查准率与查全率

一般来说,查准率高,查全率会比较低,查全率高,查准率会比较低,如下图所示:


P-R曲线


P-R曲线的画法:将学习器的预测结果对样例进行排序,排在最前面的是学习器认为最可能的正例样本,按此顺序从前往后逐个把样本作为正例,逐次计算当前的查准率和查全率,绘制在图中即得到P-R曲线。对于不同的学习器(算法/模型)可以得到不同的P-R曲线,如果一个曲线将另一个曲线包住了,那么外面的这个学习器认为是好的,但当两个曲线有交叉的时候,可以画出如图一条斜线,得到三个平衡点(BEP),它是查准率=查全率时的取值,可认为A优于B。

如果认为BEP过于简单化,可以使用F1度量,当对查准率和查全率的重视程度不同时,使用F1度量更一般化的形式Fβ度量。更多关于n个二分类混淆矩阵对查准率和查全率的综合考察,参考周志华老师的《机器学习》第32-33页。

ROC 与 AUC

ROC全程称是“受试者工作特征”(Receiver Operating Characteristic),我们利用ROC曲线比较不同学习器的性能优劣。若一个学习器的ROC曲线被另一个学习器曲线包住,则可断言后者性能优于前者,若两个学习曲线发生交叉,则比较两个ROC曲线下的面积,AUC(Area Under ROC Curve)。

ROC曲线与AUC


ROC曲线的画法
首先定义真正例率(TPR)和假正例率(FPR):

image.png


假设有10个样本,里面有5个正例和5个反例。学习器会对测试样本产生一个预测的概率值,然后将这个预测值与一个分类阈值进行比较,若大于阈值则分为正类,否则分为反类。假设这10个样本的预测值分别如下:

正例预测结果概率为(0.9, 0.8, 0.5, 0.4, 0.3);
反例预测结果概率为(0.7, 0.6, 0.2, 0.1, 0.01);

实际上,可以根据预测值将样本进行排序(既可以升序,也可以降序)



红色为正例概率,黑色为反例概率。

一般的,给定m+个正例和m-个反例,排序完成后,把分类阈值设为最大,即把所有样例均预测为反例(在此处假设分类阈值左边为正例,右边为反例),此时真正例率和假正例率均为0,坐标点在(0, 0)处。然后将分类阈值依次向右移动设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点坐标为(x, y),当前若为真正例,则对应标记点坐标为




当前若为假正例,则对应标记点坐标为


然后用线段连接相邻点即可。

关于当前坐标的推导过程:下面给出第一种情况的推导过程,第二种情况也是类似的。



所以就得到了真正例率发生变化,而假正例率没有变化的新的坐标点。

回到我们的例子,根据阈值的移动和坐标点的计算方法,可以画出如下图形:


ROC曲线



可以观察到,每个虚线所框出的方格面积为


所以反例概率比正例概率大的情况共有3*2=6种,所以排序损失对应ROC 曲线之上的6个方格的面积

反例概率比正例概率大的情况:
正例预测结果概率为(0.9, 0.8, 0.5, 0.4, 0.3);
反例预测结果概率为(0.7, 0.6, 0.2, 0.1, 0.01);
0.7 > 0.5, 0.4, 0.3; 0.6 > 0.5, 0.4, 0.3
所以说共有6种。

再考虑另一种情形:

依然有5对正反例:

正例预测结果概率为(0.9, 0.8, 0.5, 0.4, 0.3);
反例预测结果概率为(0.7, 0.5, 0.2, 0.1, 0.01);

那么总排序可以有两种情况为(红色为正例概率,黑色为反例概率):



故 ROC 曲线有相应的两种情况(红色和绿色分别对应情况一与二):


ROC曲线


这时,反例概率比正例概率大的情况共有1+2*2=5种,而反例概率与正例概率相同的情况可认为各占一半,所以得出总的排序损失为

所以排序损失可以定义为:

我对排序损失的理解(不一定正确):因为我们用阈值给已排序的样本划分正反例,如果反例概率比正例概率大,那么就可能将反例预测为正例,正例预测为反例,这会导致与真实情况不符,故应当将这个指标作为一种“处罚”指标。

另外,通过微分的思想,可以很容易的得到AUC的公式:


在现实任务中,不同类型的错误所造成的后果不同,比如医疗诊断中,将患者错误的诊断为健康所造成的后果相当严重,日常翻译中翻译错一个单词往往不会带来太大的损失,所以不同类型的错误会造成不同的损失,应当为错误赋予“非均等”代价。

以二分类认为为例,有以下代价矩阵



我们往往希望最小化总体代价,“代价敏感”的错误率可表示为:



但是,在非均等代价下,ROC曲线就不能直接反映出学习器的期望总体代价,可以用“代价曲线”表示。



其中正例概率代价


p是样例为正例的概率,纵轴是取值为[0, 1]的归一化代价


FNR = 1 - TPR,是假反例率。代价曲线的绘制:ROC 由线上每…点对应了代价平面上的二条线段7 设ROC 曲线上点的坐标为(TPR, FPR) ,则可相应计算出FNR,然后在代价平面上绘制一条从(O , FPR) 到(l , FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC 曲线土的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的自积即为在所有条件下学习器的期望总体代价。

参考:《机器学习》周志华
作者:JohnnyMa
链接:https://www.zhihu.com/question/265364451/answer/302612819
来源:知乎


Copyright © 网络机器人吧社区@2017