跳到主要内容

特征工程

问题

什么是特征工程?为什么说"特征工程决定了模型的上限"?常见的特征处理技术有哪些?

答案

特征工程(Feature Engineering) 是将原始数据转换为模型能更好学习的特征表示的过程。在深度学习之前,特征工程是机器学习项目中最耗时也最关键的环节。

"Coming up with features is difficult, time-consuming, requires expert knowledge. Applied machine learning is basically feature engineering." —— Andrew Ng

一、特征类型

类型示例处理方式
数值特征年龄、收入、温度缩放、分桶、交叉
类别特征性别、城市、颜色One-Hot、Label、Target Encoding
文本特征评论、标题TF-IDF、词嵌入、LLM Embedding
时间特征日期、时间戳提取年/月/日/星期、周期性编码
图像特征像素矩阵CNN 提取、预训练模型特征

二、特征缩放

不同特征的量级差异很大(年龄 0100,收入 01000000),如果不做缩放,大数值特征会主导距离计算和梯度更新。

方法公式特点
Min-Max 归一化x=xxminxmaxxminx' = \frac{x - x_{\min}}{x_{\max} - x_{\min}}缩放到 [0, 1],对异常值敏感
Z-Score 标准化x=xμσx' = \frac{x - \mu}{\sigma}均值 0、标准差 1,更鲁棒
RobustScalerx=xQ2Q3Q1x' = \frac{x - Q_2}{Q_3 - Q_1}基于中位数和四分位数,抗异常值
关键注意事项

特征缩放必须在训练集/测试集划分之后进行,且用训练集的统计量(均值、标准差)来转换测试集。否则就是数据泄露。

哪些模型需要特征缩放?

  • 需要:线性回归、逻辑回归、SVM、KNN、神经网络
  • 不需要:决策树、随机森林、XGBoost(基于分裂,不依赖距离)

三、类别特征编码

编码方式说明适用场景
Label Encoding映射为整数 0, 1, 2...有序类别(如 低/中/高)
One-Hot Encoding每个类别一个 0/1 列类别少(<20)的无序类别
Target Encoding用该类别下目标均值替换高基数类别(如城市 ID)
Frequency Encoding用类别出现频次替换简单有效的替代方案
Embedding学习低维稠密向量深度学习中
One-Hot 的维度爆炸

如果类别有 10000 种取值,One-Hot 会生成 10000 列——维度灾难。此时应考虑 Target Encoding 或 Embedding。

四、特征选择

减少特征数量,保留最有用的特征:

方法原理示例
过滤法(Filter)基于统计量筛选方差阈值、相关系数、卡方检验
包装法(Wrapper)用模型表现评估特征子集前向选择、后向淘汰、RFE
嵌入法(Embedded)模型训练自带特征选择L1 正则化、特征重要性(树模型)

五、深度学习时代的变化

传统 ML深度学习
人工设计特征,耗时耗力模型自动学习特征表示
特征工程是核心竞争力数据质量和模型架构更重要
领域知识驱动数据驱动
但特征工程并未消失
  • 表格数据场景(金融、广告、推荐),XGBoost + 精心设计的特征仍然是最优方案
  • LLM 应用中,Prompt 本身就是一种"特征工程"——如何描述问题、提供上下文就是在做特征设计
  • RAG 系统中,文档分块策略、元数据提取本质上也是特征工程

常见面试问题

Q1: 什么是特征交叉?举例说明。

答案

特征交叉是将两个或多个特征组合成新特征。例如预测点击率时:

  • 原始特征:性别=男年龄=25
  • 交叉特征:性别_年龄=男_25

这能捕捉到特征间的交互效应——"25 岁男性"对某类广告的点击偏好不能简单从"男性"和"25 岁"单独推断。

在深度学习中,DCN(Deep & Cross Network)、DeepFM 等推荐模型通过网络结构自动学习特征交叉。

Q2: 如何处理缺失值?

答案

策略方法适用场景
删除删除含缺失值的行或列缺失比例很小且随机
填充均值/中位数/众数/固定值简单场景
插值线性插值、KNN 插值时序数据、空间数据
标记新增 is_missing缺失本身可能携带信息
模型预测用其他特征预测缺失值缺失有规律可循

Q3: 如何处理异常值?

答案

  1. 检测方法:Z-Score > 3、IQR(四分位距法)、箱线图
  2. 处理方式
    • 删除(确认是数据错误)
    • 截断/缩尾(Winsorization,压缩到 [P1, P99])
    • 取对数变换(减小量级差异)
    • 使用对异常值鲁棒的模型(如 MAE 替代 MSE)

相关链接