返回顶部
首页 > 资讯 > 后端开发 > Python >python风控中KS原理是什么
  • 102
分享到

python风控中KS原理是什么

2023-06-25 16:06:03 102人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要为大家展示了“python风控中KS原理是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python风控中KS原理是什么”这篇文章吧。一、业务背景在金融风控领域,常常使用KS指标

这篇文章主要为大家展示了“python风控中KS原理是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python风控中KS原理是什么”这篇文章吧。

一、业务背景

在金融风控领域,常常使用KS指标来衡量评估模型的区分度(discrimination),这也是风控模型最为追求的指标之一。下面将从区分度概念、KS计算方法、业务指导意义、几何解析、数学思想等角度,对KS进行深入剖析。

二、直观理解区分度的概念

在数据探索中,若想大致判断自变量x对因变量y有没有区分度,常会将样本分为正负来观察变量的分布差异。那么,如何判断自变量是有用的?直观理解,如果两个分布的重叠部分越小,代表正负样本的差异性越大,自变量就能更好的将正负样本区分开来。具体如图1所示。

打个比方,想象这个变量就是一双手,把这个分布往两边拉开。这双手的力量越大,两个概率分布间隔就越远,说明变量区分性就越强。

python风控中KS原理是什么

图1 - 正负样本分布差异对比

import matplotlibimport numpy as npimport matplotlib.pyplot as pltmu = 100  # mean of distributionsigma = 15  # standard deviation of distributionx = mu + sigma * np.random.randn(20000)num_bins = 80fig, ax = plt.subplots()# the histogram of the datan, bins, patches = ax.hist(x, num_bins, density=1)n1, bins1, patches1 = ax.hist(x - 20, num_bins, density=1)# add a 'best fit' liney = ((1 / (np.sqrt(2 * np.pi) * sigma)) * np.exp(-0.5 * (1 / sigma * (bins - mu))**2))y1 = ((1 / (np.sqrt(2 * np.pi) * sigma)) * np.exp(-0.5 * (1 / sigma * (bins - mu))**2))ax.plot(bins, y, '--', label = 'bads')ax.plot(bins1, y, '--', label = 'Goods')ax.set_xlabel('Varible')ax.set_ylabel('Probability density')ax.set_title('Distribution of bads and goods')  fig.tight_layout()plt.grid(True,linestyle = ':', color = 'r', alpha = 0.7)plt.legend()plt.show()

三、KS统计量的定义

KS(Kolmogorov-Smirnov)统计量由两位苏联科学家A.N.Kolmogorov和N.V.Smirnov提出。

在风控中KS通常用于评估模型区分度,区分度越大,说明模型风险排序能力越强。

KS是基于经验累积分布函数(Emporical Cumulative Distribution Function,ecdf)建立的

四、KS计算过程及业务分析

KS常用的计算方法:

step1:对变量进行分箱(binning),可以选择等频、等距或者自定义距离。

step2:计算每个分箱区间的好样本数(goods)与坏样本数(bads)。

step3:计算每个分箱区间内累计好客户占总好客户比值(cum_good_rate)和累计坏客户占总坏客户比值(cum_bad_rate)。

step4:计算每个分箱区间累计坏客户占比与累计好客户占比的绝对值,得到KS曲线,也就是:

step5:在这些绝对值中取最大值,得到此变量的最终KS值。

为了便于理解,以具体的数据展示上述过程:

python风控中KS原理是什么

表1 - KS计算过程表

上标指标计算逻辑:

从上表中可以得到以下信息:

模型分数越高,逾期率越低,因此低分段bad_rate相对于高分段更高,cum_bad_rate曲线增长速率会比cum_good_rate更快。cum_bad_rate曲线在cum_good_rate曲线上方。

每个分箱样本数量基本相同,说明是等频分箱。

如将cutoff限定为0.65,则其cum_bad_rate为82.75%,表示有82.75%的坏客户会被拒绝,但同时cum_good_rate为29.69%,表示同时会有29.69%的好客户会被拒绝。

根据bad_rate的变化趋势,模型的排序性很好。如果是A卡,对排序性的要求会更高,因为需要根据风险等级对用户风险定价。

模型的KS达到53.1%,区分度较强,这是最理想的状态,实际业务应用中需要根据预设条件权衡通过率与坏账率的关系,一般cutoff不会选在理想值处,因此可知,KS是区分度的上限。

