3. 特征工程基础回顾:特征提取、特征选择、特征构造的核心流程与常见陷阱
特征工程是机器学习流程中最关键、最耗时、也最容易被低估的环节。在规则引擎与模型协同工作的场景中,特征工程的质量直接决定了规则冲突的复杂度和可解释性。本节系统回顾特征工程的三大支柱——特征提取、特征选择与特征构造,并重点剖析每个环节的常见陷阱。
3.1 特征工程全景流程
特征工程并非一次性工作,而是一个迭代循环。下图展示了从原始数据到最终特征集的标准流程,以及每个阶段与规则引擎的交互点。
关键认知:特征工程不是一次性流水线。特征构造和特征选择之间存在迭代反馈环——构造出的新特征需要经过选择验证,而选择结果又会指导下一轮构造方向。规则引擎的冲突检测应嵌入这个循环中,而非等到模型上线前才处理。
3.2 特征提取:从原始数据到可用特征
特征提取是将原始数据(文本、图像、时间序列、日志等)转换为结构化数值特征的过程。在规则引擎场景中,提取方式必须与规则中使用的字段定义保持一致。
3.2.1 常见提取方法
| 数据类型 | 提取方法 | 典型输出 | 规则引擎注意事项 |
|---|---|---|---|
| 文本 | TF-IDF、词袋、Word2Vec | 词频向量、嵌入向量 | 分词粒度与规则关键词匹配不一致 |
| 时间序列 | 滑动窗口统计、傅里叶变换 | 均值、方差、趋势斜率 | 窗口大小与规则时效性要求冲突 |
| 类别数据 | 独热编码、标签编码、目标编码 | 稀疏矩阵、编码映射表 | 编码顺序变化导致规则条件失效 |
| 日志/事件 | 聚合计数、时间衰减统计 | 事件频率、最近事件时间戳 | 聚合窗口与规则触发窗口不匹配 |
3.2.2 常见陷阱
- 陷阱1:数据泄露——提取时使用了未来信息(如用全量数据计算归一化参数),导致规则在线上表现与线下严重偏离。
- 陷阱2:提取粒度不一致——模型特征提取粒度(如按天聚合)与规则引擎的实时判断粒度(如按分钟)不匹配,造成冲突。
- 陷阱3:缺失值处理隐式规则——提取过程中对缺失值的填充策略(如填充0、均值、前向填充)会隐式引入规则,但往往未被文档化。
规则引擎冲突预警:特征提取阶段的缺失值填充策略必须显式记录并同步给规则引擎。例如,模型侧对缺失年龄填充为平均值30,但规则侧有一条“年龄 < 18 拒绝”的规则,两者结合可能导致线上行为与预期不符。
3.3 特征构造:创造高信息密度特征
特征构造(又称特征衍生)是通过数学变换、组合、聚合等方式从现有特征中创建新特征。这是特征工程中最具创造性的环节,也是规则冲突的高发区。
3.3.1 特征构造方法分类
| 构造类型 | 方法示例 | 适用场景 | 规则冲突风险 |
|---|---|---|---|
| 算术组合 | 特征A / 特征B, A * B, A + B | 比率类特征(如负债收入比) | 中 — 除零处理不一致 |
| 聚合统计 | 分组均值、标准差、最大值 | 用户行为画像、交易频次 | 高 — 聚合窗口定义冲突 |
| 时间窗口 | 过去7天均值、过去30天趋势 | 时序预测、异常检测 | 高 — 窗口边界对齐问题 |
| 交叉组合 | 类别A × 类别B 笛卡尔积 | 推荐系统、风控规则 | 极高 — 组合爆炸与规则覆盖 |
| 非线性变换 | log(1+x)、sqrt(x)、多项式 | 长尾分布特征处理 | 低 — 但需注意定义域 |
3.3.2 常见陷阱
- 陷阱1:特征膨胀失控——盲目进行笛卡尔积或多项式组合,导致特征维度爆炸,规则引擎无法维护。
- 陷阱2:构造逻辑与规则逻辑重复——模型侧构造了“收入/负债比”,规则侧也有一条“收入/负债比 > 2”的规则,但计算口径不同(如模型用月收入,规则用年收入),造成冲突。
- 陷阱3:时间窗口边界模糊——模型用“过去7天自然日”,规则用“过去7个工作日”,两者在周末和节假日产生差异。
3.4 特征选择:去芜存菁
特征选择是从候选特征集中筛选出对模型预测最有贡献的子集。在规则引擎场景中,特征选择不仅要考虑模型性能,还要考虑规则的可解释性和维护成本。
3.4.1 特征选择方法对比
| 方法类别 | 代表算法 | 优点 | 缺点 | 规则引擎适配性 |
|---|---|---|---|---|
| 过滤法 | 方差阈值、卡方检验、互信息 | 计算快、独立于模型 | 忽略特征间交互 | 高 — 选择结果稳定 |
| 包裹法 | 递归特征消除(RFE)、前向选择 | 考虑特征组合效果 | 计算开销大、易过拟合 | 中 — 选择结果可能不稳定 |
| 嵌入法 | Lasso、树模型特征重要性 | 训练与选择同步 | 偏向特定模型 | 低 — 特征重要性随模型变化 |
3.4.2 常见陷阱
- 陷阱1:选择偏差导致规则失效——特征选择时剔除了某个特征,但规则引擎中仍有依赖该特征的规则,造成运行时错误。
- 陷阱2:特征稳定性被忽略——只关注特征对模型的贡献度,忽略了特征本身的稳定性(如分布漂移),导致规则在跨时间窗口时频繁冲突。
- 陷阱3:多重共线性未处理——保留高度相关的特征对,导致模型权重不稳定,规则阈值难以确定。
最佳实践:在特征选择阶段引入“规则兼容性检查”。对于每个候选特征,自动扫描规则库中是否有关联规则,并生成冲突报告。例如,特征“用户信用分”被选择,但规则库中有3条规则依赖该特征的不同分段阈值,需要同步验证。
3.5 三大环节的冲突根源总结
| 环节 | 核心冲突根源 | 典型表现 | 预防策略 |
|---|---|---|---|
| 特征提取 | 计算口径不一致 | 模型用A方法归一化,规则用B方法 | 建立特征计算规范文档 |
| 特征构造 | 逻辑重复与窗口歧义 | 模型和规则各自实现相同特征但结果不同 | 统一特征注册中心 |
| 特征选择 | 选择结果与规则依赖脱节 | 特征被剔除但规则仍在引用 | 规则依赖图谱自动检测 |