推荐系统概述
在信息量有限的时代,用户主要通过分类网站获取所需信息。随着互联网数据爆炸式增长,用户往往难以明确表达搜索意图。推荐系统应运而生,通过分析用户历史行为和内容特征,预测用户兴趣并主动推送个性化内容,从而解决信息过载问题。
基于内容的推荐系统
基于内容的推荐(Content-Based Filtering)核心思想是利用物品本身的属性来描述物品,并根据用户对物品的历史偏好来预测其对未评分物品的喜好。
矩阵表示
假设我们有以下矩阵关系:
- 电影内容矩阵 X:每一行代表一部电影的特征向量(如动作、喜剧等类型的权重)。
- 用户喜好矩阵 θ:每一行代表一个用户对不同电影特征的偏好程度。
- 电影评分表 R:记录用户对电影的已知评分。
理想情况下,满足公式: $$X \cdot \theta^T = R$$
求解用户喜好矩阵 θ
为了求解用户喜好矩阵 θ,我们需要最小化代价函数 J(θ)。该函数衡量预测评分与实际评分之间的误差,并加入正则化项防止过拟合。
代价函数公式如下: $$J(\theta^{(i)}) = \frac{1}{2} \sum_{j:r(i,j)=1} ((\theta^{(i)})^T x^{(j)} - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{k=1}^{n} (\theta_k^{(i)})^2$$
其中:
- $r(i,j)=1$ 表示用户 i 对电影 j 有评分。
- $y^{(i,j)}$ 是实际评分。
- $\lambda$ 是正则化参数。
优缺点分析
优点:
- 不存在商品冷启动问题(新商品只要有内容特征即可被推荐)。
- 可解释性强,能明确告知用户推荐的商品包含哪些属性。
缺点:
- 需要对内容进行透彻的分析和特征提取。
- 推荐结果缺乏惊喜感,容易陷入信息茧房。
- 存在用户冷启动问题(新用户无历史行为数据)。
基于协同过滤的推荐系统
协同过滤(Collaborative Filtering)不依赖物品内容,而是利用用户群体行为数据。通过矩阵分解技术,同时求解电影内容矩阵 X 和用户喜好矩阵 θ。
联合优化
当同时优化 X 和 θ 时,代价函数合并为: $$J(X, \theta) = \frac{1}{2} \sum_{(i,j):r(i,j)=1} ((\theta^{(i)})^T x^{(j)} - y^{(i,j)})^2 + \frac{\lambda}{2} \sum_{i=1}^{m} \sum_{k=1}^{n} (\theta_k^{(i)})^2 + \frac{\lambda}{2} \sum_{j=1}^{n} \sum_{k=1}^{n} (x_k^{(j)})^2$$
目标是最小化该代价函数。通常采用随机梯度下降(SGD)或交替最小二乘法(ALS)进行求解。初始化 X 和 θ 为随机小值,迭代更新直至收敛。
协同过滤的分类
1. 基于 Item 的协同过滤
原理: 计算物品之间的相似度,如果用户喜欢物品 A,且物品 B 与 A 相似,则推荐物品 B。
相似度度量: 常用余弦相似度(Cosine Similarity)。 $$similarity(i, j) = \frac{x^{(i)} \cdot x^{(j)}}{||x^{(i)}|| \cdot ||x^{(j)}||}$$
预测评分: $$\hat{y}^{(i,j)} = \frac{\sum_{k \in N(i)} similarity(i, k) \cdot y^{(i,k)}}{\sum_{k \in N(i)} |similarity(i, k)|}$$ 其中 $N(i)$ 是与物品 i 最相似的 Top-K 个物品集合。
2. 基于 User 的协同过滤
原理: 找到与目标用户相似的其他用户,将这些相似用户喜欢的物品推荐给目标用户。
相似度度量: 同样使用余弦相似度或皮尔逊相关系数。 $$similarity(u, v) = \frac{(\theta^{(u)} - \bar{\theta}^{(u)}) \cdot (\theta^{(v)} - \bar{\theta}^{(v)})}{||\theta^{(u)} - \bar{\theta}^{(u)}|| \cdot ||\theta^{(v)} - \bar{\theta}^{(v)}||}$$