对于A卡来说,通常KS很难达到52%,因此,若上表数据为A卡结果,需要进一步确认模型是否发生过拟合。

需要进一步指出的是,KS是在放贷样本上评估的,放贷样本对于全量样本永远是有偏的。对于裸奔风控系统,偏差会很小;反之如果风控系统做的越好,偏差就会越大。因此KS不仅仅只是一个数字,其背后蕴藏的很多原因,需要结合业务进行具体分析。

当KS不佳时,为了达到预期目的,可进行以下校验:

检验入模变量是否已被策略使用,使用重复变量会导致模型无法命中本应被命中的坏客户,导致模型效果下降。

检验训练样本与验证样本之间的客群差异是否明显,其中包括时间分布,某些特征分布、特殊特征命中情况等。

开发对目标场景更具针对性的新特征,比如税务场景,在进行特征衍生时,更加关注税务指标;如识别长期风险,就使用强金融属性变量,对于欺诈风险,就使用一些短期的负面变量。

分群建模,但须考虑稳定性与差异性,防止过拟合。

坏客户分析,试图通过个性推共性。

对表1数据进行可视化,便得到KS曲线,主要使用到最后三列数据,即cum_good_rate、cum_bad_rate和KS,具体代码和图像如下:

import matplotlib as mplimport matplotlib.pyplot as pltimport numpy as npcum_good_rate = np.array([0.00,0.05,0.12,0.20,0.30,0.41,0.53,0.71,0.86,1.00])cum_bad_rate = np.array([0.26,0.45,0.59,0.72,0.83,0.90,0.97,0.99,1.00,1.00])x = np.linspace(0, 1, 10)plt.plot(x, cum_good_rate, label = 'cum_good_rate')plt.plot(x, cum_bad_rate, label = 'cum_bad_rate')plt.plot(x, cum_bad_rate - cum_good_rate, label = 'KS')plt.title('KS Curve', fontsize = 16)plt.grid(True,linestyle = ':', color = 'r', alpha = 0.7)plt.axhline(y = 0.53, c = 'r', ls = '--', lw = 3)     #绘制平行于x轴的水平参考线plt.axvline(x = 0.43, c = 'r', ls = '--', lw = 3)     #绘制平行于y轴的垂直参考线plt.legend()plt.show()

python风控中KS原理是什么

图2 - KS曲线

至此,我们已经了解了KS的计算的基本流程、评价标准、业务指导意义和优化思路,接下来有几个问题:

为什么风控中常用KS来评价模型效果,而不是使用准确率、召回率等?

最大KS只是一个宏观的结果,那么在不同的cutoff下取到max,模型效果有何差异?

一般情况下,KS越大越好,但为什么通常认为高于75%的KS就不可靠了?

五、风控中选择KS的原因

风控建模过程中,常把样本标签分为GBIX四类,其中:G=Good(好人,标记为0),B=Bad(坏人,标记为1),I=Indeterminate(不定,未进入表现期),X=Exclusion(排斥,异常样本)。

需要指出的是,Good与Bad之间的定义往往是模糊的、连续的,依赖于实际业务需求。这里举两个例子帮助理解:

例1:模糊性

对于12期信贷产品,如果设定表现期为前6期,S6D15(前6期中,任意一期逾期超15天)就是1,否则为0;但后来如果把表现期调整为3期,那么对于**“前3期都正常还款,但4~6期才发生逾期并超过15天”**的这部分样本,原本所定义的label就从1变成了0.因此业务需求不同,导致标签的定义不是绝对的。所以说,好坏样本定义一定要根据实际业务需求来,要在对业务进行充分理解与分析的基础上进行确定,而不是拍脑袋而为之。

例2:连续性

定义首期逾期超30天为1,否则为0。但是,逾期29天与逾期31天的用户之间其实并没有不可跨越的硬间隔,逾期29天的用户可能会进一步恶化为逾期31天。

由于逾期严重程度定义本身就带有一定的主观色彩,我们很难说逾期天数差几天有多少本质差异,所以哪怕我们为了转化为分类问题做了硬性的1和0的界限定义,但业务上理解还是一个连续问题。

因此,在风控中,y的定义并不是非黑即白(离散型),而用概率分布(连续型)衡量或许更合理。

