Skip to content
Charles Shao
Go back

特征工程总览:算法是大厨,但菜的上限由「备料」决定

views

这是「数据与特征工程系列」的开篇。这个系列会把「把毛坯数据变成模型能吃的料」这件事——预处理 → 构建 → 提取降维 → 选择 → 编码——从直觉到公式逐段讲透。本篇先用一个统一比喻建立整体心智模型:特征工程到底在干什么、为什么它比换模型更重要、在工程上又分成哪几步。后续每一篇再逐一深挖:系统化框架数据预处理特征构建特征提取与降维特征选择特征编码Criteo CTR 实战

Table of contents

Open Table of contents

一句话理解

特征工程 = 大厨背后的「备料师」。同一批食材(原始数据),备料师洗净、切配、吊出高汤、只留有用的料,再把「文字菜谱」翻译成「秤上的克数」,交给大厨(算法)下锅。

大厨手艺再好,也炒不出烂菜叶的满汉全席——菜的上限,在备料那一刻就定了。

换个更贵的大厨(换模型)通常只提升几个点;把料备好,往往能让同一个大厨直接换个档次。


1. 那句被引用烂了的话,到底什么意思

数据和特征决定了机器学习的上限,而算法和模型只是逼近这个上限而已。

机器学习效果的「天花板」:数据与特征的质量决定了一条水平上限线,LR / GBDT / 深度模型只是从下往上逼近它——换模型是在天花板下抠几个点,改特征是把天花板整体抬高

横线是「这批数据 + 这套特征」能达到的效果上限。换算法(LR → GBDT → DNN)是在天花板底下往上够,边际收益递减;而重做特征,是把整条天花板往上抬。

这不是鸡汤,是工程排序:当你的模型卡在某个指标不动时,先怀疑特征,再怀疑模型。绝大多数「换了 XGBoost / 上了 Transformer 却没啥提升」的故事,根子都在特征没喂好。


2. 特征工程在干哪四件事

特征工程的核心目标只有一句:==最大限度地从原始数据里提取、转换、构建出有预测能力的特征,喂给模型。== 拆到后厨,就是四件事:

任务后厨语言干啥为什么重要
数据清洗洗菜、择菜、挑坏的处理缺失值、异常值、不一致数据保证食材干净,别让噪音把大厨带沟里
特征构建切配、吊高汤、调新料组合 / 分解 / 映射原始数据造新特征把藏在数据里的非线性关系做出来
特征转换统一秤、切成同样大小缩放、归一化、离散化、编码适配模型对输入的要求,收敛更快
特征选择 / 提取只留有用的料、浓缩成精华筛选或降维,去冗余去噪降复杂度、提效率、增强可解释性

这四件事不是流水线上互不相干的四段——它们反复交织:你清洗时发现某列全是缺失,顺手就把它选掉了;你构建交叉特征时,又需要先把类别编码好。系列后面的每一篇,就是把这四件事各自展开。


3. 备料师的手艺 = 领域知识 × 数据洞察

为什么说特征工程是「艺术与科学的结合」?因为最值钱的特征,往往不是套公式套出来的,而是懂业务的人一眼看穿的

这些都不是模型能自己想出来的,是备料师结合业务逻辑「切配」出来的。这也是为什么特征工程很难被完全自动化——它吃的是人对业务的理解。(当然,自动化特征学习在把这件事往前推,后面会讲。)


4. 同一套料,离线和在线是两种备法

一个最容易被忽略、上线才踩的坑:训练时怎么算的特征,线上就得一模一样地算出来。但两条链路的约束天差地别。

离线与在线两条特征链路:离线从原始数据清洗出特征+标注,可反复迭代、容忍失败,产出训练样本;在线只算特征、不要标注,对延时和稳定性要求极高,建入索引/KV 供实时预测——两条链路必须口径一致,否则线上线下不一致

离线(训练用)在线(预测用)
产出特征 + 标注,供模型训练只要特征,不要标注
算力/延时海量数据、慢慢跑、可迭代毫秒级、对延时和稳定性极敏感
工具Hadoop / Spark,容忍失败重跑索引 / KV 存储,实时读取
心态多做实验、多试特征稳定压倒一切,出问题要能降级

铁律:同一个特征,离线和在线必须同口径。离线用「过去 30 天」,在线也得是「过去 30 天」,否则就是经典的「训练-服务偏差(train-serve skew)」——离线 AUC 很漂亮,一上线就崩。这条契约会在系统化框架里展开。


5. 整个系列的地图

把这个系列按「一道菜从毛坯到下锅」的顺序摆出来:

#后厨环节文章讲什么
1后厨全景系统化框架特征怎么用 / 怎么取 / 怎么监控(美团 CTR 实例)
2洗菜择菜数据预处理数据观察、清洗(异常值 / 缺失值)、整理
3切配调料特征构建特征组合、映射到新空间、衍生变量
4吊高汤特征提取与降维稀疏表示、特征哈希、PCA / ICA / LDA
5只留好料特征选择过滤 / 包装 / 嵌入三大流派 + 自动化
6翻译菜谱特征编码One-Hot / Label / Count / Frequency / Target
7联考实战Criteo CTR 实战用公开 CTR 数据把整条管线串起来

TL;DR — 三句话

  1. 特征工程 = 备料,算法 = 大厨。菜的上限在备料那一刻就定了,换模型只是在天花板下抠几个点。
  2. 它干四件事:清洗(洗菜)、构建(切配)、转换(统一秤)、选择提取(留好料)。四件事反复交织,不是死板流水线。
  3. 离线和在线是两种备法,但口径必须一致——否则离线再漂亮,上线也会崩(train-serve skew)。

下一篇进入后厨全景——特征工程系统化框架:从「哪些料能用、料从哪取、料坏了怎么报警」三个方案,看一套工业级特征体系是怎么搭起来的。


views
Share this post on:

Previous Post
MySQL 内核 · 事务隔离、MVCC 与锁
Next Post
MySQL 内核(开篇)· InnoDB 存储结构与 B+ 树索引