您现在的位置是:首页 > 正文

模型评估指标

2024-01-30 20:48:58阅读 0

一、回归(Regression)算法指标

1. Mean Absolute Error 平均绝对误差(MAE)

在这里插入图片描述

平均绝对误差MAE(Mean Absolute Error)又被称为 L1范数损失。MAE虽能较好衡量回归模型的好坏,但是绝对值的存在导致函数不光滑,在某些点上不能求导,可以考虑将绝对值改为残差的平方,这就是均方误差。

2. Mean Squared Error 均方误差(MSE)

在这里插入图片描述

均方误差MSE(Mean Squared Error)又被称为 L2范数损失 。由于MSE与我们的目标变量的量纲不一致,为了保证量纲一致性,我们需要对MSE进行开方。

3. Root Mean Squared Error:均方根误差(RMSE)

在这里插入图片描述

4. Coefficient of determination 决定系数(R^2)

决定系数又称为R^2 score,反映因变量的全部变异能通过回归关系被自变量解释的比例。
在这里插入图片描述
如果结果是0,就说明模型预测不能预测因变量。 如果结果是1。就说明是函数关系。 如果结果是0-1之间的数,就是我们模型的好坏程度。 化简上面的公式 ,分子就变成了我们的均方误差MSE,下面分母就变成了方差:
在这里插入图片描述

5. 解决评估指标鲁棒性问题

以上的评估指标是基于误差的均值对进行评估的,均值对异常点(outliers)较敏感,如果样本中有一些异常值出现,会对以上指标的值有较大影响,即均值是非鲁棒的。

我们通常用一下两种方法解决评估指标的鲁棒性问题:

1、剔除异常值
2、设定一个相对误差 ,当该值超过一定的阈值时,则认为其是一个异常点,剔除这个异常点,将异常点剔除之 后。再计算平均误差来对模型进行评价。
使用误差的分位数来代替
如利用中位数来代替平均数。例如 MAPE:
在这里插入图片描述
MAPE是一个相对误差的中位数,当然也可以使用别的分位数。

二、分类(Classification)算法指标

1. 精度 Accuracy

预测正确的样本的占总样本的比例,取值范围为[0,1],取值越大,模型预测能力越好。但对于样本类别数量严重不均衡的情况,不能用精度指标来衡量。

2.混淆矩阵 Confusion Matrix

在这里插入图片描述
True positive (TP)
真实值为Positive,预测正确(预测值为Positive)
True negative (TN)
真实值为Negative,预测正确(预测值为Negative)
False positive (FP)
真实值为Negative,预测错误(预测值为Positive),第一类错误, Type I error。
False negative (FN)
真实值为Positive,预测错误(预测值为 Negative),第二类错误, Type II error。

3. 准确率(查准率) Precision

Precision 是分类器预测的正样本中预测正确的比例,取值范围为[0,1],取值越大,模型预测能力越好。
在这里插入图片描述

4. 召回率(查全率)Recall

Recall 是分类器所预测正确的正样本占所有正样本的比例,取值范围为[0,1],取值越大,模型预测能力越好。
在这里插入图片描述
【样例】:某一家互联网金融公司风控部门的主要工作是利用机器模型抓取坏客户。互联网金融公司要扩大业务量,尽量多的吸引好客户,此时风控部门该怎样调整Recall和Precision?如果公司坏账扩大,公司缩紧业务,尽可能抓住更多的坏客户,此时风控部门该怎样调整Recall和Precision?
ROC 曲线展示了当改变在模型中识别为正例的阈值时,召回率和精度的关系会如何变化。
  为了将某个病人标记为患有某种疾病(一个正例标签),我们为每种疾病在这个范围内设置一个阈值,通过改变这个阈值,我们可以尝试实现合适的精度和召回率之间的平衡。如果我们有一个用来识别疾病的模型,我们的模型可能会为每一种疾病输出介于 0 到 1 之间的一个分数,为了将某个病人标记为患有某种疾病(一个正例标签),我们为每种疾病在这个范围内设置一个阈值,通过改变这个阈值,我们可以尝试实现合适的精度和召回率之间的平衡。

5. Fβ Score

根据以上个案,我们知道随着阈值的变化Recall和Precision往往会向着反方向变化,这种规律很难满足我们的期望,即Recall和Precision同时增大。
  Precision和Recall 是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下Precision高、Recall 就低, Recall 高、Precision就低。为了均衡两个指标,我们可以采用Precision和Recall的加权调和平均(weighted harmonic mean)来衡量,即Fβ Score,公式如下:
  由于Fβ Score 无法直观反映数据的情况,同时业务含义相对较弱,实际工作用到的不多。
在这里插入图片描述
在这里插入图片描述
**P-R 曲线:**加粗样式
在这里插入图片描述

6. AUC Area Under Curve

