样本稳定指数(PSI)是一种统计指标,用于评估两个样本分布之间的差异程度,通常用于监控模型在不同时间或不同环境下的表现稳定性。通过计算两个样本的分布差异,PSI能够帮助识别潜在的数据偏移或漂移,从而为模型维护和更新提供依据。
算法说明
样本稳定指数(PSI)通常用于衡量样本的稳定程度。例如样本在两个月份之间的变化是否稳定,如果变量的PSI值小于0.1,则表示变化不太显著。如果PSI值在0.1到0.25之间,则表示有比较显著的变化。如果PSI值大于0.25,则表示变量变化比较剧烈,需要特殊关注。
通过画图的方法可以衡量样本在不同时刻的稳定性,即将待比较的变量离散化成N个分箱,然后计算样本分别在各个分箱中的数量及比例,并以柱状图的形式呈现出来,如下图所示。
该方法可以直观地查看某个变量在两批样本上是否有剧烈的变化,但是无法量化,从而无法实现对样本稳定性的自动监控。因此PSI就显得尤为重要,PSI的计算公式如下。
配置组件
方式一:可视化方式
在Designer工作流页面添加样本稳定指数(PSI)组件,并在界面右侧配置相关参数:
|
参数类型 |
参数 |
描述 |
|
字段设置 |
要计算PSI指标的特征 |
需要进行PSI指标计算的特征列。 |
|
执行调优 |
核心数 |
使用的CPU Core数量,默认系统自动分配。 |
|
内存数 |
每个CPU Core使用的内存大小,默认系统自动分配。 |
方式二:PAI命令方式
使用PAI命令配置样本稳定指数(PSI)组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
PAI -name psi
-project algo_public
-DinputBaseTableName=psi_base_table
-DinputTestTableName=psi_test_table
-DoutputTableName=psi_bin_table
-DinputBinTableName=pai_index_table
-DfeatureColNames=fea1,fea2,fea3
-Dlifecycle=7
|
参数 |
是否必选 |
默认值 |
描述 |
|
inputBaseTableName |
是 |
无 |
输入基础表表名,计算测试表在基础表的基础上产生的偏移量。 |
|
inputBaseTablePartitions |
否 |
全表 |
输入基础表分区。 |
|
inputTestTableName |
是 |
无 |
输入测试表的名称,计算测试表在基础表的基础上产生的偏移量。 |
|
inputTestTablePartitions |
否 |
全表 |
输入测试表分区。 |
|
inputBinTableName |
是 |
无 |
输入分箱结果表的名称。 |
|
featureColNames |
否 |
全表 |
需要计算PSI指标的特征列。 |
|
outputTableName |
是 |
无 |
输出的指标表。 |
|
lifecycle |
否 |
无 |
输出表的生命周期。 |
|
coreNum |
否 |
系统自动分配 |
使用的CPU Core数量。 |
|
memSizePerCore |
否 |
系统自动分配 |
每个CPU Core使用的内存大小,单位为MB。 |
使用示例
使用PSI之前需要对特征数据进行分箱,因此需要一个分箱组件。如下图使用的示例,PSI组件分别连接待比较的两个样本数据集,再连接一个分箱组件。只需要配置要计算PSI指标的特征,即可进行PSI计算。

PSI计算的结果如下图所示:PSI 计算完成后,在模型报告页面可查看结果。报告以可展开的分层表格展示各特征的 PSI 值及分箱详情,表格列依次为 Feature、Bin、Test %、Base %、Test - Base、ln(Test/Base)、PSI。例如特征 age 的 PSI 为 0.0475(包含 7 个分箱区间),menopause 的 PSI 为 0.0588(包含 6 个分箱区间),tumor_size 的 PSI 为 0.0409。展开各特征行可查看每个分箱区间对 PSI 的贡献值。