特征交叉(Feature Crossing)的原理与实现方法
特征交叉可捕捉特征间的非线性交互关系。请解释特征交叉的数学本质(笛卡尔积),常见的实现方式(多项式特征、FM、DeepFM),以及交叉后的维度爆炸问题及解决方案。
回答
我是大山
特征交叉的数学本质: 对两个特征A和B做笛卡尔积,得到新的组合特征(A=a, B=b)。
- a/b为类别值时:新特征取值为a&b的组合
- a/b为数值时:手动定义交叉方式(如乘积、求差)
实现方式:
1. 多项式特征(Polynomial Features):
- sklearn:PolynomialFeatures(degree=d)
- 生成xᵢxⱼ等组合特征,d阶多项式有O(n^d)个特征
- 适合低维小数据
2. 因子分解机(FM - Factorization Machine):
- 隐式交叉:
ŷ = w₀ + Σwᵢxᵢ + ΣᵢΣⱼ<vᵢ,vⱼ>xᵢxⱼ - 每个特征学一个隐向量vᵢ(k维),vᵢ·vⱼ度量交互强度
- 复杂度O(nk),不随交叉维度暴增
3. DeepFM / xDeepFM:
- FM部分做低阶特征交叉
- DNN部分做高阶特征交叉
- Compressed Interaction Network(CIN)做显式高阶交叉
维度爆炸问题:
- 类别特征A有100个取值,B有1000个→交叉后10^5个特征
- 解决方案:
- 哈希技巧(Hashing Trick):将组合映射到固定大小桶
- FM/DeepFM的隐向量交叉(不显式枚举组合)
- 覆盖率筛选:只保留出现次数>阈值的组合
- 决策树自动分裂发现有效交叉
最佳实践:推荐系统中A/B测试常用特征交叉提升效果。