当前位置: 首页 > news >正文

特征选择与类不平衡处理

特征选择与类不平衡处理技术

一、特征选择方法

1. 过滤法(Filter Methods)

原理
基于统计学方法或特征本身的分布特性独立于模型进行特征筛选,通过计算特征与目标变量的相关性或特征的发散性进行排序选择。

典型方法

  • 卡方检验
    原理:评估特征与标签的独立性,卡方值越大表示特征与标签相关性越强。
    步骤:

    1. 计算每个特征的卡方统计量 χ 2 = Σ ( 实际频数 − 理论频数 ) 2 理论频数 χ² = Σ\frac{(实际频数-理论频数)^2}{理论频数} χ2=Σ理论频数(实际频数理论频数)2
    2. 按卡方值从高到低排序,选择Top-K特征。
  • 方差过滤
    原理:移除方差接近0的特征(认为其区分度低)。
    步骤:

    1. 计算各特征的方差
    2. 设定阈值,删除方差低于阈值的特征(如sklearn.VarianceThreshold)。

2. 包裹法(Wrapper Methods)

原理
将特征选择视为搜索问题,通过模型的性能反馈迭代选择最优特征子集,与特定学习器耦合。

典型方法

  • 递归特征消除(RFE)
    原理:反复训练模型并剔除权重最低的特征,直至达到目标特征数。
    步骤:

    1. 训练基模型(如SVM、逻辑回归)
    2. 根据特征重要性排序
    3. 移除最不重要特征,重复直至剩余指定特征数。
  • 遗传算法
    原理:模拟生物进化过程,通过交叉、变异等操作优化特征子集。
    步骤:

    1. 初始化种群(随机特征子集)
    2. 计算适应度(模型性能)
    3. 选择、交叉、变异生成新种群
    4. 迭代至收敛。

3. 嵌入法(Embedded Methods)

原理
在模型训练过程中自动完成特征选择,通过正则化或特征重要性评估实现。

典型方法

  • L1正则化(LASSO)
    原理:通过L1惩罚项使部分特征的系数归零,实现特征稀疏化。
    步骤:

    1. 定义损失函数(如 L = Σ ( y i − y ^ i ) 2 + λ Σ ∣ w j ∣ L = Σ(y_i - ŷ_i)^2 + λΣ|w_j| L=Σ(yiy^i)2+λΣ∣wj
    2. 优化求解,保留非零系数对应的特征。
  • 树模型特征重要性
    原理:基于特征在树节点分裂中的贡献度(如基尼指数、信息增益)评估重要性。
    步骤:

    1. 训练随机森林/XGBoost
    2. 提取feature_importances_属性
    3. 按重要性阈值筛选特征。

二、类不平衡处理方法

1. 过采样(Oversampling)

SMOTE(Synthetic Minority Oversampling)
原理:在少数类样本的K近邻之间线性插值生成新样本,避免简单复制导致的过拟合。
步骤

  1. 对每个少数类样本 x i x_i xi,计算其K近邻(欧氏距离)
  2. 随机选择近邻 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)×(xjxi)
  3. 重复直至类别平衡。

改进方法

  • Borderline-SMOTE:仅对边界样本过采样
  • ADASYN:根据样本密度自适应调整生成数量。

2. 欠采样(Undersampling)

随机欠采样
原理:随机删除多数类样本以平衡类别分布。
步骤

  1. 计算少数类样本数 N m i n N_{min} Nmin
  2. 从多数类中随机抽取 N m i n N_{min} Nmin个样本。

聚类欠采样(如K-Means)
原理:对多数类聚类后从每个簇中选取代表性样本。
步骤

  1. 将多数类聚类为K个簇(K=少数类样本数)
  2. 从每个簇中随机抽取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(1pt)γlog(pt)

  • α α α:平衡正负样本权重(如正样本α=0.75,负样本α=0.25)
  • γ γ γ:调节难易样本权重(γ=2时效果最佳)。

步骤

  1. 在交叉熵损失基础上引入α和γ参数
  2. 训练时动态调整样本权重。

三、评估方法

1. AUC-ROC曲线

原理

  • 横轴(FPR)= FP/(FP+TN),纵轴(TPR)= TP/(TP+FN)
  • AUC值表示模型区分正负类的能力,AUC=1为完美分类,AUC=0.5为随机猜测。

步骤

  1. 按预测概率降序排列样本
  2. 遍历阈值计算TPR/FPR
  3. 绘制ROC曲线,使用梯形法则计算AUC。

2. PR曲线

原理

  • 横轴(Recall)= TP/(TP+FN),纵轴(Precision)= TP/(TP+FP)
  • 适用于类别高度不平衡场景,AUPR越接近1模型越好。

步骤

  1. 按预测概率降序排列样本
  2. 遍历阈值计算Precision/Recall
  3. 绘制PR曲线,计算AUPR。

相关文章:

  • ThinkPHP5 的 SQL 注入漏洞
  • 041-代码味道-大泥团模块
  • VSCode连接服务器跑深度学习代码相关问题(研0大模型学习第八天)
  • C++入门小馆: 深入string类(二)
  • Docker 基本概念与安装指南
  • [贪心_2] (含证明)将数组和减半的最少操作次数 | 最大数
  • QT 5.15 程序打包
  • 【阿里云大模型高级工程师ACP学习笔记】2.1 用大模型构建新人答疑机器人
  • Electron Demo 的快速编译与启动
  • Git 大文件使用 Git-LFS 管理,推送失败
  • SystemVerilog语法之内建数据类型
  • 【mongodb】--下载
  • windows传文件给mac, linux或者其他windows
  • 【自然语言处理与大模型】模型压缩技术之剪枝
  • C++回溯算法详解
  • Python+Word实现周报自动化的完整流程
  • Java 设计模式心法之第4篇 - 单例 (Singleton) 的正确打开方式与避坑指南
  • 鸿蒙系统的 “成长烦恼“:生态突围与技术迭代的双重挑战
  • 从零开始配置spark-local模式
  • AI 赋能 3D 创作!Tripo3D 全功能深度解析与实操教程
  • 服务业扩大开放,金融、医疗等多领域明确155项试点任务
  • 马上评|治理“龟速车”,也是一次驾驶文明的升级
  • 明查|美军“杜鲁门”号航空母舰遭胡塞武装打击已退役?
  • 经济日报:从三个变化看外贸破局之道
  • 一女子称醉酒后疑似被性侵,长沙警方通报:嫌犯邱某某已被刑拘
  • 纪念沈渭滨︱初五沈大大  浓浓师生情