特征工程进阶:从原始数据到模型输入
特征工程(feature engineering)指根据数据与任务,构造、选择并变换特征,使模型更容易学到规律。在深度学习普及前,它往往是项目成败的关键;即便在今天,合理特征仍能让小模型超越笨重模型。
数值特征的处理
数值特征常需归一化与标准化:最小最大缩放到 [0,1] 适合边界已知的场景,Z-score 标准化(减均值除标准差)更适合梯度类模型以稳定训练。对长尾分布可先做对数或分箱(binning),把连续值切成有序区间,降低异常值冲击。分箱也能帮助线性模型捕捉非线性关系。
类别特征编码
类别变量不能直接进模型。低基数可用独热编码(one-hot),高基数则需目标编码(用目标均值平滑替代)、频率编码或哈希编码,避免维度爆炸。目标编码要配合交叉验证或加平滑项,防止对训练标签过拟合,这是实践中常见的泄露陷阱。
文本与缺失值
文本可用词袋、TF-IDF 或嵌入向量表征;现代做法多用预训练语言模型产出句向量。缺失值不能简单填零:可显式标记为「缺失」类别,或用模型(如 KNN、迭代式 imputation)按其他特征预测填补。scikit-learn 的文档系统列出了多种 imputer 与变换器的组合用法。
自动化特征工程
手工特征耗时且依赖经验。Featuretools 之类的工具用「深度特征合成」自动从多表关系中构造聚合特征;深度学习则倾向端到端,让模型自己学表示。但自动化不万能:领域知识构造的特征在可解释性与合规场景仍不可替代。
小结
特征工程把原始数据转化为模型友好的输入,常决定项目上限。核心包括数值归一化与分箱、类别编码(独热、目标编码)、文本表征与缺失值处理,并需注意目标编码的泄露风险。自动化工具能提效,但领域知识构造的特征在可解释场景仍关键。
参考与延伸阅读
- scikit-learn 预处理与缺失值文档(已核验):https://scikit-learn.org/stable/modules/preprocessing.html
- 目标编码与泄露风险讨论(已核验):https://scikit-learn.org/stable/auto_examples/compose/plot_target_encoder.html
- Featuretools 自动特征合成(已核验):https://featuretools.alteryx.com/
本文累计阅读 — 次