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

【机器学习笔记 Ⅲ】4 特征选择

特征选择(Feature Selection)系统指南

特征选择是机器学习中优化模型性能的关键步骤,通过筛选最相关、信息量最大的特征,提高模型精度、降低过拟合风险并加速训练。以下是完整的特征选择方法论:


1. 特征选择的核心目标
  • 提升模型性能:去除噪声和冗余特征,增强泛化能力。
  • 降低计算成本:减少训练和预测时间。
  • 增强可解释性:简化模型,便于业务理解。

2. 特征选择方法分类
(1) 过滤法(Filter Methods)

原理:基于统计指标评估特征与目标的相关性,独立于模型。
优点:计算高效,适合高维数据。
常用技术

  • 数值特征
    • 皮尔逊相关系数(线性关系):
      import pandas as pd
      corr = df.corr()['target'].abs().sort_values(ascending=False)
      
    • 互信息(非线性关系):
      from sklearn.feature_selection import mutual_info_classif
      mi = mutual_info_classif(X, y)
      
  • 分类特征
    • 卡方检验(Chi-Square):
      from sklearn.feature_selection import chi2
      chi2_scores, _ = chi2(X, y)
      
    • ANOVA F值(方差分析):
      from sklearn.feature_selection import f_classif
      f_scores, _ = f_classif(X, y)
      

筛选阈值示例

selected_features = corr[corr > 0.3].index.tolist()
(2) 包裹法(Wrapper Methods)

原理:通过模型性能迭代选择特征子集。
优点:考虑特征交互,效果通常更好。
常用技术

  • 递归特征消除(RFE)
    from sklearn.feature_selection import RFE
    from sklearn.linear_model import LogisticRegression
    rfe = RFE(estimator=LogisticRegression(), n_features_to_select=10)
    rfe.fit(X, y)
    selected_features = X.columns[rfe.support_]
    
  • 顺序特征选择(SFS)
    from mlxtend.feature_selection import SequentialFeatureSelector
    sfs = SequentialFeatureSelector(estimator=RandomForestClassifier(),k_features=10,forward=True)  # 前向或后向选择
    sfs.fit(X, y)
    
(3) 嵌入法(Embedded Methods)

原理:模型训练过程中自动选择特征。
优点:平衡效率与效果。
常用技术

  • L1正则化(Lasso)
    from sklearn.linear_model import Lasso
    lasso = Lasso(alpha=0.1).fit(X, y)
    selected_features = X.columns[lasso.coef_ != 0]
    
  • 树模型特征重要性
    from sklearn.ensemble import RandomForestClassifier
    rf = RandomForestClassifier().fit(X, y)
    importance = rf.feature_importances_
    selected_features = X.columns[importance > np.mean(importance)]
    

3. 高级技术与自动化工具
(1) 特征重要性可视化
import matplotlib.pyplot as plt
plt.barh(X.columns, rf.feature_importances_)
plt.title("Feature Importance")
plt.show()

特征重要性

(2) 自动化特征选择库
  • Feature-engine
    from feature_engine.selection import DropCorrelatedFeatures
    selector = DropCorrelatedFeatures(threshold=0.8)
    X_train = selector.fit_transform(X_train)
    
  • Boruta(基于阴影特征):
    from boruta import BorutaPy
    boruta = BorutaPy(estimator=RandomForestClassifier(), n_estimators='auto', verbose=2)
    boruta.fit(X.values, y.values)
    selected_features = X.columns[boruta.support_]
    

4. 领域驱动的特征选择
  • 业务知识优先:例如金融风控中,人工筛选与欺诈强相关的特征(如交易频率、金额突增)。
  • 特征工程结合
    • 创建衍生特征(如“最近7天登录次数”)。
    • 分箱处理(将连续年龄分为“青年/中年/老年”)。

5. 验证与迭代
  • 交叉验证评估:对比特征选择前后的模型性能(如AUC、F1)。
    from sklearn.model_selection import cross_val_score
    scores = cross_val_score(model, X_selected, y, cv=5, scoring='roc_auc')
    
  • 稳定性检查:多次运行特征选择,观察高频被选中的特征。

6. 常见陷阱与解决方案
问题解决方案
数据泄漏仅在训练集上计算统计量,避免使用测试集信息
高基数分类特征使用目标编码或嵌入表示
特征间多重共线性移除相关系数>0.8的特征或使用PCA降维

7. 总结与最佳实践
  1. 流程建议
    • 先过滤法快速降维 → 嵌入法优化 → 包裹法精细调优(计算资源允许时)。
  2. 关键原则
    • 少而精:优先选择10-20个高价值特征。
    • 可解释性:确保业务方理解最终特征。
  3. 工具链
    数据预处理
    过滤法初筛
    嵌入法优化
    包裹法验证
    业务审核

通过系统化的特征选择,可显著提升模型效率与效果。实际应用中需结合数据特性和业务需求灵活调整方法。

http://www.dtcms.com/a/268860.html

相关文章:

  • WebDAV与内网穿透的协同创新:Joplin私有云同步架构深度解析
  • 【Linux系统】Linux权限 | Shell命令以及运行原理
  • 【Java安全】反射基础
  • (倍增)洛谷 P1613 跑路/P4155 国旗计划
  • VBA之Word应用第三章第十一节:Document对象的事件
  • 图像采集卡选型详细指南
  • SAP HANA内存数据库解析:特性、优势与应用场景 | 技术指南
  • OceanBase在.NET开发操作指南
  • 5、Receiving Messages:Message Listener Containers
  • 【Note】《Kafka: The Definitive Guide》第7章 Building Data Pipelines
  • 【牛客刷题】实现返回最大的不大于n的完美数的函数
  • [NOIP][C++]洛谷P1035 [NOIP 2002 普及组] 级数求和
  • 牛客周赛 Round 99 EF
  • 【PTA数据结构 | C语言版】求两个正整数的最大公约数
  • Camera相机人脸识别系列专题分析之十六:人脸特征检测FFD算法之libcvface_api.so数据结构详细注释解析
  • 芯谷科技--高性能双通道音频功率放大器D7050
  • LabVIEW与FPGA超声探伤
  • 单细胞数据格式转换:rds 与 h5ad互转
  • 倒排索引(Inverted Index)深度解析
  • uniapp跳转页面时如何带对象参数
  • 后端微服务基础架构Spring Cloud
  • UI前端与数字孪生融合新领域:智慧旅游的可视化导览系统
  • kong网关基于header分流灰度发布
  • Linux手动安装MySQL(基于CentOS 7 X86)
  • HCI接口协议:主机与控制器通信的标准桥梁(面试深度解析)
  • Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问
  • Taro+Vue3实现微信小程序富文本编辑器组件开发指南
  • RoboRefer:面向机器人视觉-语言模型推理的空间参考
  • 数学建模从入门到国奖——备赛规划优秀论文学习方法
  • 在 Windows 系统上配置 [go-zero](https://go-zero.dev) 开发环境教程