【转】常用的风控算法模型评价指标

1. 基本概念

  
FNTP
TNFP

TP —— True Positive (真正, TP)被模型预测为正的正样本;可以称作判断为真的正确率 
TN —— True Negative(真负 , TN)被模型预测为负的负样本 ;可以称作判断为假的正确率 
FP ——False Positive (假正, FP)被模型预测为正的负样本;可以称作误报率 
FN—— False Negative(假负 , FN)被模型预测为负的正样本;可以称作漏报率

True Positive Rate(真正率 , TPR)或灵敏度(sensitivity) 
   TPR = TP /(TP + FN) 
  正样本预测结果数 / 正样本实际数 
True Negative Rate(真负率 , TNR)或特指度(specificity) 
   TNR = TN /(TN + FP) 
  负样本预测结果数 / 负样本实际数 
False Positive Rate (假正率, FPR) 
  FPR = FP /(FP + TN) 
  被预测为正的负样本结果数 /负样本实际数 
False Negative Rate(假负率 , FNR) 
  FNR = FN /(TP + FN) 
  被预测为负的正样本结果数 / 正样本实际数

Precision:P=TP/(TP+FP) 精准率(查准率) 
Recall:R=TP/(TP+FN) 召回率(查全率 ) 
精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),而召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数

F1-score:2/(1/P+1/R) 
ROC/AUC:TPR=TP/(TP+FN), FPR=FP/(FP+TN) 
 其中查全率有更大影响,查准率有更大影响。退化为F1 
2. ROC、AUC和PRC 
ROC(receiver operating characteristic curve)是曲线。也就是下图中的曲线。AUC也就是蓝色线与FPR围成的面积。一般来说,如果ROC是光滑的,那么基本可以判断没有太大的overfitting(比如图中0.2到0.4可能就有问题,但是样本太少了),这个时候调模型可以只看AUC,面积越大一般认为模型越好。 
这里写图片描述

PRC, precision recall curve。和ROC一样,先看平滑不平滑(蓝线明显好些),在看谁上谁下(同一测试集上),一般来说,上面的比下面的好(绿线比红线好)。F1当P和R接近就也越大,一般会画连接(0,0)和(1,1)的线,线和PRC重合的地方的F1是这条线最大的F1(光滑的情况下),此时的F1对于PRC就好象AUC对于ROC一样。一个数字比一条线更方便调模型。 
这里写图片描述

有时候模型没有单纯的谁比谁好(比如图二的蓝线和青线),那么选择模型还是要结合具体的使用场景。

下面是两个场景: 
1. 地震的预测 
对于地震的预测,我们希望的是RECALL非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲PRECISION。情愿发出1000次警报,把10次地震都预测正确了;也不要预测100次,对了8次漏了2次。 
2. 嫌疑人定罪 
基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。及时有时候放过了一些罪犯(recall低),但也是值得的。

对于分类器来说,本质上是给一个概率,此时,我们再选择一个CUTOFF点(阀值),高于这个点的判正,低于的判负。那么这个点的选择就需要结合你的具体场景去选择。反过来,场景会决定训练模型时的标准,比如第一个场景中,我们就只看RECALL=99.9999%(地震全中)时的PRECISION,其他指标就变得没有了意义。

如果只能选一个指标的话,肯定是选PRC了。

3.注释 
mark1:在一些应用中,对精准率(查准率)和召回率(查全率 )重视程度不同,如商品推荐系统中,为了尽可能少打扰用户,更希望推荐的内容确实是用户比较感兴趣的,此时精准率(查准率)比较重要;在逃犯信息检索系统中,更希望尽量可能少漏掉逃犯,此时召回率(查全率 )比较重要; 
mark2:ROC比PRC效果好这个结论的切入点: 
对于同一份数据不同的模型来说,由于ROC同时考虑了两个类别上的准确率,效果比PRC要好;PRC由于仅考虑正样本,如果分布失衡,容易造成某个模型的PRC很高,但其实是在样本量大的那个类别“带偏”了; 
mark3:PRC比ROC效果好这个结论的切入点: 
对于同一份数据同一个的模型来说(就只有一个模型,一个ROC,一个PRC),因为ROC对类分布不敏感,就容易造成一个看似比较高的AUC对应的分类效果实际上并不好;而PRC就会波动非常大,以一个很“激烈”的方式表现出效果的不好。

某个模型AUC本身值的大小其实是不重要的,重要的是跟其他模型在同一份数据集上的AUC的大小关系,相对较大的那个更好。而PRC由于波动剧烈,即使不同模型在不同数据集上,也能看出一定的效果。(但其实对建立在不同数据上的不同模型,或者仅仅对某一个模型,仅靠PRC或者AUC来决定哪个好哪个差,这种方法本身就是不正确的。)

转载自:http://blog.csdn.net/guhongpiaoyi/article/details/53289229

 

一、假正例和假负例

 

假正例(False Positive):预测为1,实际为0的样本

假负例(False Negative):预测为0,实际为1的样本

实际预测中,那些真正例(True Positive)和真负例(True Negative)都不会造成损失(cost)。

