实战案例|ROC曲线与KS曲线评估模型~

简介: 大家好,我是志斌~我们搭建完机器学习模型后,还需要对模型的好坏进行评估,这里我们以实战案例|金融行业客户流失预警模型~,来给大家分享两种模型评估方法:ROC曲线与KS曲线。

01ROC曲线


ROC曲线是由不同阈值下的模型假警报率(FPR)与命中率(TPR)所组成的,如下图所示,其中FPR是横坐标,TPR是纵坐标。


68.png


命中率(TPR)计算公式为:

TPR=TP/(TP+FN)

假警报率(FPR)计算公式为:

FPR=FP/(FP+TN)

其中:

TP:正确肯定的数量

FN:漏报

FP:误报

TN:正确否定的数量


一个好的模型应该让TPR尽可能的高,而FPR尽可能低。从上图,我们可以看到,FPR与TPR之间是正相关,所以ROC曲线越靠近左上角,越陡峭,则这个模型就更完善。


当然,如果用曲线来进行描述,可能有些抽象,我们可以用AUC来判断模型的好坏。AUC指的是ROC曲线下方的面积,该值取值范围一般为0.5~1,越靠近1,则模型越好。


现实数据中,通常存在许多扰动因子,所以模型的AUC值一般达到0.75就可以接受,如果能达到0.85以上,那这个模型就非常好了。


我们来看看如何用Python绘制ROC曲线,首先查看不同阈值下的假警报率和命中率。


69.png

代码如下:


from sklearn.metrics import roc_curve
fpr,tpr,thres = roc_curve(Y_test,Y_pred_proba[:,1])
data = pd.DataFrame()
data['阈值'] = list(thres)
data['假警报率'] = list(fpr)
data['命中率'] = list(tpr)
data.head(10)


接着就是绘制该模型的ROC曲线了。


70.png


代码如下:


import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(fpr,tpr)
plt.title('ROC曲线')
plt.xlabel('FPR')
plt.ylabel('TPR')
plt.show()


AUC值为0.798,看来这个模型还是不错的,AUC值计算代码如下:


from sklearn.metrics import roc_auc_score
score = roc_auc_score(Y_test,Y_pred_proba[:,1])


02KS曲线


KS曲线本质上与ROC曲线是相同的,它关注的也是假警报率(FPR)与命中率(TPR),但是它的横坐标不再是假警报率(FPR),而是阈值,纵坐标为命中率与假警报率的差值。如下图:

71.png


跟ROC曲线一样,KS曲线也有一个量化指标用来衡量模型的预测结果—KS值,其计算公式为:

KS = max(TPR-FPR)

即KS值就是KS曲线的峰值。当KS值小于0.2时,我们认为模型的区分能力较差;

在0.2-0.3之间时,模型具有一定的区分能力;

在0.3-0.5之间时,模型具有较强的区分能力;

当然KS值也不是越大越好,当KS值大于0.75时,往往代表模型有问题。


我们来看看如何用Python绘制KS曲线,首先查看不同阈值下的假警报率和命中率。


72.png

代码如下:


from sklearn.metrics import roc_curve
fpr,tpr,thres = roc_curve(Y_test,Y_pred_proba[:,1])
data = pd.DataFrame()
data['阈值'] = list(thres)
data['假警报率'] = list(fpr)
data['命中率'] = list(tpr)
data.head(10)


接着就是绘制该模型的KS曲线了。


73.png


代码如下:


plt.plot(thres[1:],tpr[1:])
plt.plot(thres[1:],fpr[1:])
plt.plot(thres[1:],tpr[1:]-fpr[1:])
plt.title('KS曲线')
plt.xlabel('阈值')
plt.legend(['tpr','fpr','tpr-fpr'])
plt.gca().invert_xaxis()
plt.show()


KS值为0.493,看来这个模型有较强的区分能力,KS值计算代码如下:


max(tpr-fpr)


此时阈值为0.284,代码为:


