Blame view

docs/LTR-特征非线性映射.md 13.4 KB
ccbdf870   tangwang   enriched_attribut...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
  
  特征工程:
  对因子做非线性处理,作为重排阶段的乘法融合 / 特征融合,和LR、FM、浅层 MLP的输入。
  
  分成两张表:
  
  1. **常见非线性映射总表**
  2. **按“你想达到什么效果”来选方法**
  
  ---
  
  # 一、常见非线性映射对比表
  
  > 记号说明:
  >
  > * (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<1)          |   单调增 | 高值区变平                | 弹性恒为(\gamma<1)            | **整体降权,压缩高值**          | 重尾分布、避免大值碾压        | 需要处理0附近/尺度问题       |
  | 幂次(>1)                  | (y=x^\gamma,\ \gamma>1)            |   单调增 | 高值区更陡                | 弹性恒为(\gamma>1)            | **整体放大,强调高值**          | 想突出强信号头部           | 容易放大异常值、过拟合        |
  | 负幂 / 倒数幂                | (y=(x+\epsilon)^\gamma,\ \gamma<0) |   单调减 | 小(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<\gamma<1)), (\frac{x}{x+K}), (1-e^{-\alpha x}) | 高值区斜率变小         | 热度、频次、相似度、历史点击率  |
  | 明显削弱高值区重要性     | (\frac{x}{x+K})                                                         | 弹性随(x)增大而下降     | “高了以后别再太影响排序”    |
  | 整体降低某因子的乘法重要性  | (x^\gamma,\ 0<\gamma<1)                                                 | 弹性恒定缩小到(\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
  * 分桶
  
  ## 第三梯队:谨慎使用
  
  * 指数放大
  * 高次幂 (x^3,x^4)
  * 很激进的负幂
  * 过多参数化函数族
  
  因为样本少时,最怕的是:
  
  * 变换过激
  * 参数太多
  * 极值被放大
  * 输入间强共线后模型不稳
  
  ---
  
  # 六、最后给你一个超短总结版
  
  | 方法族 | 代表公式                               | 本质效果       |
  | --- | ---------------------------------- | ---------- |
  | 偏置族 | (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<0) | 距离/排名/惩罚映射 |
  | S型族 | sigmoid, tanh, arctan              | 中间敏感、两端变平  |
  | 阈值族 | ReLU, hinge, softplus              | 超过门槛才生效    |
  | 稳定族 | clip, winsorize, quantile          | 抗异常、保稳     |
  | 离散族 | binning, percentile                | 保序/分段表达    |
  
  ---
  
  如果你愿意,我下一步可以继续帮你整理成一版**“适合直接放进方案文档/评审PPT”的表格版**,再补一列:
  **“推荐用于哪些 rerank 因子(相关性、质量、热度、位置、先验)”**