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

特征选择与类不平衡处理

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

一、特征选择方法

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。
http://www.xdnf.cn/news/778.html

相关文章:

  • aws服务--S3介绍使用代码集成
  • Missashe考研日记-day23
  • 在Ubuntu下用Chrony做主从机时间同步
  • 栈和字符串,力扣.43.字符串相乘力扣1047.删除字符串中的所有相邻重复项力扣.844比较含退格的字符串力扣227.基本计算器II
  • 《马尼拉》桌游期望计算器
  • Ubuntu下展锐刷机工具spd_dump使用说明
  • Python3网络爬虫开发--爬虫基础
  • Java 设计模式心法之第4篇 - 单例 (Singleton) 的正确打开方式与避坑指南
  • 每天学一个 Linux 命令(30):cut
  • 【React】搜索时高亮被搜索选中的文案
  • 大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署--完结
  • TensorFlow和PyTorch学习原理解析
  • 掌握常见 HTTP 方法:GET、POST、PUT 到 CONNECT 全面梳理
  • FreeRTos学习记录--2.内存管理
  • 华为云获取IAM用户Token的方式及适用分析
  • 潞晨科技将暂停DeepSeek API服务,AI大模型技术红利普惠化与市场竞争白热化叠加,内卷恶果,开始显现!
  • 在线查看【免费】 dcm、drawio,dcm wps文件格式网站
  • Spring Boot集成Keycloak
  • 颠覆传统!毫秒级响应的跨平台文件同步革命,远程访问如本地操作般丝滑
  • 从“堆料竞赛”到“体验深耕”,X200 Ultra和X200s打响手机价值升维战
  • 【锂电池容量特征提取】NASA数据集锂电池容量特征提取(Matlab完整源码)
  • Java中 关于编译(Compilation)、类加载(Class Loading) 和 运行(Execution)的详细区别解析
  • Linux网络编程 多进程UDP聊天室:共享内存与多进程间通信实战解析
  • 四元数转旋转矩阵
  • 极狐GitLab CEO 柳钢受邀出席 2025 全球机器学习技术大会
  • Halcon应用:相机标定之应用
  • Shell脚本-变量的分类
  • 使用c++调用deepseek的api(附带源码)
  • 深度解析算法之位运算
  • 突破传统!SEARCH-R1如何让LLM与搜索引擎协同推理?