Skip to content
Charles Shao
Go back

特征构建:切配、换角度、片下部位——把原始料做出新味道

views

数据洗干净了(上一篇),接下来是切配——把原始料组合、换个角度、片下不同部位,做出更有预测力的新特征。这就是特征构建:捕捉数据里藏着的非线性关系隐藏模式

三条路:特征组合(把料一起炒)、映射到新空间(换个角度看料)、衍生变量(从整料上片下部位)。

Table of contents

Open Table of contents

一句话理解

单个原始特征常常是「生料」,直接下锅平淡无味。特征构建就是切配的刀工

  • 把「点击数」和「浏览数」相除 → 点击率,比两个原始计数都更有味;
  • 把用户名字 Ms. Lady Duff 片出称谓 Lady.社会地位,直接关联获救率。

模型自己很难想到这些组合,这是备料师结合业务经验切出来的

特征构建三条路:① 特征组合(GBDT+LR、交叉特征把多个料一起炒)② 映射到新空间(FFT/小波/熵,换个角度看时序料)③ 衍生变量(从 Name/Cabin/Ticket 一块整料上片下不同部位)


1. 特征组合:把几种料一起炒

1.1 GBDT + LR:让树帮你造交叉特征

这是广告 / 推荐里的经典套路(Facebook 2014 那篇论文带火的):用 GBDT 的叶子节点当新的类别特征

GBDT+LR 特征构建:一个样本喂进 GBDT,落在左树第1个叶子、右树第2个叶子;把每棵树的落点做 One-Hot(左[1,0,0]、右[0,1])拼接成 [1,0,0,0,1],作为新的高维稀疏特征喂给 LR/FM

思路四步:

  1. 用原始特征训一个 GBDT
  2. 每棵树的每个叶子节点,看作一个新的类别;
  3. 一个样本落在每棵树的哪个叶子上,就用 One-Hot 标出这条「路径」;
  4. 把所有树的 One-Hot 拼接成高维稀疏向量,喂给 LR / FM

:左树 3 个叶子、右树 2 个叶子。样本落在左树第 1 叶 → [1,0,0],右树第 2 叶 → [0,1],拼起来新特征 = [1,0,0,0,1]

为什么有用?GBDT 的每条「根 → 叶」路径,本质是一串特征的与组合年龄>30 且 城市=北京 且 …)。这等于让树自动帮你挖交叉特征,省去人工拍脑袋。

1.2 特征搜索:从一堆料里找最优子集

组合会爆炸,所以需要搜索策略找最优特征子集

类别算法说明缺点
完全搜索BFS / 分支限界遍历所有组合(可剪枝)穷举,NP 难
启发式序列前向 SFS / 后向 SBS每次贪婪加/减一个特征易陷局部最优
随机搜索模拟退火 / 遗传算法以概率接受较差解 / 交叉变异依赖随机,难复现

这块和特征选择高度重叠——组合是「造」、选择是「留」,用的搜索算法是同一套。

1.3 交叉特征:用户 × 物品的非线性组合

CTR 预估里,交叉特征表达「用户对某类物品的偏好」。做法是把用户特征和物品特征做内积

① 用户阶层 One-Hot(中产)      f_user = [0, 1, 0]
② 各阶层买某物品(Camry)的比例    f_item = [0.2, 0.6, 0.2]
③ 交叉(倾向性)= f_user · f_item = 0×0.2 + 1×0.6 + 0×0.2 = 0.6

一个「中产用户 × Camry」的组合,直接得到倾向性 0.6——比「中产」或「Camry」单独存在都更有信息。FM / DeepFM 就是把这种两两交叉自动化、参数化了。


2. 映射到新空间:换个角度看料

有些料(时间序列、信号)在原始的时域里看不出门道,得换个坐标系才现原形。

变换干啥关键点
快速傅里叶变换 (FFT)时域 → 频域揪出周期性、主频率;Xₖ = Σₙ xₙ·e^(−i2πkn/N)
小波变换时-频联合表示比 FFT 多了时间定位,适合非平稳信号
数据熵量化序列复杂度近似熵 ApEn / 样本熵 SampEn,值越小越规律可预测

直觉:FFT 告诉你「这段信号里有哪些频率」,但不告诉你「频率什么时候出现」;小波两个都告诉你。心电、振动、金融这类非平稳信号,小波更好使。


3. 衍生变量:从一块整料上片下不同部位

衍生变量最吃业务洞察——从一个信息量丰富的原生变量里,拆 / 提出独立特征。经典案例是泰坦尼克号:

泰坦尼克号衍生变量:从 Name 片出称谓 Title(Mr./Master./Lady.→社会地位/年龄),从 Cabin 片出 Deck 甲板号(船上位置),从 Ticket 片出前缀和位数(购票方式/同行关系),一块整料切出多个有意义的特征

原生变量衍生思路衍生变量业务意义
Name提取称谓Title(Mr./Master./Lady.)社会地位、年龄、婚姻状况 → 影响获救率
Cabin提取甲板/房间号DeckRoom船上位置与社会地位
Ticket提取前缀与位数TicketPrefixDigits购票方式、同行关系

还有两类常见衍生:商业加工(从登录记录 → 「最近 30 天登录次数」)和数学运算(距离 ÷ 时间 → 速度;Xᵢ × Xⱼln X√X)。

小心:批量造特征会招来多重共线性

数学运算批量生成特征,容易造出一堆高度相关的特征(多重共线性):

记住:造特征不是越多越好。造完要回头做特征选择,把冗余和噪音剔掉——切得多,也要挑得狠。


TL;DR — 三句话

  1. 特征组合:GBDT 叶子当新类别喂 LR(自动挖交叉)、特征搜索找最优子集、CTR 用内积做用户 × 物品交叉。
  2. 映射新空间:FFT(频域)、小波(时-频,适合非平稳)、数据熵(量化复杂度)——时域看不出的模式,换坐标系就现形。
  3. 衍生变量最吃业务经验(泰坦尼克 Name/Cabin/Ticket),但批量造特征会招多重共线性,造完记得挑。

下一篇讲「吊高汤」——特征提取与降维:稀疏表示、特征哈希、以及 PCA / ICA / LDA 三种降维法到底在最大化什么。


views
Share this post on:

Previous Post
MySQL 内核 · 主从复制与高可用
Next Post
数据预处理:洗菜择菜的三步——观察、清洗、整理