🎯 一、推荐系统的核心目标函数
1.1 基本定义
推荐系统的本质是学习一个评分预测函数:
$$\hat{r}_{ui} = f(u, i; \theta)$$
其中:
- $\hat{r}_{ui}$:用户 $u$ 对物品 $i$ 的预测评分
- $r_{ui}$:真实评分
- $\theta$:模型参数
1.2 优化目标
最小化平方误差损失函数:
$$\min_{\theta} \sum_{(u,i) \in \mathcal{K}} (r_{ui} - \hat{r}_{ui})^2 + \lambda \|\theta\|^2$$
公式解析:
- $\sum_{(u,i) \in \mathcal{K}}$:对所有观测到的用户-物品交互求和
- $(r_{ui} - \hat{r}_{ui})^2$:预测误差的平方
- $\lambda \|\theta\|^2$:L2正则化项,防止过拟合
应用场景:显式反馈数据(如评分)
🧩 二、协同过滤(Collaborative Filtering)
2.1 基于用户的协同过滤
$$\hat{r}_{ui} = \bar{r}_u + \frac{\sum_{v \in N(u)} s(u,v)(r_{vi} - \bar{r}_v)}{\sum_{v \in N(u)} |s(u,v)|}$$
参数说明:
- $\bar{r}_u$:用户 $u$ 的历史平均评分
- $s(u,v)$:用户 $u$ 和 $v$ 的相似度
- $N(u)$:用户 $u$ 的最近邻集合
- $r_{vi}$:用户 $v$ 对物品 $i$ 的评分
相似度计算(皮尔逊相关系数):
$$s(u,v) = \frac{\sum_{i \in I_{uv}}(r_{ui} - \bar{r}_u)(r_{vi} - \bar{r}_v)}{\sqrt{\sum_{i \in I_{uv}}(r_{ui} - \bar{r}_u)^2} \sqrt{\sum_{i \in I_{uv}}(r_{vi} - \bar{r}_v)^2}}$$
2.2 基于物品的协同过滤
$$\hat{r}_{ui} = \bar{r}_i + \frac{\sum_{j \in N(i)} s(i,j)(r_{uj} - \bar{r}_j)}{\sum_{j \in N(i)} |s(i,j)|}$$
参数说明:
- $\bar{r}_i$:物品 $i$ 的平均评分
- $s(i,j)$:物品 $i$ 和 $j$ 的相似度
- $N(i)$:物品 $i$ 的最近邻集合
余弦相似度:
$$s(i,j) = \frac{\sum_{u \in U_{ij}} r_{ui} r_{uj}}{\sqrt{\sum_{u \in U_{ij}} r_{ui}^2} \sqrt{\sum_{u \in U_{ij}} r_{uj}^2}}$$
🔢 三、矩阵分解(Matrix Factorization)
3.1 基础矩阵分解模型
$$\hat{r}_{ui} = \mu + b_u + b_i + p_u^\top q_i$$
参数详解:
- $\mu$:全局平均评分
- $b_u$:用户偏置,反映用户 $u$ 的评分严格程度
- $b_i$:物品偏置,反映物品 $i$ 的受欢迎程度
- $p_u$:用户 $u$ 的隐向量($k$ 维)
- $q_i$:物品 $i$ 的隐向量($k$ 维)
3.2 优化目标函数
$$\min_{p_*, q_*, b_*} \sum_{(u,i) \in \mathcal{K}} (r_{ui} - \hat{r}_{ui})^2 + \lambda(\|p_u\|^2 + \|q_i\|^2 + b_u^2 + b_i^2)$$
梯度更新公式:
$$ \begin{aligned} p_u &\leftarrow p_u + \gamma[(r_{ui} - \hat{r}_{ui})q_i - \lambda p_u] \\ q_i &\leftarrow q_i + \gamma[(r_{ui} - \hat{r}_{ui})p_u - \lambda q_i] \\ b_u &\leftarrow b_u + \gamma[(r_{ui} - \hat{r}_{ui}) - \lambda b_u] \\ b_i &\leftarrow b_i + \gamma[(r_{ui} - \hat{r}_{ui}) - \lambda b_i] \end{aligned} $$
🧠 四、深度学习推荐模型
4.1 神经协同过滤(NCF)
$$\hat{y}_{ui} = \sigma(\text{MLP}([p_u, q_i]))$$
模型结构:
- Embedding层:将用户和物品映射为稠密向量
- 拼接层:$[p_u, q_i]$ 将两个向量拼接
- 多层感知机:学习复杂的非线性交互
- 输出层:sigmoid激活函数输出预测概率
4.2 Wide & Deep 模型
$$\hat{y} = \sigma(W_{wide}^\top x_{wide} + W_{deep}^\top f_{deep}(x_{deep}))$$
组件说明:
Wide部分:$W_{wide}^\top x_{wide}$
- 处理稀疏特征和组合特征
- 增强模型的记忆能力
Deep部分:$W_{deep}^\top f_{deep}(x_{deep})$
- 深度神经网络处理稠密特征
- 增强模型的泛化能力
📊 五、排序模型(Learning to Rank)
5.1 Pointwise 方法
二分类交叉熵损失:
$$\mathcal{L} = -[y \log \hat{y} + (1-y)\log(1-\hat{y})]$$
均方误差损失:
$$\mathcal{L} = (y - \hat{y})^2$$
5.2 Pairwise 方法(BPR损失)
$$\mathcal{L}_{BPR} = -\sum_{(u,i,j)} \log \sigma(\hat{y}_{ui} - \hat{y}_{uj})$$
公式解析:
- $(u,i,j)$:用户 $u$,正样本 $i$,负样本 $j$
- $\hat{y}_{ui}$:用户对正样本的预测分数
- $\hat{y}_{uj}$:用户对负样本的预测分数
- $\sigma$:sigmoid函数
BPR优化目标:
$$\max \prod_{(u,i,j)} P(i >_u j)$$
即最大化用户 $u$ 更喜欢物品 $i$ 而不是 $j$ 的概率。
5.3 Listwise 方法(Softmax交叉熵)
$$\mathcal{L} = -\sum_{i \in \pi} y_i \log \frac{\exp(\hat{y}_i)}{\sum_{j \in \pi} \exp(\hat{y}_j)}$$
🧾 六、正则化与优化技巧
6.1 正则化方法
L2正则化:
$$R(\theta) = \lambda \|\theta\|^2 = \lambda \sum_i \theta_i^2$$
L1正则化:
$$R(\theta) = \lambda \|\theta\|_1 = \lambda \sum_i |\theta_i|$$
Dropout正则化:
在训练时以概率 $p$ 随机丢弃神经元。
6.2 优化算法
SGD更新:
$$\theta_{t+1} = \theta_t - \eta \nabla_\theta \mathcal{L}(\theta_t)$$
Adam优化器:
$$ \begin{aligned} m_t &= \beta_1 m_{t-1} + (1-\beta_1)g_t \\ v_t &= \beta_2 v_{t-1} + (1-\beta_2)g_t^2 \\ \hat{m}_t &= \frac{m_t}{1-\beta_1^t} \\ \hat{v}_t &= \frac{v_t}{1-\beta_2^t} \\ \theta_{t+1} &= \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \end{aligned} $$
💡 七、重要概念与技巧
7.1 负采样
对于隐式反馈数据,从用户未交互的物品中采样负样本:
$$\mathcal{L} = -\sum_{(u,i) \in \mathcal{K}} \log \sigma(\hat{y}_{ui}) - \sum_{(u,j) \in \mathcal{N}} \log \sigma(1-\hat{y}_{uj})$$
7.2 多目标优化
结合点击率、转化率等多个目标:
$$\mathcal{L} = \alpha \mathcal{L}_{CTR} + \beta \mathcal{L}_{CVR} + \gamma \mathcal{L}_{RANK}$$
7.3 冷启动处理
对于新用户/物品,使用辅助信息:
$$\hat{r}_{ui} = f(p_u, q_i, x_u, x_i)$$
其中 $x_u$, $x_i$ 是用户和物品的辅助特征。
🧠 八、速记表
| 类别 | 核心公式 | 关键词 |
|---|---|---|
| 用户CF | $$\hat{r}_{ui} = \bar{r}_u + \frac{\sum s(u,v)(r_{vi}-\bar{r}_v)}{\sum \lvert s(u,v) \rvert}$$ | 相似用户 |
| 物品CF | $$\hat{r}_{ui} = \bar{r}_i + \frac{\sum s(i,j)(r_{uj}-\bar{r}_j)}{\sum \lvert s(i,j) \rvert}$$ | 相似物品 |
| MF | $$\hat{r}_{ui} = \mu + b_u + b_i + p_u^\top q_i$$ | 隐向量 |
| NCF | $$\hat{y}_{ui} = \sigma(MLP([p_u, q_i]))$$ | 神经网络 |
| BPR | $$\mathcal{L} = -\log\sigma(\hat{y}_{ui}-\hat{y}_{uj})$$ | 排序损失 |