推荐系统基础 - 1
知识点
- 推荐系统基本思想:
- 推荐系统的数据分析:
- 要推荐物品或内容的元数据:如关键字,分类标签,基因描述等
- 系统用户的基本信息:如性别,年龄,兴趣标签等
- 用户的行为数据:可以转化为对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。这些用户的偏好信息可以分为两类:
- 显示的用户反馈:这类是用户在网站上自然浏览或者使用网站以外,显示的提供反馈信息,例如用户对物体的评分,或者对物体的评论。
- 隐式的用户反馈:这类是用户在使用网站时产生的数据,隐式的反应了用户对物品的喜好,如用户购买了某产品,用户查看了某物品的信息等。
- 推荐分类:
- 根据实时性分类:
- 离线推荐
- 实时推荐
- 根据是否个性化分类:
- 基于统计的推荐
- 个性化推荐
- 根据推荐原则分类:
- 基于相似度推荐
- 基于知识的推荐
- 基于模型的推荐
- 根据数据源分类
- 基于人口统计学的推荐
- 基于内容的推荐
- 基于协同过滤的推荐
- 根据实时性分类:
- 相关算法
-
基于人口统计学的推荐算法
-
基于内容的推荐算法
-
协同过滤
- 基于近邻的协同过滤:
- 基于用户(User - CF)
- 基于物品(Item - CF)
- 基于模型的协同过滤:
- 奇异值分解:SVD
- 潜在语义分析:LSA
- 支撑向量机:SVM
- 基于近邻的协同过滤:
-
混合推荐
- 加权混合:用线性公式将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。
- 切换混合:切换的混合方式,就是允许在不同的情况下,选择最为合算的推荐机制计算推荐。
- 分区混合:采用多种混合机制,并将不同的推荐结果分不同的区显示给用户
- 分层混合:采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。
-
- 推荐系统评测
- 一个好的推荐系统:
让用户更快更好的获取到自己需要的内容,让内容更快更好地推送到喜欢它的用户手中,让网站更有效的保留用户资源。 - 实验方法:
- 通过体制系统获取用户行为数据,并按照一定格式生成一个标准的数据集。
- 将数据集按照一定的规则分为训练集和测试集。
- 在训练集上训练用户兴趣模型,在测试集上进行预测。
- 通过事先定义的离线指标评测算法在测试集上的预测结果。
- 用户问卷调查:
找到靠谱的真实用户,让他们在需要测试的系统上做一些任务,记录他们的行为,并让他们回答一些问题,进行一些分析 - 在线实验:
AB测试。行为数据收集过程会比较漫长。
- 评测指标:
- 预测准确度
- 用户满意度
- 覆盖率
- 多样性
- 惊喜度
- 信任度
- 实时性
- 健壮性
- 商业目标
- 评分预测:RMSE或者MAE。
- Top-N推荐:精确率和召回率。
- 用户画像(User Profiling)
- 含义:用户信息标签化的过程。
- 过程:企业通过收集与分析消费者的社会属性,生活习惯,消费行为等主要信息的数据后,完美抽象出一个用户的商业全貌,是企业应用大数据的基本方式。
- 基于内容推荐系统的高层次结构
- 推荐系统常见反馈数据
- 基于UGC的推荐
算法:
- 统计每个用户最常用的标签
- 对于每个标签,统计被打过这个标签次数最多的商品
- 对于每个用户,首先找到他的常用标签,然后找到具有这些标签的最热门的商品,推荐给他
- 所以用户u对商品i的兴趣公式为
P ( u , i ) = ∑ b n u , b n b , i P(u,i) = \sum_{b}n_{u,b}n_{b,i} P(u,i)=b∑nu,bnb,i
其中, n u , b n_{u,b} nu,b是用户u打过b标签的次数, n b , i n_{b,i} nb,i是物品i被打过标签b的次数 - TF-IDF对UGC的改进:
P ( u , i ) = ∑ b n u , b log ( 1 + n b ( u ) ) n b , i log ( 1 + n i ( u ) ) P(u,i) = \sum_{b}\frac{n_{u,b}}{\log(1+n_{b}^{(u)})}\frac{n_{b,i}}{\log(1+n_{i}^{(u)})} P(u,i)=b∑log(1+nb(u))nu,blog(1+ni(u))nb,i
其中 n b ( u ) n_{b}^{(u)} nb(u)是记录了标签b被多少个不同的用户使用过, n i ( u ) n_{i}^{(u)} ni(u)记录了物品i被多少个不同的用户打过标签。
- LFM(Latent Factor Model隐语义模型)降维方法
-
假设用户评分矩阵为R,现有m个员工,n个物品。
-
我们想要发现k个隐类,我们的任务就是找到两个矩阵P和Q,使这两个矩阵的乘积近似等于R,即将用户物品评分矩阵R分解成两个低维矩阵相乘。
-
求解P, Q的损失函数
平方损失函数加上惩罚参数:
C = ∑ ( u , i ) ∈ R 0 ( R u i − P u T ⋅ Q i ) 2 + λ ∑ u ∣ ∣ P u ∣ ∣ 2 + λ ∑ i ∣ ∣ Q i ∣ ∣ 2 C= \sum_{(u,i)\in R_0}(R_{ui}-P_{u}^{T}\cdot Q_{i})^2+\lambda \sum_{u} ||P_{u}||_2+\lambda\sum_{i}||Q_{i}||_2 C=(u,i)∈R0∑(Rui−PuT⋅Qi)2+λu∑∣∣Pu∣∣2+λi∑∣∣Qi∣∣2 -
解法一 Alternating Least Square(ALS):
主要思想是由于P,Q都未知,通过矩阵乘法耦合在一起,为了使它们解藕,可以先固定Q,把P当作变量,通过损失函数最小化求出P,这就是一个经典的最小二乘问题,再反过来固定求得的P,把Q当作变量,求解Q。交替执行,直到误差满足阈值条件,或者达到迭代上限。 -
固定Q求解P的过程:
L u ( P u ) = ∑ ( u , i ) ∈ R 0 ( R u i − P u T ⋅ Q i ) 2 + λ ∑ u ∣ ∣ P u ∣ ∣ 2 L_{u}(P_{u})=\sum_{(u,i)\in R_0}(R_{ui}-P_{u}^{T}\cdot Q_{i})^2+\lambda \sum_{u} ||P_{u}||_2 Lu(Pu)=(u,i)∈R0∑(Rui−PuT⋅Qi)2+λu∑∣∣Pu∣∣2
∂ L u ∂ P u = ∑ i 2 ( P u T Q i − R u i ) Q i + 2 λ P u = 2 ( ∑ i P u T Q i Q i − ∑ i R u i Q i + λ P u ) \begin{aligned} \frac{\partial L_{u}}{\partial P_{u}} &=\sum_{i}2(P_{u}^{T}Q_{i}-R_{ui})Q_{i}+2\lambda P_{u}\\ &=2(\sum_{i}P_{u}^{T}Q_{i}Q_{i}-\sum_{i}R_{ui}Q_{i}+\lambda P_{u}) \end{aligned} ∂Pu∂Lu=i∑2(PuTQi−Rui)Qi+2λPu=2(i∑PuTQiQi−i∑RuiQi+λPu)
可以求得:
P u = ( Q Q T + λ I ) − 1 Q R u P_{u} = (QQ^{T}+\lambda I)^{-1}QR_{u} Pu=(QQT+λI)−1QRu
同理:
Q i = ( P P T + λ I ) − 1 P R i Q_{i} = (PP^{T}+\lambda I)^{-1}PR_{i} Qi=(PPT+λI)−1PRi -
解法二:梯度下降法
P u = P u − α ∗ ∂ L u ∂ P u = P u − α ⋅ [ ∑ i 2 ( P u T Q i − R u i ) Q i + 2 λ P u ] \begin{aligned} P_{u} &= P_{u}-\alpha * \frac{\partial L_{u}}{\partial P_{u}} \\ &=P_{u} - \alpha \cdot [\sum_{i}2(P_{u}^{T}Q_{i}-R_{ui})Q_{i}+2\lambda P_{u}] \end{aligned} Pu=Pu−α∗∂Pu∂Lu=Pu−α⋅[i∑2(PuTQi−Rui)Qi+2λPu]
同理:
Q i = Q i − α ⋅ [ ∑ u 2 ( P u T Q i − R u i ) P u + 2 λ Q i ] Q_{i} = Q_{i} - \alpha \cdot [\sum_{u}2(P_{u}^{T}Q_{i}-R_{ui})P_{u}+2\lambda Q_{i}] Qi=Qi−α⋅[u∑2(PuTQi−Rui)Pu+2λQi]