Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,112 +1,110 @@
---
title: '王树森推荐系统学习笔记_冷启动'
---
title: "王树森推荐系统学习笔记_冷启动"
description: ""
date: "2025-09-27"
tags:
- tag-one
---

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

## 物品冷启动

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

**物品冷启动**
**物品冷启动**

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

**新笔记冷启动**
**新笔记冷启动**

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

**优化冷启的目标**
**优化冷启的目标**

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

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

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

**评价指标**
**评价指标**

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

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

- 内容侧指标:
- 高热笔记占比。
- 高热笔记占比。

#### 作者侧指标

**发布渗透率(penetration rate)**
**发布渗透率(penetration rate)**

- 发布渗透率 = 当日发布人数 / 日活人数
- 发布一篇或以上,就算一个发布人数。
- 发布渗透率 = 当日发布人数 / 日活人数
- 发布一篇或以上,就算一个发布人数。
- **例**:
- 当日发布人数 = 100 万
- 日活人数 = 2000 万
- 发布渗透率 = 100 / 2000 = 5%
- 当日发布人数 = 100 万
- 日活人数 = 2000 万
- 发布渗透率 = 100 / 2000 = 5%

**人均发布量**
**人均发布量**

- 人均发布量 = 当日发布笔记数 / 日活人数
- 人均发布量 = 当日发布笔记数 / 日活人数
- **例**:
- 每日发布笔记数 = 200 万
- 日活人数 = 2000 万
- 人均发布量 = 200 / 2000 = 0.1
- 每日发布笔记数 = 200 万
- 日活人数 = 2000 万
- 人均发布量 = 200 / 2000 = 0.1

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

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

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

#### 用户侧指标

**新笔记的消费指标**
**新笔记的消费指标**

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

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

#### **内容侧指标**
#### **内容侧指标**

**高热笔记占比**
**高热笔记占比**

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

#### **总结**
#### **总结**

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

**冷启动的优化点**

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

**冷启动的优化点**

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

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

#### 召回的依据

**冷启召回的困难**
**冷启召回的困难**

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

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

**多个向量召回池**
**多个向量召回池**

- 多个召回池,让新笔记有更多曝光机会。
- 1 小时新笔记,
- 6 小时新笔记,
- 24 小时新笔记,
- 30 天笔记。
- 1 小时新笔记,
- 6 小时新笔记,
- 24 小时新笔记,
- 30 天笔记。

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

#### 类目召回

**基于类目的召回**
**基于类目的召回**

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

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

**基于关键词的召回**
**基于关键词的召回**

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

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

**缺点**
**缺点**

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

- 缺点 2:弱个性化,不够精准。
- 缺点 2:弱个性化,不够精准。

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

Expand Down Expand Up @@ -197,8 +195,6 @@ tags:

#### 内容相似度模型



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

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

**Triplet hinge loss:**

$$
L(\mathbf{a}, \mathbf{b}^+, \mathbf{b}^-) = \max\{0, \cos(\mathbf{a}, \mathbf{b}^-) + m - \cos(\mathbf{a}, \mathbf{b}^+)\}
$$


**Triplet logistic loss:**

$$
L(\mathbf{a}, \mathbf{b}^+, \mathbf{b}^-) = \log(1 + \exp(\cos(\mathbf{a}, \mathbf{b}^-) - \cos(\mathbf{a}, \mathbf{b}^+)))
$$
**<种子笔记,正样本>**

**&lt;种子笔记,正样本>**

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

Expand All @@ -234,10 +232,10 @@ $$

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

**<种子笔记,负样本>**
**&lt;种子笔记,负样本>**

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

#### 总结
Expand Down Expand Up @@ -302,9 +300,9 @@ $$

**工业界的做法**

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

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

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

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

计算公式:

$$
\text{提权系数} = f\left( \frac{\text{发布时间}}{\text{目标时间}}, \frac{\text{已有曝光}}{\text{目标曝光}} \right) = f(0.5, 0.2)
$$

**保量的难点**

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

- 结果(只看消费指标)

- AB 测试的 diff 是负数(策略组不如对照组)。

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

- 设定:

- 新老笔记走各自队列,没有竞争。

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


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

- 结果(只看发布指标):

- AB 测试的 diff 是正数(策略组优于对照组)。

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


Loading