AUC是一种模型分类指标,且仅仅是二分类模型的评价指标。AUC是Area Under Curve的简称,那么Curve就是 ROC(Receiver Operating Characteristic),翻译为"接受者操作特性曲线"。也就是说ROC是一条曲线,AUC是 一个面积值。

ROC曲线为 FPR 与 TPR 之间的关系曲线,这个组合以 FPR 对 TPR,即是以代价 (costs) 对收益 (benefits),显然收益越高,代价越低,模型的性能就越好。

  • x 轴为假阳性率(FPR):在所有的负样本中,分类器预测错误的比例

在这里插入图片描述

  • y 轴为真阳性率(TPR):在所有的正样本中,分类器预测正确的比例(等于Recall)

在这里插入图片描述
为了更好地理解ROC曲线,我们使用具体的实例来说明:

如在医学诊断的主要任务是尽量把生病的人群都找出来,也就是TPR越高越好。而尽量降低没病误诊为有病的人数,也就是FPR越低越好。

不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的TPR应该会很高,但是FPR也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么TPR达到1,FPR也为1。

我们以FPR为横轴,TPR为纵轴,得到如下ROC空间:
在这里插入图片描述
我们可以看出,左上角的点(TPR=1,FPR=0),为完美分类,也就是这个医生医术高明,诊断全对。点A(TPR>FPR),医生A的判断大体是正确的。中线上的点B(TPR=FPR),也就是医生B全都是蒙的,蒙对一半,蒙错一半;下半平面的点C(TPR<FPR),这个医生说你有病,那么你很可能没有病,医生C的话我们要反着听,为真庸医。上图中一个阈值,得到一个点。现在我们需要一个独立于阈值的评价指标来衡量这个医生的医术如何,也就是遍历所有的阈值,得到 ROC 曲线。

假设下图是某医生的诊断统计图,为未得病人群(上图)和得病人群(下图)的模型输出概率分布图(横坐标表示模型输出概率,纵坐标表示概率对应的人群的数量),显然未得病人群的概率值普遍低于得病人群的输出概率值(即正常人诊断出疾病的概率小于得病人群诊断出疾病的概率)。

竖线代表阈值。显然,图中给出了某个阈值对应的混淆矩阵,通过改变不同的阈值 ,得到一系列的混淆矩阵,进而得到一系列的TPR和FPR,绘制出ROC曲线。

阈值为1时,不管你什么症状,医生均未诊断出疾病(预测值都为N),此时 ,位于左下。阈值为 0 时,不管你什么症状,医生都诊断结果都是得病(预测值都为P),此时 ,位于右上。

在这里插入图片描述
AUC定义:

AUC 值为 ROC 曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。

【AUC 的一般判断标准】

0.5 – 0.7: 效果较低,但用于预测股票已经很不错了

0.7 – 0.85: 效果一般

0.85 – 0.95: 效果很好

0.95 – 1: 效果非常好,但一般不太可能

AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
注:对于AUC小于 0.5 的模型,我们可以考虑取反(模型预测为positive,那我们就取negtive),这样就可以保证模型的性能不可能比随机猜测差。

AUC的物理意义 AUC的物理意义正样本的预测结果大于负样本的预测结果的概率。所以AUC反应的是分类器对样本的排序能力。另外值得注意的是,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。

【样例】小明一家四口,小明5岁,姐姐10岁,爸爸35岁,妈妈33岁,建立一个逻辑回归分类器,来预测小明家人为成年人概率。
在这里插入图片描述
1、AUC更多的是关注对计算概率的排序,关注的是概率值的相对大小,与阈值和概率值的绝对大小没有关系 例子中并不关注小明是不是成人,而关注的是,预测为成人的概率的排序。
2、AUC只关注正负样本之间的排序,并不关心正样本内部,或者负样本内部的排序。这也体现了AUC的本质: 任意个正样本的概率都大于负样本的概率的能力。
例子中AUC只需要保证(小明和姐姐)(爸爸和妈妈),小明和姐姐在前2个排序,爸爸和妈妈在后2个排序,而不会考虑小明和姐姐谁在前,或者爸爸和妈妈谁在前 。AUC只与概率的相对大小(概率排序)有关,和绝对大小没关系。由于三个模型概率排序的前两位都是未成年人(小明,姐姐),后两位都是成年人(妈妈,爸爸),因此三个模型的AUC都等于1。

【为什么说 ROC 和AUC都能应用于非均衡的分类问题?】

ROC曲线只与横坐标 (FPR) 和 纵坐标 (TPR) 有关系 。我们可以发现TPR只是正样本中预测正确的概率,而FPR只是负样本中预测错误的概率,和正负样本的比例没有关系。因此 ROC 的值与实际的正负样本比例无关,因此既可以用于均衡问题,也可以用于非均衡问题。而 AUC 的几何意义为ROC曲线下的面积,因此也和实际的正负样本比例无关。