data['TPR-FPR']=data['命中率'] - data['假警报率']
data[data['TPR-FPR']==max(data['TPR-FPR'])]


03小结


1. 本文详细介绍了ROC曲线和KS曲线的原理和代码实现方法,有兴趣的读者可以自己实现一下。

2. 对搭建好的模型进行评估是十分重要的,没有评估过的模型投入使用是不安全的。

3. 通过对模型的评估可以不断优化模型。

4. 代码和数据集可以加志斌微信领取~

相关文章
|
C++ Python
VS Code按住ctrl不能跳转到定义/函数(Python)
VS Code按住ctrl不能跳转到定义/函数(Python)
5618 0
VS Code按住ctrl不能跳转到定义/函数(Python)
|
3月前
|
人工智能 自然语言处理 API
阿里云百炼Qwen3.7-Max模型功能、免费Tokens、订阅计费及配置接入指南
Qwen3.7-Max是阿里云百炼推出的旗舰级大模型,具备超强推理、编程、智能体原生支持与多模态理解能力,专为高要求AI场景设计。新用户可免费领取100万Tokens,支持按量计费、资源包订阅及专属部署,接入便捷,合规安全。在阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 免费领取千万Tokens
1492 4
|
11月前
|
人工智能 JSON 测试技术
告别重复“点点点”!基于Dify工作流,打造能思考、会决策的自主测试智能体
在敏捷与DevOps时代,传统测试难以跟上节奏。本文基于Dify.ai工作流,构建具备感知、决策与执行能力的自主测试智能体,突破脚本脆弱、路径僵化等瓶颈,实现AI驱动的智能化测试闭环,让测试从重复劳动升级为持续守护质量的智能探索。
|
机器学习/深度学习 人工智能 算法
算法金 | 一文彻底理解机器学习 ROC-AUC 指标
```markdown # ROC曲线与AUC详解:评估分类模型利器 本文深入浅出解释ROC曲线和AUC,通过实例和代码帮助理解其在模型评估中的重要性,旨在提升对分类模型性能的理解和应用。 ```
3308 13
算法金 | 一文彻底理解机器学习 ROC-AUC 指标
|
存储 分布式计算 MaxCompute
使用PAI-FeatureStore管理风控应用中的特征
PAI-FeatureStore 是阿里云提供的特征管理平台,适用于风控应用中的离线和实时特征管理。通过MaxCompute定义和设计特征表,利用PAI-FeatureStore SDK进行数据摄取与预处理,并通过定时任务批量计算离线特征,同步至在线存储系统如FeatureDB或Hologres。对于实时特征,借助Flink等流处理引擎即时分析并写入在线存储,确保特征时效性。模型推理方面,支持EasyRec Processor和PAI-EAS推理服务,实现高效且灵活的风险控制特征管理,促进系统迭代优化。
628 6
|
移动开发 关系型数据库 MySQL
MySQL中的ROW_NUMBER窗口函数简单了解下
ROW_NUMBER是 MySQL8引入的窗口函数之一,它为查询结果集中的每一行分配一个唯一的顺序号(行号)。ROW_NUMBER在分页、去重、分组内排序等场景中非常有用。
1501 4
|
机器学习/深度学习 Serverless 定位技术
深入理解多重共线性:基本原理、影响、检验与修正策略
本文将深入探讨多重共线性的本质,阐述其重要性,并提供有效处理多重共线性的方法,同时避免数据科学家常犯的陷阱。
1727 3
|
SQL 存储 关系型数据库
如何查看数据库中的表及其在SQL中的实现
引言:在数据库管理和数据分析的过程中,我们经常需要查看数据库中的表以获取相关信息。表是数据库中存储数据的主要结构,通过查看这些表,我们可以了解数据库的结构和内容。本文将详细介绍如何使用SQL查询来查看数据库中的表,包括各种相关操作和命令的使用。一、了解数据库和表的基本概念在讨论如何查看数据库中的表之
1478 2

热门文章

最新文章