PSI 和 CSI 指标

一、PSI指标

特征稳定性指标

所谓特征稳定性,就是关注该特征的取值随着时间的推移会不会发生大的波动。

对特征稳定性的关注,一定一定要在建模之前完成,从一开始就避免将那些本身不太稳定的特征选入模型。遗憾的是,很多做模型的同学并没有留意这一点,而是喜欢在特征ready后立刻开始建模,直到模型临近上线,才意识到应该去看看有没有不太稳定的特征,一旦发现有特征稳定性不满足要求,则需要对其进行剔除后重新建模,导致了不必要的重复性劳动。

通常采用PSI(PopulationStability Index,群体稳定性指数)指标评估特征稳定性。计算公式如下:
file

模型稳定性指标

相比特征稳定性,模型稳定性涉及的东西比较多,需要根据模型的具体应用方式选择性进行关注。通常,模型PSI是必须关注的一个指标。

模型PSI
有了前文对特征PSI的介绍,理解模型PSI就非常简单了。

二分类模型的输出一般都会有一个取值为0~1之间的概率值(记作:prediction_prob),模型PSI监控的就是这个值的稳定性。

将模型产出的prediction_prob理解为一个特征,就可以像计算特征PSI一样计算得到模型PSI了,不同的地方在于,特征PSI一般是对很多特征一起做计算(假如准备了200个特征进行建模,那就是对200个特征计算PSI),而模型PSI通常只是对prediction_prob这一个字段做计算。计算方式同前文所述完全一样,PAI组件的使用也没有任何不同,不再赘述。

模型稳定性的其他实践
2.1 消除波动性

对于二分类模型,在实际业务中通常会直接拿着prediction_prob去用。例如,对于某个风险识别场景,根据prediction_prob对用户进行准入或拦截(假如设定阈值为0.6,则prediction_prob小于0.6的用户被拦截,不小于0.6的用户被准入)。

但是会存在一些应用场景对稳定性要求更高。为了消除double型可能带来的波动性,可以将小数映射为整数再使用,我们将这个过程称为Rank。

具体要将0~1的小数值映射到1~10还是1~100亦或是1~1000的整数区间,完全取决于应用场景对这个数值的精细化程度。这样做映射以消除波动性是有道理的,它相当于把一定范围内的波动屏蔽了。例如,某信用风险模型在10月份对用户小C的打分为0.61,在11月份的打分为0.69(假如打分的差异仅仅因为该用户在双11期间疯狂买买买所致,而事实上短暂性的买买买并不应该对用户的信用风险评估造成影响),如果映射为1~10的整数区间后,连续两个月份的打分都是7([0.6, 0.69]整个区间均被映射为7),从而达到屏蔽波动性的目的。

将0~1小数映射到整数区间的做法非常简单:首先对原始小数列求分位数(如果要映射为1~10的得分区间就求十个分位点,如果要映射为1~100的得分区间就求一百个分位点),然后根据各分位点处的取值将原始值分为确定数量的区间(如果要映射为1~10的得分区间就是10个区间,如果要映射为1~100的得分区间就是100个区间),每个区间映射为一个整数值,映射完毕。

2.2 Rank迁移

当把prediction_prob Rank到整数区间后,就有必要对Rank后的结果实施必要的监控了。有两个事情值得去做,其一是对分位点进行按月迁移监控(看分位点有没有随着时间的推移产生波动),其二是对Rank后的整数进行月份间波动监控(看看每连续两个月之间,全量用户得分的波动性)。

计算上文所述指标的目的是为了实施每日监控,一旦出现不符合预期的情况就立刻通知到人。比如:每日定时执行SQL语句来实施监控分析,并将执行结果做成报表以方便查看,等等。

PSI定义

群体稳定性指标PSI(Population Stability Index)是衡量模型的预测值与实际值偏差大小的指标

PSI = sum((实际占比-预期占比)* ln(实际占比/预期占比))

举例:

比如训练一个logistic回归模型,预测时候会有个概率输出p。

测试集上的输出设定为p1吧,将它从小到大排序后10等分,如0-0.1,0.1-0.2,......。

现在用这个模型去对新的样本进行预测,预测结果叫p2,按p1的区间也划分为10等分。

实际占比就是p2上在各区间的用户占比,预期占比就是p1上各区间的用户占比。

意义就是如果模型很稳定,那么p1和p2上各区间的用户应该是相近的,占比不会变动很大,也就是预测出来的概率不会差距很大。

一般认为PSI小于0.1时候模型稳定性很高,0.1-0.25一般,大于0.25模型稳定性差,建议重做。

PS:除了按概率值大小等距十等分外,还可以对概率排序后按数量十等分,两种方法计算得到的psi可能有所区别但数值相差不大。

二、CSI指标

CSI用来衡量样本在特征层面的分布变化,反映了特征对评分卡分数变化的影响。当评分卡主模型分数发生变化时,对每个特征计算csi,可以知道哪些特征分布发生变化从而导致评分卡主模型分数偏移以及哪个特征对模型得分变化的影响最大。因此监控特征的CSI指标可以在评分卡主模型发生偏移时快速定位问题。一般来说,特征层面的监控既包括psi,也包括csi。

三、PSI与CSI之间的区别和联系

群体稳定性指标(PSI)与特征稳定性指标(CSI)非常类似,都是在衡量稳定性。

两者的区别和联系大致可以总结如下:

群体稳定性报告(Population Stability Report)是用模型分数层(score)来评估当前样本与开发样本之间的分布差异。目前业内有可以统一参考来判断稳定性的阈值标准。

特征稳定性报告(Characteristic Stability Report)是从入模特征层(characteristic)来分析当前样本与开发样本之间的分数差异,以及对最终模型分数的影响。目前没有统一参考来判断稳定性的阈值标准。

在实践中,我们一般会先观察PSI,如果PSI显示模型分数不稳定,那么此时再去观察CSI,从特征级分析原因。因此,PSI偏于宏观,CSI偏于微观。


相关文章:
【机器学习】评价指标PSI

为者常成,行者常至