那么,我们假设一个假正例的损失是LFP,一个假负例的损失是LFN。

我们可以得到一个损失矩阵:

 y^=1y^=0
y=10LFN
y=0LFP0

其中,y是真实值,y^是预测值。

那么,我们可以得到一个样本的后验期望损失:

clip_image002

clip_image002[6]

clip_image002[8]的时候,我们会预测结果为y^1=1,此时

clip_image002[10]

假设,clip_image002[12],那么我们可以得到决策规则:

clip_image002[14]

其中,clip_image002[16],也就是我们的决策边界。

 

例如,c=1时,我们对假正例和假负例同等对待,则可以得到我们的决策边界0.5。

 

二、ROC曲线

 

1.混淆矩阵(confusion matrix)

 

    针对预测值和真实值之间的关系,我们可以将样本分为四个部分,分别是:

    真正例(True Positive,TP):预测值和真实值都为1

    假正例(False Positive,FP):预测值为1,真实值为0

    真负例(True Negative,TN):预测值与真实值都为0

    假负例(False Negative,FN):预测值为0,真实值为1

    我们将这四种值用矩阵表示(图片引自《machine learning:A Probabilistic Perspective》):

    image

    上面的矩阵就是混淆矩阵。

   2.ROC曲线

     通过混淆矩阵,我们可以得到真正例率(True Positive Rate , TPR):

    clip_image002

    我们还可以得到假正例率(False Positive Rate  , FPR):

    clip_image002[5]

    可以看到,TPR也就是我们所说的召回率,那么只要给定一个决策边界阈值clip_image002[7],我们可以得到一个对应的TPR和FPR值,然而,我们不从这个思路来简单的得到TPR和FPR,而是反过来得到对应的clip_image002[9],我们检测大量的阈值clip_image002[7],从而可以得到一个TPR-FPR的相关图,如下图所示(图片引自《machine learning:A Probabilistic Perspective》):

image

    图中的红色曲线和蓝色曲线分别表示了两个不同的分类器的TPR-FPR曲线,曲线上的任意一点都对应了一个clip_image002[9]值。该曲线就是ROC曲线(receiver operating characteristic curve)。该曲线具有以下特征:

    从图中可以看出,红色曲线所代表的分类器效果好于蓝色曲线所表示的分类器。

3.利用ROC的其他评估标准

  • AUC(area under thecurve),也就是ROC曲线的下夹面积,越大说明分类器越好,最大值是1,图中的蓝色条纹区域面积就是蓝色曲线对应的 AUC
  • EER(equal error rate),也就是FPR=FNR的值,由于FNR=1-TPR,可以画一条从(0,1)到(1,0)的直线,找到交点,图中的A、B两点。

转载自:http://blog.csdn.net/tkingreturn/article/details/17640599

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通

【OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 4. 低通、高通、带阻、带通 图像滤波是在尽可能保留图像细节特征的条件下对目标图像的…

滑动登录

鼠标点击拖动滑块即可快速完成登录。 程序分析&#xff1a; 鼠标点击鼠标点击后拖动滑块鼠标点击取消滑块水平移动 效果图演示 初始页面 点击滑块进行拖动 此时的你是不是急于想实现它呢&#xff1f;&#xff1f;&#xff1f; 代码演示 <!DOCTYPE html><html …

Jupyter 快速入门

前言 之前一直在断断续续使用jupyter&#xff0c;感觉是时间来整理一下快速入门的办法了&#xff0c;方便实施建模使用。 1 Jupyter介绍 Jupyter Notebook是一个交互式笔记本编译器&#xff0c;支持在网页端运行多种编程语言&#xff0c;其本质就是一个基于web交互的程序编译…

【课题总结】OpenCV 抠图项目实战(1)目录摘要

Python 小白的课题报告—OpenCV 抠图项目实战&#xff08;1&#xff09;目录摘要 本系列是 Python 小白的课题作业《基于OpenCV 的图像分割和抠图》。 需要说明的是&#xff0c;本系列并不能算是 OpenCV 的抠图项目教程&#xff0c;只是以此为主题的课题报告。其中包括了一个较…

Vue 滑动验证

用Vue实现滑动验证码&#xff0c;鼠标点击滑动验证&#xff0c;验证成功之后会显示验证通过。 程序分析 鼠标的点击滑块的拖动未验证之前滑动条上显示的文字滑块箭头指向Vue函数判断是否拖动完毕拖动完毕时改变背景色并显示验证成功 效果图演示 原始状态 点击之后拖动 拖…

【课题总结】OpenCV 抠图项目实战(2)抠图绪论

Python 小白的课题报告&#xff1a;OpenCV 抠图项目实战&#xff08;2&#xff09;抠图绪论 本系列是 Python 小白的课题作业《基于OpenCV 的图像分割和抠图》。 需要说明的是&#xff0c;本系列并不能算是 OpenCV 的抠图项目教程&#xff0c;只是以此为主题的课题报告。其中包…

滑动解锁

