PSI用于度量两个分布之间的差异,主要用于检查客群的变化/模型的稳定性。本质上也就是某种交叉熵。
内容以这个帖子中的数据为例,贡献两个小函数
函数1# 将一列转为百分比
import numpy as np
def transform_list2pct(some_list):
arr1 = np.array(some_list)
return arr1 / arr1.sum()
函数2
# 计算两次分布的PSI (<0.1 ok, <0.25 review, else update)
import numpy as np
def kpi_psi_2list(a_list , b_list):
arr_a = np.array(a_list)
arr_b = np.array(b_list)
tem_res = (arr_a-arr_b)*np.log(arr_a/arr_b)
return tem_res.sum()
使用
使用例子的数据计算(本身已经归一化了,函数支持输入原始的频数统计)
kpi_psi_2list([0.7233,0.1133,0.0367,0.0200,0.1067], [0.5514,0.0986,0.0743,0.0600,0.2157]) 0.19587683021838628



