LTR-特征非线性映射.md
13.4 KB
特征工程: 对因子做非线性处理,作为重排阶段的乘法融合 / 特征融合,和LR、FM、浅层 MLP的输入。
分成两张表:
- 常见非线性映射总表
- 按“你想达到什么效果”来选方法
一、常见非线性映射对比表
记号说明:
- (x):原始因子,默认 (x\ge 0)
- (y=f(x)):映射后特征
- “头部/高值/尾部”分别指:高质量区、较大数值区、低影响区
- “弹性”可理解为乘法融合里更接近“相对重要性”的量
| 方法 | 公式 | 单调性 | 斜率/敏感性特征 | 弹性/相对敏感性特征 | 主要效果 | 适合场景 | 风险/注意点 |
|---|---|---|---|---|---|---|---|
| 加偏置 | (y=x+b) | 单调增 | (\frac{dy}{dx}=1) 不变 | (\frac{x}{x+b}),随(x)增大而增大 | 主要削弱低值区相对重要性 | 防止小值/0值过度伤害乘法分数 | 对高值区抑制很弱 |
| 对数 | (y=\log(1+x)) | 单调增 | 高值区越来越平 | 高值相对敏感性下降明显 | 强压缩大值/长尾 | 计数、曝光、频次、热度 | 小值区区分度有时不够 |
| 幂次(0~1) | (y=x\gamma,\ 0 | 单调增 | 高值区变平 | 弹性恒为(\gamma | 整体降权,压缩高值 | 重尾分布、避免大值碾压 | 需要处理0附近/尺度问题 |
| 幂次(>1) | (y=x\gamma,\ \gamma>1) | 单调增 | 高值区更陡 | 弹性恒为(\gamma>1) | 整体放大,强调高值 | 想突出强信号头部 | 容易放大异常值、过拟合 |
| 负幂 / 倒数幂 | (y=(x+\epsilon)\gamma,\ \gamma | 单调减 | 小(x)处敏感 | 适合“坏度/距离/排名”类反向量 | 把大值变小、小值变大 | 距离、惩罚项、rank-like特征 | 必须防0,数值稳定要小心 |
| Michaelis-Menten / 饱和分式 | (y=\frac{x}{x+K}) | 单调增 | 前陡后平 | (\frac{K}{x+K}),随(x)增大而减小 | 高值区重要性显著衰减 | 相似度、质量分、置信度饱和 | 需选(K),解释阈值要清晰 |
| 指数饱和 | (y=1-e{-\alpha x}) | 单调增 | 初期快,后期快饱和 | 高值区快速失敏 | 前期收益大,后期收益递减 | “够好即可”的因子 | (\alpha)过大易太早饱和 |
| 倒数/双曲线 | (y=\frac{1}{x+c}) | 单调减 | 头部陡、尾部平 | 对小(x)更敏感 | 强头部区分,尾部压平 | rank、距离、位置惩罚 | 语义是反向量时更自然 |
| RRF | (y=\frac{1}{k+r}) | 单调减 | 头部下降快,尾部下降慢 | 离散相邻rank差在头部更大 | 强调Top位置,压缩长尾rank差异 | 多路召回排序融合 | 更适合rank,不适合已校准连续分数 |
| Sigmoid | (y=\sigma(\alpha(x-c))) | 单调增 | 中间陡,两端平 | 阈值附近最敏感 | 中段阈值化,低高两端压缩 | 有明显阈值的质量因子 | 容易过压缩,参数敏感 |
| Tanh | (y=\tanh(\alpha(x-c))) | 单调增 | 中间陡,两端平 | 以中心点为对称中枢 | 适合有“好/坏偏离”语义 | 偏离均值、标准化后特征 | 要先中心化更合理 |
| Softplus | (y=\log(1+e{\alpha(x-c)})) | 单调增 | 平滑版ReLU | 阈值后近似线性 | 软阈值激活 | 希望“超过阈值才开始起作用” | 不如硬阈值直观 |
| ReLU/铰链 | (y=\max(0,x-c)) | 单调增 | 阈值前0,后线性 | 明确阈值激活 | 只让超过阈值部分生效 | 明确业务门槛 | 不连续,不够平滑 |
| 截断/裁剪 | (y=\min(\max(x,L),U)) | 单调 | 两端直接压平 | 控制极值影响 | 抗异常值,防爆 | 样本少、分布脏 | 可能损失极值信息 |
| 分段线性 | 分段定义 | 单调可控 | 可手工指定各段斜率 | 可按业务调敏感区间 | 可解释、稳、好控 | 规则清晰的业务场景 | 需要人工定阈值 |
| Arctan | (y=\arctan(\alpha(x-c))) | 单调增 | 类S形但更柔和 | 中间敏感、两端平 | 温和版S型压缩 | 不想用太激进sigmoid时 | 解释性略弱 |
| 分位数/Percentile | (y=\text{percentile}(x)) | 单调增 | 基于排序,不看绝对差值 | 消除原始尺度影响 | 保序、抗异常、跨源统一尺度 | 多源分数难校准 | 丢失绝对量纲信息 |
| 分桶/Binning | 区间映射到桶 | 不一定连续 | 桶内不敏感,桶间跳变 | 强离散化 | 把非线性变成离散模式 | 样本少、LR很常见 | 桶边界敏感 |
| Box-Cox | (\frac{x\lambda-1}{\lambda}) | 单调增 | 介于log与power之间 | 可调分布形态 | 系统化连续压缩族 | 想系统试幂/log家族 | 解释性不如手工映射 |
| Yeo-Johnson | 可处理负值 | 单调 | 类似Box-Cox | 可处理(\le 0) | 负值/零值也能做分布矫正 | 特征可能有负值 | 工程解释性一般 |
二、按“想达到什么效果”选方法
这个表更适合你做特征工程时快速决策。
| 目标 | 推荐方法 | 核心机制 | 典型用途 |
|---|---|---|---|
| 防止小值/0值把乘法分数打穿 | (x+b) | 给低值加保护垫 | 质量分、置信分、召回弱信号保护 |
| 压制大值主导、做收益递减 | (\log(1+x)), (x\gamma(0 (\frac{x}{x+K}), (1-e{-\alpha x}) | 高值区斜率变小 | 热度、频次、相似度、历史点击率 |
| 明显削弱高值区重要性 | (\frac{x}{x+K}) | 弹性随(x)增大而下降 | “高了以后别再太影响排序” |
| 整体降低某因子的乘法重要性 | (x\gamma,\ 0 | 弹性恒定缩小到(\gamma) | 统一降权某类因子 |
| 整体放大某因子的乘法重要性 | (x\gamma,\ \gamma>1) | 弹性恒定放大到(\gamma) | 想强化强信号 |
| 强调Top,压平长尾 | (\frac{1}{x+c}), RRF | 头部陡、尾部平 | rank融合、位置因子、多路召回 |
| 只在阈值附近最敏感 | Sigmoid / Tanh / Arctan | 中间陡、两端平 | 质量过线、置信阈值、门控因子 |
| 超过阈值才起作用 | ReLU / Hinge / Softplus | 阈值激活 | “达到一定水平才算有效” |
| 抗异常值、防极值爆炸 | Clip / Winsorize / Log | 直接限幅或压缩长尾 | 脏数据、样本少、稳定性优先 |
| 分布跨源不一致、量纲不统一 | Quantile / Percentile | 保序统一尺度 | 多路打分融合、异构召回分 |
| 业务规则清晰、想强可解释 | 分段线性 / 分桶 | 手工指定各区间作用方式 | 规则强、可解释要求高 |
| 距离/惩罚/坏度越大越差 | 倒数、负幂、指数衰减 | 反向单调映射 | 距离、时延、惩罚项 |
三、几个你当前最关心的方法,单独再压缩成小表
1)加偏置 vs Michaelis-Menten
| 方法 | 公式 | 低值区 | 高值区 | 适合作用 |
|---|---|---|---|---|
| 加偏置 | (x+b) | 削弱更多 | 基本保留 | 防止低值过分伤害 |
| MM饱和 | (\frac{x}{x+K}) | 保留较强敏感性 | 削弱更多 | 防止高值持续主导 |
一句话区别:
- 加偏置:主要“救低值”
- MM饱和:主要“压高值”
2)RRF 的特征
| 维度 | 结论 |
|---|---|
| 公式 | (\frac{1}{k+r}) |
| 单调性 | 随rank变差单调下降 |
| 头部变化 | 更陡 |
| 尾部变化 | 更平 |
| 相邻rank差异 | rank越靠前,相邻差越大 |
| 适合 | 多路召回融合、强调Top结果 |
| 本质 | 是一种“头部敏感、尾部压缩”的rank映射 |
你的判断是对的:RRF 确实是头部变化陡、尾部变化平。
3)Sigmoid / Tanh / ReLU 三者区别
| 方法 | 形状 | 最敏感区域 | 适用语义 |
|---|---|---|---|
| Sigmoid | S型,输出(0\sim1) | 中心阈值附近 | 质量是否过线、概率型因子 |
| Tanh | S型,输出(-1\sim1) | 中心附近 | 正负偏离、相对均值偏差 |
| ReLU/Hinge | 折线 | 阈值以上 | 超过门槛才开始加分 |
四、用于 LR / FM 输入时,最推荐的一组“低风险特征字典”
如果你现在是要做有限样本下的工程化输入,建议不要一下上太多复杂函数,而是每个核心因子先派生一个小型稳定字典:
| 变换类别 | 推荐形式 | 作用 |
|---|---|---|
| 原始 | (x) | 保留原信息 |
| 稳定 | (x+b) | 防止低值过伤 |
| 压缩 | (\log(1+x)) | 压长尾 |
| 弱压缩 | (\sqrt{x}) | 温和收益递减 |
| 饱和 | (\frac{x}{x+K}) | 明确高值衰减 |
| 截断 | (\min(x,U)) | 防极值爆炸 |
| 阈值 | (\mathbf 1[x>t]) 或 (\max(0,x-t)) | 强化门槛效应 |
| rank型 | (\frac{1}{x+c}) / RRF | 处理位置、rank、距离 |
五、如果你要在实际工程里优先试哪些
我建议优先级这样排:
第一梯队:最稳
- (x)
- (x+b)
- (\log(1+x))
- (\sqrt{x})
- (\frac{x}{x+K})
- clip
- rank倒数 / RRF
第二梯队:有明确业务阈值时
- sigmoid
- tanh
- relu / hinge
- softplus
- 分桶
第三梯队:谨慎使用
- 指数放大
- 高次幂 (x3,x4)
- 很激进的负幂
- 过多参数化函数族
因为样本少时,最怕的是:
- 变换过激
- 参数太多
- 极值被放大
- 输入间强共线后模型不稳
六、最后给你一个超短总结版
| 方法族 | 代表公式 | 本质效果 |
|---|---|---|
| 偏置族 | (x+b) | 救低值 |
| 压缩族 | (\log(1+x), \sqrt{x}) | 压大值、减长尾 |
| 饱和族 | (\frac{x}{x+K}, 1-e{-\alpha x}) | 高值收益递减 |
| 放大族 | (x\gamma,\gamma>1) | 强化高值 |
| 反向族 | (\frac{1}{x+c}, x\gamma,\gamma | 距离/排名/惩罚映射 |
| S型族 | sigmoid, tanh, arctan | 中间敏感、两端变平 |
| 阈值族 | ReLU, hinge, softplus | 超过门槛才生效 |
| 稳定族 | clip, winsorize, quantile | 抗异常、保稳 |
| 离散族 | binning, percentile | 保序/分段表达 |
如果你愿意,我下一步可以继续帮你整理成一版“适合直接放进方案文档/评审PPT”的表格版,再补一列: “推荐用于哪些 rerank 因子(相关性、质量、热度、位置、先验)”。