小白如何写Python算法-计算模型稳定性评估指标PSI(上)

简介: 小白如何写Python算法-计算模型稳定性评估指标PSI(上)

前言


最近在研究如何存储和查询十亿数据的事情
突然插了一档子事
公司让我临时救个🔥
python算法需求比较多 人手紧缺
让我来弄个算法需求
计算PSI
我一听懵逼了 啥是PSI
临危受命 不行也得上啊


PSI知识储备


简介

PSI反映了验证样本在各分数段的分布与建模样本分布的稳定性
在建模中,我们常用来筛选特征变量、评估模型稳定性
稳定性是有参照的
因此需要有两个分布——实际分布(actual)和预期分布(expected)
在建模时通常以训练样本(In the Sample, INS)作为预期分布
而验证样本通常作为实际分布

image.png

大白话解释

训练数据中的标签列即y列 表示实际数据
训练数据用于模型训练 得到一个模型
用该模型进行数据预测 预测出来的y列即预期数据
将实际数据和预期数据进行同样的分段 
每一段内分别计算数据分布 然后比较
用来反映模型的稳定性

必要性

风控 稳定性压倒一切
一套风控模型 通常一年以上 才会被替换下线
如果模型不稳定 意味着模型不可控
对于业务本身而言就是一种不确定性风险
直接影响决策的合理性 
直观理解上的系统稳定 通常是指某项指标波动小(低方差)
指标曲线几乎是一条水平的直线
此时就会觉得系统运行正常稳定 很有安全感

变异系数cv

变异系数 cv 来衡量这种数据波动水平
变异系数越小,代表波动越小,稳定性越好
变异系数 C·V =( 标准偏差 SD / 平均值Mean )× 100%

只用变异系统来表示稳定性是不够的

因为实际中由于受到客群变化(互金市场用户群体变化快)
数据源采集变化(比如爬虫接口被风控了)等等因素影响
实际样本分布将会发生偏移
就会导致模型不稳定
所以才需要PSI

PSI公式

image.png


计算步骤


步骤一

将变量预期分布(excepted)进行分箱(binning)离散化
统计各个分箱里的样本占比

分箱方式

分箱可以是等频、等距或其他方式
分箱方式不同,将导致计算结果略微有差异

变量类型

  • 连续型变量
对于连续型变量(特征变量、模型分数等)
分箱数需要设置合理,一般设为10或20
  • 离散型变量
如果分箱太多可以提前考虑合并小分箱
分箱数太多,可能会导致每个分箱内的样本量太少而失去统计意义
分箱数太少,又会导致计算结果精度降低


步骤二

按相同分箱区间
对实际分布(actual)统计各分箱内的样本占比


步骤三

算各分箱内的A - E和Ln(A / E)
计算index = (实际占比 - 预期占比)* ln(实际占比 / 预期占比)


步骤四

将各分箱的index进行求和,即得到最终的PSI


image.png


业务含义

PSI数值越小,两个分布之间的差异就越小,代表越稳定


image.png


PSI近似概念相对熵


相对熵/KL散度/信息散度
是两个概率分布间差异的非对称性度量

物理含义

1、当两个随机分布相同时,它们的相对熵为零
当两个随机分布的差别增大时,它们的相对熵也会增大
2、相对熵是一个从信息论角度量化距离的指标 与数学概念上的距离有所差异
数学上的距离需要满足:非负性、对称性、同一性、传递性等
而相对熵不满足对称性

计算公式

在信息理论中,相对熵等价于两个概率分布的信息熵(Shannon entropy)的差值


image.png


P(x)表示数据的真实分布,而Q(x)表示数据的观察分布

简单理解

概率分布携带着信息,可以用信息熵来衡量
若用观察分布Q(x)来描述真实分布P(x),还需要多少额外的信息量

image.png

相关文章
|
8月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
9月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
418 26
|
9月前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
9月前
|
机器学习/深度学习 编解码 数据可视化
【能量算子】评估 EEG 中的瞬时能量:非负、频率加权能量算子(Python&Matlab代码实现)
【能量算子】评估 EEG 中的瞬时能量:非负、频率加权能量算子(Python&Matlab代码实现)
147 6
|
9月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
683 4
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
1087 4
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
389 0
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
585 0
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
532 3
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【7月更文挑战第22天】在大数据领域,Python算法效率至关重要。本文深入解析时间与空间复杂度,用大O表示法衡量执行时间和存储需求。通过冒泡排序(O(n^2)时间,O(1)空间)与快速排序(平均O(n log n)时间,O(log n)空间)实例,展示Python代码实现与复杂度分析。策略包括算法适配、分治法应用及空间换取时间优化。掌握这些,可提升大数据处理能力,持续学习实践是关键。
435 1

热门文章

最新文章

推荐镜像

更多