一句话定义:特征交叉(Feature Crossing)是把两个或多个原始特征拼成一个新特征,让模型能直接学到"只有这个组合出现时才成立"的规律。
比如把"城市=上海"和"时段=工作日中午"交叉成"上海×工作日中午",模型就能单独给这个格子一个权重,而不是分别看城市和时段。
为什么需要它
生活里很多规律都是"组合条件"。医院分诊:单看"咳嗽"或"发烧"未必紧张,但"发烧+去过某地"就是另一回事。再比如商场:只下雨、或只是周末,客流都普通;"周末+下雨"反而人特别多——大家没地方去,都进商场了。
逻辑回归(Logistic Regression)这类线性模型只会做加法:每个特征配一个权重,预测值是加权和。如果真实规律是"25-34 岁女性对某品类点击率特别高",而单独看"25-34 岁"和"女性"都平平,加权和怎么调都抓不到这个效应。交叉出一个新特征后,问题变成"这个新特征的权重该多大",模型就能表达了。
代价也很直接:组合数量是乘法级增长。性别 × 年龄段 × 城市 × 商品类目,很快就上千万个格子;每个格子要足够样本才估得准,长尾格子基本没数据。
和自动交叉的区别
| 维度 | 手工特征交叉 | 深度模型自动交叉 |
|---|---|---|
| 谁定义组合 | 人按业务经验枚举 | 模型结构自动产生 |
| 权重来源 | 每个组合一份独立权重 | 常由特征 embedding 内积或交叉层算出 |
| 没见过的组合 | 学不到,退化回各特征权重之和 | 可借相似特征泛化出合理估计 |
| 可解释性 | 强,能指到具体人群 | 弱 |
| 主要成本 | 组合爆炸、需反复试 | 省人工,但要调结构和算力 |
相邻概念别混淆:embedding 是把单个特征变成向量,交叉是把多个特征连起来。因子分解机(Factorization Machine, FM)用两个特征的隐向量内积来近似交叉权重,所以没出现过的组合也能有个像样的估计;DeepFM、DCN 这类结构把交叉做成网络层,Wide&Deep 的 wide 部分则常常就是人工交叉特征。但自动交叉不是万能:高阶交叉噪声大、可解释性差,业务上真正重要的组合仍值得人工点名。
对从业者的意义
做推荐、广告、风控的人,点击率(CTR)预估里交叉特征几乎是标配,也是面试常考题。真正值钱的能力不是"会写交叉",而是判断哪两个字段值得交叉、交叉后样本够不够。
对普通人:App 眼里的你不是"一个人",而是一堆组合标签的叠加——某城市 × 某机型 × 某时段。这也解释了为什么小众组合的推荐常不准:同类样本太少,模型根本没见够。具体到某个产品的特征体系,以官方技术文档为准。
