Skip to content

Commit 915b4a2

Browse files
authored
Merge pull request #148 from Mira190/main
feat/doc resolve display issue
2 parents 24a289f + 8633dca commit 915b4a2

File tree

6 files changed

+147
-185
lines changed

6 files changed

+147
-185
lines changed

app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.mdx

Lines changed: 72 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,110 @@
1-
---
2-
title: '王树森推荐系统学习笔记_冷启动'
1+
---
2+
title: "王树森推荐系统学习笔记_冷启动"
33
description: ""
44
date: "2025-09-27"
55
tags:
66
- tag-one
77
---
88

9-
# 王树森推荐系统学习笔记_冷启动
9+
# 王树森推荐系统学习笔记\_冷启动
1010

1111
## 物品冷启动
1212

1313
### 物品冷启动:评价指标
1414

15-
**物品冷启动**
15+
**物品冷启动**
1616

17-
- 小红书上用户新发布的笔记。
18-
- B 站上用户新上传的视频。
19-
- 今日头条上作者新发布的文章。
17+
- 小红书上用户新发布的笔记。
18+
- B 站上用户新上传的视频。
19+
- 今日头条上作者新发布的文章。
2020

21-
**新笔记冷启动**
21+
**新笔记冷启动**
2222

23-
- 新笔记缺少与用户的交互,导致推荐的难度大、效果差。
24-
- 扶持新发布、低曝光的笔记,可以增强作者发布意愿。
23+
- 新笔记缺少与用户的交互,导致推荐的难度大、效果差。
24+
- 扶持新发布、低曝光的笔记,可以增强作者发布意愿。
2525

26-
**优化冷启的目标**
26+
**优化冷启的目标**
2727

28-
1. 精准推荐:克服冷启的困难,把新笔记推荐给合适的用户,不引起用户反感。
28+
1. 精准推荐:克服冷启的困难,把新笔记推荐给合适的用户,不引起用户反感。
2929

30-
2. 激励发布:流量向低曝光新笔记倾斜,激励作者发布。
30+
2. 激励发布:流量向低曝光新笔记倾斜,激励作者发布。
3131

32-
3. 挖掘高潜:通过初期小流量的试探,找到高质量的笔记,给予流量倾斜。
32+
3. 挖掘高潜:通过初期小流量的试探,找到高质量的笔记,给予流量倾斜。
3333

34-
**评价指标**
34+
**评价指标**
3535

3636
- 作者侧指标:
37-
- 发布渗透率、人均发布量。
37+
- 发布渗透率、人均发布量。
3838

3939
- 用户侧指标:
40-
- 新笔记指标:新笔记的点击率、交互率。
41-
- 大盘指标:消费时长、日活、月活。
40+
- 新笔记指标:新笔记的点击率、交互率。
41+
- 大盘指标:消费时长、日活、月活。
4242

4343
- 内容侧指标:
44-
- 高热笔记占比。
44+
- 高热笔记占比。
4545

4646
#### 作者侧指标
4747

48-
**发布渗透率(penetration rate)**
48+
**发布渗透率(penetration rate)**
4949

50-
- 发布渗透率 = 当日发布人数 / 日活人数
51-
- 发布一篇或以上,就算一个发布人数。
50+
- 发布渗透率 = 当日发布人数 / 日活人数
51+
- 发布一篇或以上,就算一个发布人数。
5252
- ****
53-
- 当日发布人数 = 100 万
54-
- 日活人数 = 2000 万
55-
- 发布渗透率 = 100 / 2000 = 5%
53+
- 当日发布人数 = 100 万
54+
- 日活人数 = 2000 万
55+
- 发布渗透率 = 100 / 2000 = 5%
5656

57-
**人均发布量**
57+
**人均发布量**
5858

59-
- 人均发布量 = 当日发布笔记数 / 日活人数
59+
- 人均发布量 = 当日发布笔记数 / 日活人数
6060
- ****
61-
- 每日发布笔记数 = 200 万
62-
- 日活人数 = 2000 万
63-
- 人均发布量 = 200 / 2000 = 0.1
61+
- 每日发布笔记数 = 200 万
62+
- 日活人数 = 2000 万
63+
- 人均发布量 = 200 / 2000 = 0.1
6464

65-
发布渗透率、人均发布量反映出作者的发布积极性。
65+
发布渗透率、人均发布量反映出作者的发布积极性。
6666

67-
冷启的重要优化目标是促进发布,增大内容池。
67+
冷启的重要优化目标是促进发布,增大内容池。
6868