模仿手机解锁滑动&#xff0c;点击向右滑动完毕即可显示解锁成功。 程序详解 1.点击和松开事件 2. 未解锁之前显示的样式和背景色 3. 解锁之后显示的样式和背景色 4. 滑动完毕后才能解锁 图片演示 原始界面 点击滑动后 解锁成功 下面我们跟随我一起来欣赏一下代码 代码…

Python中利用LSTM模型进行时间序列预测分析

时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题&#xff0c;和回归分析模型的预测不同&#xff0c;时间序列模型是依赖于事件发生的先后顺序的&#xff0c;同样大小的值改变顺序…

【课题总结】OpenCV 抠图项目实战(3)抠图综述

Python 小白的课题报告—OpenCV 抠图项目实战&#xff08;3&#xff09;抠图综述 本系列是 Python 小白的课题作业《基于OpenCV 的图像分割和抠图》。 需要说明的是&#xff0c;本系列并不能算是 OpenCV 的抠图项目教程&#xff0c;只是以此为主题的课题报告。其中包括了一个较…

随机数验证码

由字母和数字组成的验证码&#xff0c;点击验证码图片或者换一张时验证码会随机生成。 程序解读 字母和数字的组合图片和换一张文字的点击样式随机生成验证码判断是否正确正确之后弹框提示 效果演示 原始样式 点击验证码图片或者换一张字样时随机生成新的验证码 输入错误…

【课题总结】OpenCV 抠图项目实战(4)固定阈值抠图

Python 小白的课题报告—OpenCV 抠图项目实战&#xff08;4&#xff09;固定阈值抠图 本系列是 Python 小白的课题作业《基于OpenCV 的图像分割和抠图》。 需要说明的是&#xff0c;本系列并不能算是 OpenCV 的抠图项目教程&#xff0c;只是以此为主题的课题报告。其中包括了一…

数学公式验证码

给出简单的数学算法&#xff08;加减法运算&#xff09;&#xff0c;计算结果为验证码。 效果演示 原始样式 点击换一张或者点击验证码图片的时候随机生成新的数学验证码 输入错误的验证码 输入正确的验证码 代码演示 注意&#xff1a;引入两个架包 <script type&qu…

【课题总结】OpenCV 抠图项目实战(5)自适应阈值抠图

Python 小白的课题报告—OpenCV 抠图项目实战&#xff08;5&#xff09;自适应阈值抠图 本系列是 Python 小白的课题作业《基于OpenCV 的图像分割和抠图》。 需要说明的是&#xff0c;本系列并不能算是 OpenCV 的抠图项目教程&#xff0c;只是以此为主题的课题报告。其中包括了…

滑动验证

拖动滑块进行验证码的验证。 滑动验证有两种&#xff1a; 图片滑动验证长方形的滑动条验证 一 &#xff1a; 图片滑动验证 效果演示 原始样式 没有正确验证的时候滑块会直接回到初始位置让你再次滑动验证 验证成功会给出提示 看代码之前**注意&#xff1a;**代码中要引…

Feedback Prize-Kaggle比赛调研

1.比赛调研 1.1 比赛链接 Feedback Prize - Predicting Effective Arguments | Kaggle 1.2 比赛周期 5.24-8.23 1.3 比赛的快速介绍 本次比赛的目标是将学生写作中的争论元素分类为“有效”、“充分”或“无效”。您将创建一个使用代表美国 6 至 12 年级人口的数据进行训…

【课题总结】OpenCV 抠图项目实战(6)色彩范围抠图

Python 小白的课题报告—OpenCV 抠图项目实战&#xff08;6&#xff09;色彩范围抠图 本系列是 Python 小白的课题作业《基于OpenCV 的图像分割和抠图》。 需要说明的是&#xff0c;本系列并不能算是 OpenCV 的抠图项目教程&#xff0c;只是以此为主题的课题报告。其中包括了一…

点选验证码

根据图片下方文字提示点击图片验证码对应的文字完成验证。 效果演示 原始样式 点击文字错误时 点击验证成功 在欣赏代码之前**注意&#xff1a;**引入两个架包 <script type"text/javascript" src"js/jquery.min.js"></script> <scri…

【课题总结】OpenCV 抠图项目实战(7)边缘检测

Python 小白的课题报告—OpenCV 抠图项目实战&#xff08;7&#xff09; 本系列是 Python 小白的课题作业《基于OpenCV 的图像分割和抠图》。 需要说明的是&#xff0c;本系列并不能算是 OpenCV 的抠图项目教程&#xff0c;只是以此为主题的课题报告。其中包括了一个较为完整的…

一文带你了解美国运通比赛

1.比赛调研 1.1 比赛链接 American Express - Default Prediction | Kaggle 1.2 比赛周期 8.24截止 1.3 比赛的快速介绍 无论是在餐厅外出还是购买音乐会门票&#xff0c;现代生活都依靠信用卡的便利进行日常购物。它使我们免于携带大量现金&#xff0c;还可以提前全额购…

【python】Ubuntu下安装spyder及matplotlib中文显示

一、查看Ubuntu版本 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy尝试用cat /etc/debian_version命令&#xff0c;竟然可以显示出来Debian的版本。 $ cat /etc/debian_version …