第4章 单变量特征选择:四种核心方法实战
单变量特征选择,说白了就是逐个评估每个特征跟目标变量之间的关系强度。在信用评分模型里,我们经常面对几十上百个原始特征,不可能一股脑全扔进模型。我记得刚入行时,有个同事把全部特征都塞进逻辑回归,结果模型过拟合得一塌糊涂,上线后坏客户识别率反而下降了。从那以后,我就养成了一个习惯:先用单变量方法快速筛一遍。
这一章我带你过四种最常用的单变量方法:方差选择法、相关系数法、信息增益、F值检验。每种方法我都会结合信用评分场景讲清楚原理、代码实现和避坑经验。
4.1 方差选择法
方差选择法的逻辑非常简单:如果一个特征的取值几乎不变,那它对区分好坏客户就没什么贡献。举个例子,在某个信贷数据集中,所有客户的"婚姻状况"都是"已婚",那这个特征方差几乎为0,留着只会增加噪声。
我在项目中遇到过这样的情况:一个包含"是否有信用卡"的二元特征,95%的客户都是"有",方差只有0.0475,实际建模时它对模型贡献极小,最后被我直接剔除了。
实际操作时,我会先对所有特征做归一化,再计算方差,然后设定一个阈值。阈值怎么定?我个人习惯先看方差分布的直方图,选一个明显的拐点。
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
# 假设 df 是信用评分数据集,target 是目标列
features = df.drop('target', axis=1)
# 先归一化,让方差可比
scaler = MinMaxScaler()
scaled = pd.DataFrame(scaler.fit_transform(features), columns=features.columns)
# 计算方差
variances = scaled.var()
# 筛选方差大于0.02的特征
selected = variances[variances > 0.02].index.tolist()
print(f"保留特征数: {len(selected)}")
注意