69-
新笔记获得的曝光越多,首次曝光和交互出现得越早,作者发布积极性越高。
69+
新笔记获得的曝光越多,首次曝光和交互出现得越早,作者发布积极性越高。
7070

7171
#### 用户侧指标
7272

73-
**新笔记的消费指标**
73+
**新笔记的消费指标**
7474

75-
- 新笔记的点击率、交互率。
76-
- 问题:曝光的基尼系数很大。
77-
- 少数头部新笔记占据了大部分的曝光。
75+
- 新笔记的点击率、交互率。
76+
- 问题:曝光的基尼系数很大。
77+
- 少数头部新笔记占据了大部分的曝光。
7878

79-
- 分别考察高曝光、低曝光新笔记。
80-
- 高曝光:比如 >1000 次曝光。
81-
- 低曝光:比如 <1000 次曝光。
79+
- 分别考察高曝光、低曝光新笔记。
80+
- 高曝光:比如 >1000 次曝光。
81+
- 低曝光:比如 &lt;1000 次曝光。
8282

83-
#### **内容侧指标**
83+
#### **内容侧指标**
8484

85-
**高热笔记占比**
85+
**高热笔记占比**
8686

8787
- 高热笔记:前 30 天获得 1000+ 次点击。
8888
- 高热笔记占比越高,说明冷启阶段挖掘优质笔记的能力越强。
8989

90-
#### **总结**
90+
#### **总结**
9191

9292
- **作者侧指标**:发布渗透率、人均发布量。
9393
- **用户侧指标**:新笔记消费指标、大盘消费指标。
9494
- **内容侧指标**:高热笔记占比。
9595

96-
**冷启动的优化点**
97-
98-
- **优化全链路**(*包括召回和排序*)。
99-
- **流量调控**(*流量怎么在新物品、老物品中分配*)。
100-
96+
**冷启动的优化点**
10197

98+
- **优化全链路**_包括召回和排序_)。
99+
- **流量调控**_流量怎么在新物品、老物品中分配_)。
102100

103101
### 物品冷启动:简单的召回通道
104102

105103
#### 召回的依据
106104

107-
**冷启召回的困难**
105+
**冷启召回的困难**
108106

109-
- 缺少用户交互,还没学好笔记 ID embedding,导致双塔模型效果不好。
107+
- 缺少用户交互,还没学好笔记 ID embedding,导致双塔模型效果不好。
110108
- 缺少用户交互,导致 ItemCF 不适用。
111109

112110
#### 双塔模型
@@ -124,19 +122,19 @@ tags:
124122
- 查找 top k 内容最相似的高曝光笔记。
125123
- 把 k 个高曝光笔记的 embedding 向量取平均,作为新笔记的 embedding。
126124

127-
**多个向量召回池**
125+
**多个向量召回池**
128126

129127
- 多个召回池,让新笔记有更多曝光机会。
130-
- 1 小时新笔记,
131-
- 6 小时新笔记,
132-
- 24 小时新笔记,
133-
- 30 天笔记。
128+
- 1 小时新笔记,
129+
- 6 小时新笔记,
130+
- 24 小时新笔记,
131+
- 30 天笔记。
134132

135133
- 共享同一个双塔模型,那么多个召回池不增加训练的代价。
136134

137135
#### 类目召回
138136

139-
**基于类目的召回**
137+
**基于类目的召回**
140138

141139
- 系统维护类目索引:
142140
$$\text{类目} \rightarrow \text{笔记列表(按时间倒排)}$$
@@ -146,20 +144,20 @@ tags:
146144

147145
- 取回笔记列表上前 k 篇笔记(即最新的 k 篇)。
148146

149-
**基于关键词的召回**
147+
**基于关键词的召回**
150148

151149
- 系统维护关键词索引:
152-
$$\text{关键词} \rightarrow \text{笔记列表(按时间倒排)}$$
150+
$$\text{关键词} \rightarrow \text{笔记列表(按时间倒排)}$$
153151

154-
- 根据用户画像上的 \text{\color{red}{关键词}} 做召回。
152+
- 根据用户画像上的 **关键词** 做召回。
155153

156-
**缺点**
154+
**缺点**
157155

158-
- 缺点 1:只对刚刚发布的新笔记有效。
159-
- 取回某类目 / 关键词下最新的 k 篇笔记。
160-
- 发布几小时之后,就再没有机会被召回。
156+
- 缺点 1:只对刚刚发布的新笔记有效。
157+
- 取回某类目 / 关键词下最新的 k 篇笔记。
158+
- 发布几小时之后,就再没有机会被召回。
161159

