小白如何写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

相关文章
|
15天前
|
Python
Python 游泳秒表记次,计算每次游泳时长
Python 游泳秒表记次,计算每次游泳时长
29 2
|
2天前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
15 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
4天前
|
算法 数据处理 数据安全/隐私保护
|
18天前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
19天前
|
JSON 算法 API
京东以图搜图功能API接口调用算法源码python
京东图搜接口是一款强大工具,通过上传图片即可搜索京东平台上的商品。适合电商平台、比价应用及需商品识别服务的场景。使用前需了解接口功能并注册开发者账号获取Key和Secret;准备好图片的Base64编码和AppKey;生成安全签名后,利用HTTP客户端发送POST请求至接口URL;最后解析JSON响应数据以获取商品信息。
|
18天前
|
算法 Python
python多继承的3C算法是什么?怎么用?
有很多地方都说python多继承的继承顺序,是按照深度遍历的方式,其实python多继承顺序的算法,不是严格意义上的深度遍历,而是基于深度遍历基础上优化出一种叫3C算法
|
3天前
|
人工智能 算法 数据可视化
DBSCAN密度聚类算法(理论+图解+python代码)
DBSCAN密度聚类算法(理论+图解+python代码)
|
7天前
|
存储 API 开发工具
【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
|
13天前
|
机器学习/深度学习 算法 搜索推荐
支付宝商业化广告算法问题之在DNN模型中,特征的重要性如何评估
支付宝商业化广告算法问题之在DNN模型中,特征的重要性如何评估
|
18天前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真

热门文章

最新文章

下一篇
云函数