协同过滤算法主要包括基于用户的协同过滤(User-Based CF)、基于物品的协同过滤(Item-Based CF)、隐语义模型(Latent Factor Model)等。LFM(latent factor model)隐语义模型从诞生到今天产生了很多著名的模型和方法。其实该算法最早在文本挖掘领域被提出,用于找到文本的隐含语义。相关的算法有LSI、pLSA、LDA和Topic Model。推荐系统的用户行为分为显性反馈和隐性反馈。LFM在显性反馈数据(也就是评分数据)上解决评分预测问题并达到了很好的精度。本文将以LFM为例介绍隐含语义分析技术在推荐系统中的应用。
基本思想
以电影推荐为例,每个用户都有自己喜欢看的电影,比如用户A喜欢含有悬疑、动漫、娱乐元素类型的电影。而如果电影1也带有这些标签,就将该电影推荐给用户A。每个人对不同元素类型的偏好不同,每个电影包含的元素也不同。所以我们用矩阵记录这些数据:用户潜在因子矩阵,电影潜在矩阵。
用户潜在因子矩阵
表示不同用户对于不同元素的偏好程度(数值越大代表越喜欢)。
用户\因子 | 悬疑 | 动漫 | 娱乐 |
---|---|---|---|
用户A | 0.7 | 0.6 | 0.1 |
用户B | 0.8 | 0.4 | 0.6 |
用户C | 0.5 | 0.6 | 0.3 |
电影潜在因子矩阵
表示每种视频包含各种元素的成分
电影\因子 | 悬疑 | 动漫 | 娱乐 |
---|---|---|---|
电影1 | 0.8 | 0.4 | 0.2 |
电影2 | 0.6 | 0 | 0.7 |
电影3 | 0.5 | 0.7 | 0.6 |
通过这两个矩阵我们可以计算用户A对电影1的喜欢程度:
0.7 ∗ 0.8 + 0.6 ∗ 0.4 + 0.2 ∗ 0.1 = 0.82 0.7*0.8+0.6*0.4+0.2*0.1 = 0.82 0.7∗0.8+0.6∗0.4+0.2∗0.1=0.82
所以,可以得到下面的用户电影推荐表格
用户\电影 | 电影1 | 电影2 | 电影3 |
---|---|---|---|
用户A | 0.82 | 0.49 | 0.83 |
用户B | 0.92 | 0.9 | 1.04 |
用户C | 0.76 | 0.51 | 0.85 |
所以,我们给用户A推荐电影3,给用户B、C推荐电影3。
数学原理
上述推荐过程的关键是如何确定潜在因子矩阵。设用户潜在因子矩阵为P, p i j p_{ij} pij表示用户 i i i 对 因子 j j j 的兴趣度,电影潜在因子矩阵为Q, q i j q_{ij} qij表示物品 i i i 对 因子 j j j 的权重,权重越高越能代表该类别。
LFM通过如下公式计算用户u对物品i的兴趣:
P r e f e r e n c e ( u , i ) = P Q T = ∑ k = 1 k p u k q i k Preference(u,i) = P Q^T = \sum_{k=1}^k p_{uk} q_{ik} Preference(u,i)=PQT=