大家好,欢迎来到IT知识分享网。
目录
一、ROC
1. 概念
ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,这也是一个用于性能度量的工具,与P-R曲线相似,不过纵轴为“真正例率”(True Positive Rate,TPR),横轴为“假正例率”(False Positive Rate,FPR),两者公式如下:
细心地读者已经发现了,TPR的公式和R(召回率)公式一模一样,然后我们用上篇文章的方法来解读这两个公式:
- TPR = 预测正确的正类 / 真实情况中的正类。即预测准确的正类占所以正类的比例;
- FPR = 预测成正类的负类 / 真实情况中的负类。即预测错误的负类占所有负类的比例。
由这两个数据作为ROC曲线的横轴与纵轴,而曲线下方的面积为AUC(Area Under ROC Curve,下面细讲),如下图所示:
我们会发现,如果越靠近(0, 1)这个点,TPR越高,FPR越低,说明预测结果更好,在(0, 1)时最高,预测率100%准确;在角平分线上方,预测器正确的比率比错误高;在角平分线上,TPR和FPR是五五开的,也就是说这个预测器等于是在蒙,一半一半的正确率;如果在角平分线下方,那么就是毒奶预测器了,反向思考结果即可。
这里是连续的情况(其实我画的就像是离散的一样…曲线不好画呜呜呜),但是如果数据有限,就会变成离散的情况,如书上34页图2.4b一样,还有我们下面的栗子。
2. 绘制方法
书上只写了一个绘制方法,但是我用了两种方法进行绘制,我这边先叙述我自己的方法,再讲解书上的方法,最后再来分析为什么我的方法的最优情况就是书上的方法。
这里先把南瓜书的栗子给大家放上来:
预测结果:
(s1, 0.77, +),(s2, 0.62, −),(s3, 0.58, +),(s4, 0.47, +),(s5, 0.47, −),(s6, 0.33, −),(s7, 0.23, +),(s8, 0.15, −)
一共4个正类,4个负类,m+ = 4,m– = 4。
ROC曲线:
注:绿色的线代表该预测结果是个真正例,红色的线代表预测结果是个假正例。
这个曲线我其实有点没弄懂这个蓝色的线,因为我第一次绘图的时候是用的一根绿加一根红,但是后来发现这样绘图与公式的结果不同,于是我就开始考虑这个蓝色线的问题,由于蓝色线包含的两个点分别为:(s4, 0.47, +),(s5, 0.47, −),值相同,预测结果不同,所以我个人的理解如下:
由于值相同,预测相反,如果按照先绿色再红色,那么会使得AUC变大这么一个小三角形的面积,但是这种预测本身是摇摆的,不可能增大这么一坨预测正确的值而减少上面面积(loss)的值,所以就用角平分线来代替,这样无论是loss还是AUC的面积都相同。
2.1 我的方法
其实我的方法很简单,就是简单地计算TPR和FPR,计算步骤如下:
- 将分类阈值设为最大,TPR和FPR都为0,第一个点(0, 0);
- 将s1划分为正例,也就是说s1是“截断点”,那么整个集合变为:(+, -, -, -, -, -, -, -),此时共有:1个TP,3个FN,4个TN,0个FP,FPR = 0 / (4 + 0) = 0,TPR = 1 / (1 + 3) = 1 / 4,第二个点为(0, 1 / 4);
- 将s1、s2划分为正例,此时s2为“截断点”,整个集合变为:(+, +, -, -, -, -, -, -),此时共有:1个TP,1个FP,3个TN,3个FN,FPR = 1 / (1 + 3) = 1 / 4,TPR = 1 / (1 + 3) = 1 / 4;
- …
2.2 书上的方法
书上的方法步骤如下:
- 将分类阈值设为最大,TPR和FPR都为0,第一个点(0, 0);
- 将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例;
- 前一个标记点坐标记为(x, y);
- 若当前为真正例则对应的标记点坐标为(x, y + 1 / m+),若当前为假正例则对应的标记点坐标为(x + 1 / m–, y);
- 相连节点(如果预测值相同,那么跳过中间那个节点,连接相同节点的前一个节点和最后一个相同的节点,比如上面数据中的s3与s5)。
那么依据上面的方法,计算步骤如下:
- 第一个点为(0, 0);
- 设定s1为正例,且s1为真正例,此时x = 0,y = 0,于是s1为(0, 0 + 1 / 4) = (0, 1 / 4);
- 设定s2为正例,且s2为假正例,此时x = 0,y = 1 / 4,于是s2为(0 + 1 / 4, 1 / 4) = (1 / 4, 1 / 4);
- …
2.3 两者的关系
为什么我的计算方式可以转换为书上的计算方式,我认为有以下几个原因:
- 因为虽然每次都在改变,但是每一次只会有一个预测点发生改变;
- TP + FN = m+, TN + FP = m–,而m+与m–是固定的,所以每次改变也仅会有一个发生改变,当TP + 1时,FN – 1是确定的,FP + 1时,TN – 1也是确定的,而对于两个公式而言,就是分子每次 + 1,但是分母不变,所以每次都是改变一个1 / m+或者1 / m–。
2.4 性能评价
当我们评价多个预测器指标的时候,如果一个预测器的ROC完全包住了另外一个预测器的ROC,那么前者性能优于后者,但是如果有交叉的部分,就需要比较两者的AUC了。
二、AUC
1. 概念
AUC(Area Under ROC Curve),指的是ROC曲线下面的面积,用于评估ROC曲线的性能。
2. 计算
其实ROC的公式挺简单的,就是一个梯形面积的公式:
书上公式如下:
解读如下:
- xi+1 – xi为高(读者可以把图竖着看);
- yi + yi+1为上底加下底(详见蓝色那根线);
三、loss
我个人在loss这个表达式纠结了很久,所以这里也着重说这个公式。
1. 概念
书上写的lrank对应的是ROC曲线上方的面积,AUC = 1 – lrank,公式描述是:若正例预测值小于反例,则记一个“罚分”,若相等,则记0.5个“罚分”。
2. 计算
根据南瓜书上写的,这个公式其实也是个矩形公式,只是不容易推导出来,推导过程我就照搬南瓜书的推导了:
这里m+是指多少个正例,m–是指多少个反例,D+代表正例集合,D–代表反例集合。
我们下面解读就以最后一行公式解读:
鉴于大家懒得去上面翻数据,我这里把数据重新贴一下:
(s1, 0.77, +),(s2, 0.62, −),(s3, 0.58, +),(s4, 0.47, +),(s5, 0.47, −),(s6, 0.33, −),(s7, 0.23, +),(s8, 0.15, −)
我这里也重新画了个图来描述这个计算过程:
解读如下:
- 这里我们就以公式最后一行来看,1 / 2就是矩阵面积中的“除以二”,1 / m+就是纵轴的一个刻度,也就是矩阵面积中的“高”,这两个是常数项,就先知道这两个的含义即可;
- 最外层的x+∈D+求和,在代码中相当于一个for循环,遍历所有的正例;
- 里层的两个x–∈D–求和,相当于嵌套了两个平行的for循环,遍历所有的反例,结合解读2,那么整个循环就是判断每个反例是否大于或等于每个正例,也可以说成是“判断每个正例是否小于等于每个反例”;
- 由于数据是从大到小进行排列的,所以我们这里把数据可以简化为:(+, -, +, +, -, -, +, -),注意,s4与s5是相同的预测值;
- 于是整个遍历结果可以表现为下面表格:
计算过程如下:
- 当第一遍遍历,正例为s1,发现s2-s8没有比s1大的,所以内层两个求和都为0,面积为0,对应上图为y1对应的那条红线;
- 当第二遍遍历,正例为s3,发现s2比s3大,于是内层第一个求和为1,第二个求和为0,最后运算结果为(1 / m+) · (1 / m–),对应上图a1的面积;
- 当第三遍遍历,正例为s4,发现s2比s4大,s5与s4相同,于是内层第一个求和为1,第二个求和为1,最后运算结果为 3 / (2 · m + · m–),对应上图a2的面积;
- 当第四遍遍历,正例为s7,发现s2,s5,s6都比s7大,于是内层第一个求和为3,第二个求和为0,最后运算结果为 3 / (m+ · m–),对应上图a3的面积。
四、参考
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/148919.html