那么,为什么选择KS指标呢?KS倾向于从概率角度衡量正负样本之间的差异,正是因为正负样本之间的模糊性与连续性,所以KS也是一条连续曲线。但最终为什么取一个最大值,主要原因是提取KS曲线中的的一个显著特征,从而便于相互比较。

以上是“python风控中KS原理是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网Python频道!

--结束END--

本文标题: python风控中KS原理是什么

本文链接: https://lsjlt.com/news/306143.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python风控中KS原理是什么
    这篇文章主要为大家展示了“python风控中KS原理是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python风控中KS原理是什么”这篇文章吧。一、业务背景在金融风控领域,常常使用KS指标...
    99+
    2023-06-25
  • python算法深入理解风控中的KS原理
    目录一、业务背景二、直观理解区分度的概念三、KS统计量的定义四、KS计算过程及业务分析KS常用的计算方法:上标指标计算逻辑:五、风控中选择KS的原因例1:模糊性例2:连续性一、业务背...
    99+
    2024-04-02
  • python中 pyg2plot的原理是什么
    本文章向大家介绍python中 pyg2plot的原理是什么,主要包括python中 pyg2plot的原理是什么的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。python是什么意思Pyth...
    99+
    2023-06-06
  • python中self的原理是什么
    本篇文章为大家展示了python中self的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(...
    99+
    2023-06-14
  • python中pyg2plot的原理是什么
    python中pyg2plot的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,...
    99+
    2023-06-14
  • python中gevent的原理是什么
    python中gevent的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括in...
    99+
    2023-06-14
  • python中GIL的原理是什么
    本篇文章给大家分享的是有关python中GIL的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、数...
    99+
    2023-06-07
  • Sentinel 流控的原理是什么
    Sentinel 流控的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。@ResoureSetinel 工作原理配置流...
    99+
    2024-04-02
  • mysql中并发控制的原理是什么
    mysql中并发控制的原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、mysql的逻辑框架mysql逻辑框架图如下:最上层是处...
    99+
    2024-04-02
  • SVM在python中的原理是什么
    这篇文章主要介绍了SVM在python中的原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python有哪些常用库python常用的库:1.requesuts;2.s...
    99+
    2023-06-14
  • python中xpath解析原理是什么
    这篇文章给大家分享的是有关python中xpath解析原理是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的...
    99+
    2023-06-29
  • Python中Socket通信的原理是什么
    本篇文章给大家分享的是有关Python中Socket通信的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python是什么意思Python是一种跨平台的、具有解释性、...
    99+
    2023-06-14
  • python中抽象类的原理是什么
    本篇文章为大家展示了python中抽象类的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代...
    99+
    2023-06-14
  • python中生成器的原理是什么
    这篇文章将为大家详细讲解有关python中生成器的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,...
    99+
    2023-06-14
  • python中WSGI的工作原理是什么
    这篇文章将为大家详细讲解有关python中WSGI的工作原理是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所...
    99+
    2023-06-14
  • Python中hook的实现原理是什么
    在Python中,hook(钩子)是一种机制,允许开发者在特定事件(例如函数调用、异常发生等)发生时插入自定义的代码进行处理。实现原...
    99+
    2023-09-26
    Python
  • Python中Flask运行的原理是什么
    这篇文章主要介绍“Python中Flask运行的原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中Flask运行的原理是什么”文章能帮助大家解决问题。  所有的 Python W...
    99+
    2023-06-29
  • Python中Dict实现的原理是什么
    1.无序Dict的实现Dict能够快速查找key,这归功于它采用的空间换时间策略和哈希表实现。的在读取和写入Key时, 都会对Key进行哈希计算(所以要求Key都是不可变类型,如果是可变类型,就无法计算出他的哈希值了), 然后根据计算的值,...
    99+
    2023-05-19
    Python dict
  • Python中的生成器原理是什么
    这篇文章主要介绍“Python中的生成器原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的生成器原理是什么”文章能帮助大家解决问题。什么是python生成器生成器是一种特殊的迭...
    99+
    2023-07-06
  • python WSGI Application原理是什么
    本篇文章所依赖的python环境为:什么是WSGIWSGI也称之为web服务器通用网关接口,全称是web server gateway interface。它定义了在python中web服务器与web应用程序之间应该如何通信并且处理http...
    99+
    2023-05-19
    Python application
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作