特征选择与类不平衡处理
特征选择与类不平衡处理技术
一、特征选择方法
1. 过滤法(Filter Methods)
原理:
基于统计学方法或特征本身的分布特性独立于模型进行特征筛选,通过计算特征与目标变量的相关性或特征的发散性进行排序选择。
典型方法:
-
卡方检验:
原理:评估特征与标签的独立性,卡方值越大表示特征与标签相关性越强。
步骤:- 计算每个特征的卡方统计量 χ 2 = Σ ( 实际频数 − 理论频数 ) 2 理论频数 χ² = Σ\frac{(实际频数-理论频数)^2}{理论频数} χ2=Σ理论频数(实际频数−理论频数)2
- 按卡方值从高到低排序,选择Top-K特征。
-
方差过滤:
原理:移除方差接近0的特征(认为其区分度低)。
步骤:- 计算各特征的方差
- 设定阈值,删除方差低于阈值的特征(如
sklearn.VarianceThreshold
)。
2. 包裹法(Wrapper Methods)
原理:
将特征选择视为搜索问题,通过模型的性能反馈迭代选择最优特征子集,与特定学习器耦合。
典型方法:
-
递归特征消除(RFE):
原理:反复训练模型并剔除权重最低的特征,直至达到目标特征数。
步骤:- 训练基模型(如SVM、逻辑回归)
- 根据特征重要性排序
- 移除最不重要特征,重复直至剩余指定特征数。
-
遗传算法:
原理:模拟生物进化过程,通过交叉、变异等操作优化特征子集。
步骤:- 初始化种群(随机特征子集)
- 计算适应度(模型性能)
- 选择、交叉、变异生成新种群
- 迭代至收敛。
3. 嵌入法(Embedded Methods)
原理:
在模型训练过程中自动完成特征选择,通过正则化或特征重要性评估实现。
典型方法:
-
L1正则化(LASSO):
原理:通过L1惩罚项使部分特征的系数归零,实现特征稀疏化。
步骤:- 定义损失函数(如 L = Σ ( y i − y ^ i ) 2 + λ Σ ∣ w j ∣ L = Σ(y_i - ŷ_i)^2 + λΣ|w_j| L=Σ(yi−y^i)2+λΣ∣wj∣)
- 优化求解,保留非零系数对应的特征。
-
树模型特征重要性:
原理:基于特征在树节点分裂中的贡献度(如基尼指数、信息增益)评估重要性。
步骤:- 训练随机森林/XGBoost
- 提取
feature_importances_
属性 - 按重要性阈值筛选特征。
二、类不平衡处理方法
1. 过采样(Oversampling)
SMOTE(Synthetic Minority Oversampling)
原理:在少数类样本的K近邻之间线性插值生成新样本,避免简单复制导致的过拟合。
步骤:
- 对每个少数类样本 x i x_i xi,计算其K近邻(欧氏距离)
- 随机选择近邻 x j x_j xj,生成新样本:
x n e w = x i + r a n d ( 0 , 1 ) × ( x j − x i ) x_{new} = x_i + rand(0,1) × (x_j - x_i) xnew=xi+rand(0,1)×(xj−xi) - 重复直至类别平衡。
改进方法:
- Borderline-SMOTE:仅对边界样本过采样
- ADASYN:根据样本密度自适应调整生成数量。
2. 欠采样(Undersampling)
随机欠采样:
原理:随机删除多数类样本以平衡类别分布。
步骤:
- 计算少数类样本数 N m i n N_{min} Nmin
- 从多数类中随机抽取 N m i n N_{min} Nmin个样本。
聚类欠采样(如K-Means):
原理:对多数类聚类后从每个簇中选取代表性样本。
步骤:
- 将多数类聚类为K个簇(K=少数类样本数)
- 从每个簇中随机抽取1个样本与少数类合并。
3. 调整类别权重
Focal Loss
原理:通过调节因子γ和类别平衡因子α,降低易分类样本的损失权重,聚焦难分类样本。
公式:
F L ( p t ) = − α t ( 1 − p t ) γ log ( p t ) FL(p_t) = -α_t(1-p_t)^γ \log(p_t) FL(pt)=−αt(1−pt)γlog(pt)
- α α α:平衡正负样本权重(如正样本α=0.75,负样本α=0.25)
- γ γ γ:调节难易样本权重(γ=2时效果最佳)。
步骤:
- 在交叉熵损失基础上引入α和γ参数
- 训练时动态调整样本权重。
三、评估方法
1. AUC-ROC曲线
原理:
- 横轴(FPR)= FP/(FP+TN),纵轴(TPR)= TP/(TP+FN)
- AUC值表示模型区分正负类的能力,AUC=1为完美分类,AUC=0.5为随机猜测。
步骤:
- 按预测概率降序排列样本
- 遍历阈值计算TPR/FPR
- 绘制ROC曲线,使用梯形法则计算AUC。
2. PR曲线
原理:
- 横轴(Recall)= TP/(TP+FN),纵轴(Precision)= TP/(TP+FP)
- 适用于类别高度不平衡场景,AUPR越接近1模型越好。
步骤:
- 按预测概率降序排列样本
- 遍历阈值计算Precision/Recall
- 绘制PR曲线,计算AUPR。