1、PSI概念及计算公式
PSI(Population Stability Index)是一种用于衡量两个分布之间差异的指标,常用于评估模型在不同时间段或不同群体上的稳定性。
PSI的计算公式如下:
PSI = ∑((P_i - Q_i) * ln(P_i / Q_i))
其中,P_i和Q_i分别表示两个分布中第i个区间的占比。
PSI值的计算步骤如下:
-
将数据集分为两个时间段或两个群体,分别计算每个时间段或群体中每个区间的占比。
-
对于每个区间,计算P_i和Q_i的值,分别表示两个时间段或群体中该区间的占比。
-
计算(P_i - Q_i) * ln(P_i / Q_i)的值,并将所有区间的结果求和,得到PSI值。
PSI值的范围通常在0到正无穷之间,值越大表示两个分布之间的差异越大,稳定性越低。
2、定义PSI函数
import pandas as pd
import numpy as np
def filter_high_psi_features(train_data, test_data,psi_threshold):
# 计算每个特征的PSI值
psi, psi_values = calculate_psi(train_data, test_data)
# 找到PSI值超过阈值的特征
high_psi_features = psi_values[psi> psi_threshold].index
# 过滤掉PSI值过大的特征
filtered_train_data = train_data.drop(columns=high_psi_features)
return filtered_train_data
def calculate_psi(train_data, test_data, num_bins=10):
"""
计算PSI值