小破站下载,事业单位备案网站,全球软件公司排行榜,软件网站的服务器一、PSI作用
稳定性是指模型性能的稳定程度。
上线前需要进行模型的稳定性评估#xff0c;是否达到上线标准。
上线后需要进行模型的稳定性的观测#xff0c;判断模型是否需要迭代。
稳定度指标(population stability index ,PSI)。通过PSI指标#xff0c;我们可以获得不…一、PSI作用
稳定性是指模型性能的稳定程度。
上线前需要进行模型的稳定性评估是否达到上线标准。
上线后需要进行模型的稳定性的观测判断模型是否需要迭代。
稳定度指标(population stability index ,PSI)。通过PSI指标我们可以获得不同样本或者不同时间下同一样本在分数段上的分布的稳定性。
PSI的计算公式为:SUM(实际占比-预期占比)*ln(实际占比/预期占比)。
PSI至少有两组分布结果一组是预期分布结果一组是实际分布结果。我们期望的是分布情况不要发生很大的变化。
在一个信用评估的业务中我们将用户的信用等级分为0-100分数越高信用越好我们让分数60以上的人可以进行贷款60以下的不能进行贷款业务。
我们将上线前的OOT测试结果的分布情况作为预期将上线后最近抽取的样本结果作为实际分布下图是预期分布和实际分布在不同分数段的占比情况。 我们可以看出分布占比情况发生了巨大的变化这对于业务的使用无疑是致命的 我们可能会使得不能贷款的人员办理了业务他们有逾期还款的风险银行会损失很多金钱。
二、PSI的计算
PSI的计算公式为:SUM(实际占比-预期占比)*ln(实际占比/预期占比)。
PSI的计算主要分为三步
①分箱等频分箱或等距分箱
②计算实际分布
③计算PSI数值
下面将具体说明这三步
1.分箱
分箱分为等频分箱和等距分箱。
等频分箱就是令每一个分箱中的样本数量相同。
等距分箱是指每两个区间之间的距离一样多。
数据分箱2——等频、等距分箱_等频分箱法_呆萌的代Ma的博客-CSDN博客
因为我们信用评分模型的稳定性需要看人数分布的波动情况我们上面案例使用的是等距分箱。
2.计算实际分布
我们已经设置好预期样本所以只需要计算实际分布。上述案例中我们通过获得近期的用户数据传入模型得到实际的测试结果。然后将测试的结果等距分箱。
3.计算PSI
PSI的计算公式为:SUM(实际占比-预期占比)*ln(实际占比/预期占比)。
这里有一个例子我们把开发样本占比看成实际占比把现行样本占比看作预期样本具体的计算就是下面这个图。 三、PSI范围标准 四、Python计算PSI
import pandas as pd
import numpy as npdef calculate_psi(expected, actual, bins10):# 离散化数据expected_discrete pd.cut(expected, binsbins, labelsFalse)actual_discrete pd.cut(actual, binsbins, labelsFalse)# 计算每个分箱中的样本数expected_counts pd.value_counts(expected_discrete)actual_counts pd.value_counts(actual_discrete)# 计算每个分箱中的占比expected_percentages expected_counts / len(expected)actual_percentages actual_counts / len(actual)# 计算 PSIpsi np.sum((expected_percentages - actual_percentages) * np.log(expected_percentages / actual_percentages))return psi# 示例数据
train_data np.random.normal(loc0, scale1, size1000)
test_data np.random.normal(loc0.2, scale1, size1000)# 计算 PSI
psi_value calculate_psi(train_data, test_data)
print(PSI:, psi_value)在这个示例中train_data 和 test_data 是两个数据集calculate_psi 函数用于计算 PSI。该函数首先将数据进行离散化然后计算每个分箱的样本占比最后计算 PSI。
请注意这只是一个简单的示例实际应用中可能需要根据数据的特点进行适当的调整。
将数据集导入到 Python 代码中通常使用 Pandas 库Pandas 提供了灵活且高效的数据结构特别适用于处理和分析数据。以下是一个简单的示例演示如何将数据集导入到 Python 代码中
import pandas as pd# 从CSV文件导入数据集
file_path path/to/your/dataset.csv
dataset pd.read_csv(file_path)# 打印数据集的前几行
print(dataset.head())上述代码假设你的数据集以 CSV 格式存储。如果数据集是以其他格式例如 Excel、JSON、SQLite 等存储Pandas 提供了相应的读取函数可以根据数据集的格式进行选择。
如果你没有一个实际的数据集你可以创建一个示例数据集。以下是一个使用 Pandas 创建示例数据集的例子
import pandas as pd
import numpy as np# 创建一个示例数据集
data {Name: [Alice, Bob, Charlie, David],Age: [25, 30, 35, 40],Salary: [50000, 60000, 75000, 90000]}dataset pd.DataFrame(data)# 打印数据集
print(dataset)五、备注
1.PSI不仅在上线前需要关注还需要在上线后进行监测因为有些模型可能会随着时间的推移稳定性变差。
2.影响PSI的因素很多常见的有数据源变化、用户群体变化等等后期都需要考虑。
参考文献刘海丰——《成为AI产品经理》 自用请勿传播
【评分卡入门教程12】模型评估2-PSI值_哔哩哔哩_bilibili