162-
- 缺点 2:弱个性化,不够精准。
160+
- 缺点 2:弱个性化,不够精准。
163161

164162
### 物品冷启动:聚类召回
165163

@@ -197,8 +195,6 @@ tags:
197195

198196
#### 内容相似度模型
199197

200-
201-
202198
![](https://raw.githubusercontent.com/H0SH123/Books-and-Notes/main/RecommenderSystem/images/7-3-1.png)
203199

204200
![](https://raw.githubusercontent.com/H0SH123/Books-and-Notes/main/RecommenderSystem/images/7-3-2.png)
@@ -212,16 +208,18 @@ tags:
212208
基本想法:鼓励 $\cos(\mathbf{a}, \mathbf{b}^+)$ 大于 $\cos(\mathbf{a}, \mathbf{b}^-)$
213209

214210
**Triplet hinge loss:**
211+
215212
$$
216213
L(\mathbf{a}, \mathbf{b}^+, \mathbf{b}^-) = \max\{0, \cos(\mathbf{a}, \mathbf{b}^-) + m - \cos(\mathbf{a}, \mathbf{b}^+)\}
217214
$$
218215

219-
220216
**Triplet logistic loss:**
217+
221218
$$
222219
L(\mathbf{a}, \mathbf{b}^+, \mathbf{b}^-) = \log(1 + \exp(\cos(\mathbf{a}, \mathbf{b}^-) - \cos(\mathbf{a}, \mathbf{b}^+)))
223220
$$
224-
**<种子笔记,正样本>**
221+
222+
**&lt;种子笔记,正样本>**
225223

226224
方法一:人工标注二元组的相似度
227225

@@ -234,10 +232,10 @@ $$
234232

235233
- 用 ItemCF 的物品相似度选正样本。
236234

237-
**<种子笔记,负样本>**
235+
**&lt;种子笔记,负样本>**
238236

239237
- 从全体笔记中随机选出满足条件的:
240-
- 字数较多 *(神经网络提取的文本信息有效)*
238+
- 字数较多 _(神经网络提取的文本信息有效)_
241239
- 笔记质量高,避免图文无关。
242240

243241
#### 总结
@@ -302,9 +300,9 @@ $$
302300

303301
**工业界的做法**
304302

305-
- 假设推荐系统只分发年龄 <30 天的笔记。
303+
- 假设推荐系统只分发年龄 &lt;30 天的笔记。
306304

307-
- 假设采用自然分发,新笔记(年龄 <24 小时)的曝光占比为 1/30。
305+
- 假设采用自然分发,新笔记(年龄 &lt;24 小时)的曝光占比为 1/30。
308306

309307
- 扶持新笔记,让新笔记的曝光占比远大于 1/30。
310308

@@ -351,9 +349,11 @@ $$
351349
- 已有曝光:比如笔记已经获得 20 次曝光。
352350

353351
计算公式:
352+
354353
$$
355354
\text{提权系数} = f\left( \frac{\text{发布时间}}{\text{目标时间}}, \frac{\text{已有曝光}}{\text{目标曝光}} \right) = f(0.5, 0.2)
356355
$$
356+
357357
**保量的难点**
358358

359359
保量成功率远低于 100%
@@ -425,7 +425,6 @@ $$
425425
- 新策略:把新笔记排序时的权重增大两倍。
426426

427427
- 结果(只看消费指标)
428-
429428
- AB 测试的 diff 是负数(策略组不如对照组)。
430429

431430
- 如果推全,diff 会缩小(比如 -2% ➝ -1%)。
@@ -442,16 +441,13 @@ $$
442441
**缺点:新笔记之间会抢流量**
443442

444443
- 设定:
445-
446444
- 新老笔记走各自队列,没有竞争。
447445

448446
- 重排:分给新笔记 1/3 流量,分给老笔记 2/3 流量。
449447

450-
451448
- 新策略:把新笔记的权重增大两倍。
452449

453450
- 结果(只看发布指标):
454-
455451
- AB 测试的 diff 是正数(策略组优于对照组)。
456452

457453
- 如果推全,diff 会消失(比如 2% ➝ 0)。
@@ -497,5 +493,3 @@ $$
497493
- 新笔记、老笔记怎么抢流量?
498494
- 同时隔离笔记、用户,会不会让内容池变小?
499495
- 如果对新笔记做保量,会发生什么?
500-
501-

0 commit comments

Comments
 (0)