在这里插入图片描述

【不同阀值下,几个指标的变化情况 样例】
在这里插入图片描述

7. KS Kolmogorov-Smirnov

KS值是在模型中用于区分预测正负样本分隔程度的评价指标,一般应用于金融风控领域。

与ROC曲线相似,ROC是以FPR作为横坐标,TPR作为纵坐标,通过改变不同阈值,从而得到ROC曲线。

而在KS曲线中,则是以阈值作为横坐标,以FPR和TPR作为纵坐标,ks曲线则为TPR-FPR,ks曲线的最大值通常为ks值。

为什么这样求KS值呢?我们知道,当阈值减小时,TPR和FPR会同时减小,当阈值增大时,TPR和FPR会同时增大。而在实际工程中,我们希望TPR更大一些,FPR更小一些,即TPR-FPR越大越好,即ks值越大越好。

可以理解TPR是收益,FPR是代价,ks值是收益最大。图中绿色线是TPR、蓝色线是FPR。

在这里插入图片描述
在这里插入图片描述

网站文章

  • 【闲聊杂谈】HTTPS原理详解

    【闲聊杂谈】HTTPS原理详解

    HTTP虽然使用极为广泛, 但是却存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付, 网络交易等新兴应用中安全方面最需要关注的。关于 HTTP的明文数据传输...

    2024-01-30 20:48:49
  • org.hibernate.MappingException: Unknown entity:

    最近学习JEECG框架,使用代码自动生成功能并导入的过程后出现以下问题:页面能正常访问,但是首先前台页面出现NULL,相继后台打印出【org.jeecgframework.core.common.exception.MyExceptionHandler]java.lang.NullPointerException】点击确定后进行增删改查操作,编辑内容新增,提交后前台显示Unknown en

    2024-01-30 20:48:41
  • 管理oracle控制文件

    每一个oracle数据库都有一个控制文件。控制文件是一个小型的二进制文件,可以记录数据库的物理结构,包含以下的内容:数据库名称、相关数据文件和联机重做日志文件的名称和位置、数据库创建的时标、当前日志的序号、检验点信息。 无论何时打开数据库,控制文件必须能够由oracle数据库服务器写入内容。没有控制文件,数据库就不能装载,且很难恢复。oracle数据库控制文件在数据库创建的同时创

    2024-01-30 20:48:32
  • javascript 【2018.11.29】

    &lt;html&gt;&lt;head&gt; &lt;title&gt;&lt;/title&gt;&lt;/head&gt;&lt;body&gt; &lt;script type="text/javascript"&gt; for(i=0;i&lt;10;i++) { if(i==3) break;

    2024-01-30 20:48:04
  • TCP/IP 三次握手

    TCP/IP 三次握手

    TCP/IP 三次握手

    2024-01-30 20:47:58
  • Java中高位转低位溢出的计算过程

    System.out.println((byte) 129);System.out.println((byte) -129);System.out.println("~b2: " + ~10);结果是:-127127~b2: -11计算机中是以补码进行计算正数的反码补码都是原码,如:10原码: 1010反码: 1010补码:1010负数 -10原码 10000000...

    2024-01-30 20:47:51
  • PAT - 乙级 1040 有几个PAT

    1040. 有几个PAT(25)时间限制120 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CAO, Peng字符串APPAPT中包含了两个单词“PAT”,其中第一...

    2024-01-30 20:47:22
  • Qt状态机使用

    Qt状态机使用

    Qt状态机是一种被称为QStateMachine的类,它可以用来管理应用程序的状态。状态机有助于将应用程序分解为互相独立、可重复的状态。状态由事件驱动,可以响应输入、发出输出并采取自适应操作。在Qt中...

    2024-01-30 20:47:16
  • Redis最最最通俗易懂的解释!!!

     Redis的官方解释可以百度,这里讲redis缓存为啥速度快???    这么说吧,别人问你什么是“redis”,如果你知道,你可以直接吧啦吧啦一大堆,其实这个时候你的大脑就类似redis缓存,别人问的“redis”就是key,你说出来的结果就是value,而你如果不知道,你就去上网查,然后再告诉别人,这就类似于查询数据库了,你查了再告诉别人当然慢了!    你把脑袋里的东西写进笔记...

    2024-01-30 20:47:08
  • 接口自动化从零搭建(三):使用rest-assured 实现文件上传与文件下载

    接口自动化从零搭建(三):使用rest-assured 实现文件上传与文件下载

    文件上传与下载功能是现代web系统中不可或缺的功能,本节我们就来看下如何通过rest-assured来实现上传与下载接口的自动化 pom依赖 org.testng testng 6.14.3

    2024-01-30 20:46:42