‘壹’ 特征稳定性
part1:特征稳定性
特征稳定性,就磨纳是关注该特征的取值随着瞎运没时间的推移会不会发生大的波动,
对特征稳定性的关注,一定要在建模之前完成,从一开始就避免将那些本身不太稳定的特征选入模型。一旦发现有特征稳定性不满足要求,则需要对其进行剔除后重新建模,避免不必要的重复性劳动。
通常采用PSI(PopulationStability Index,群体稳定性指数)指标评估特征稳定性。
part2:常用方法:
PSI反映了验证样本在各分数段的分布与建模样本分布的稳定性,稳定性是有参照的,因此需要有两个分布—— 实际分布 (actual)和 预期分布 (expected)。其中,在建模时通常以训练样本(In the Sample, INS)作为预期分布,而验证样本通常作为实际分布
<pre>PSI = sum((实际占比-预期占比)* ln(实际占比/预期占比))</pre>
比如训练一个logistic回归模型,预测时候会有个概率输出 p
测试集上的输出设定为p1,将它从小到大排序后10等分,如:
<pre>0.0-0.1
0.1-0.2
0.2-0.3... </pre>
现在用这个模型去对新的样本进行预测,预测结果叫p2,按p1的区间也划分为10等分。
<pre>实际占比 = p2上在各区间的用户占比
预期占比 = p1上各区间的用户占比</pre>
意义就是如果模型更稳定,那么p1和p2上各区间的用户应该是相近的,占比不会变动很大,也就是预测出来的概率不会差距很大。
PS:除了按概率值大小等距十等分外,还可以对概率排序后按数量十等分,两种方法计算得到的psi可能有所区别但数值相差不大
一般认为:
<pre>PSI<0.1 :模型稳定性很高
0.1-0.25:一般,继续监控后续变化
PSI>0.25: 模型稳定性差,建议重做</pre>
step1: 将变量预期分布(excepted)进行分箱(binning)离散化,统计各个分箱里的样本占比 注意: 1. 分箱可以是等频、等距或其他方式,分箱方式不同,将导致计算结果略微有差异; 2. 对于连续型变量(特征变量、模型分数等),分箱数需要设置合理,一般设为10或20;对于离散型变量,如果分箱太多可以提前考虑合并小分箱;分箱数太多,可能会导致每个分箱内的样本量太少而失去统计意义;分箱数太少,又会导致计算结果精度降低
step2: 按相同分箱区间,对实际分布(actual)统计各分箱内的样本占比
step3: 计 算各分箱内的A - E和Ln(A / E),
计算index = (实际占比 - 预期占比)* ln(实际占比 / 预期占比)
step4: 将各分箱的index进行求和,即得到最终的PSI
[图片上传失败...(image-fc79b3-1637314904243)]
相对熵(relative entropy),又被称为Kullback-Leibler散度(Kullback-Leibler divergence)或信息散度(information divergence),是两个概率分布间差异的非对称性度量。
划重点——KL散度不满足对称性。
相对熵可以衡量两个随机分布之间的"距离“。
相对熵和PSI的概念非常相近:当两个随机分布完全一样时,PSI = 0;反之,差异越大,PSI越大。
相对熵的公式:
在信息理论中,相对熵等价于两个概率分布的悄毕信息熵(Shannon entropy)的差值:
[图片上传失败...(image-7a9318-1637314904243)]
其中,P(x)表示数据的真实分布,而Q(x)表示数据的观察分布。上式可以理解为:
[图片上传失败...(image-57d277-1637314904243)]
KL散度具有非对称性
相对熵与PSI之间的关系:
[图片上传失败...(image-76a049-1637314904243)]
将PSI计算公式变形后可以分解为2项:
因此,PSI本质上是实际分布(A)与预期分布(E)的KL散度的一个对称化操作。其双向计算相对熵,并把两部分相对熵相加,从而更为全面地描述两个分布的差异。
在业务上,一般以训练集(INS)的样本分布作为预期分布,进而跨时间窗按月/周来计算PSI,得到Monthly PSI Report,进而剔除不稳定的变量。同理,在模型上线部署后,也将通过PSI曲线报表来观察模型的稳定性。
参考:
(17条消息) PSI群体稳定指数-python实现_u010654299的博客-CSDN博客_psi python
https://zhuanlan.hu.com/p/79682292