(二)利用用户行为数据 -- 3 隐语义模型

3. 隐语义模型

3.1 基础算法

隐语义模型LFM(latent factor model) 的核心思想是,通过隐含特征(latent factor) 联系用户兴趣和物品。

简单来说,可以对物品的兴趣进行分类,然后对于某个用户,先得到他的兴趣分类,再从分类中挑选他可能喜欢的物品。


人工 vs 隐含语义分析技术

这种基于兴趣分类的方法大概需要解决以下3个问题:
(1) 如何给物品进行分类;
(2) 如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度;
(3) 对于一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在一个类中的权重。


一种简单的解决方案是找编辑给物品分类,但该方案存在多种缺点。
隐含语义分析技术(latent variable analysis) ,采取基于用户行为统计的自动聚类,较好地弥补了上述方案的缺陷。具体阐述如下:

(1) 编辑的意见不能代表各种用户的意见,但隐含语义分析技术的分类来自对用户行为的统计, 代表了用户对物品分类的看法。
隐含语义分析技术和ItemCF在物品分类方面的思想类似,如果两个物品被很多用户同时喜欢,那么这两个物品就很有可能属于同一个类。

(2) 编辑很难控制分类的粒度,但隐含语义分析技术允许我们指定最终有多少个分类,这个数字越大,分类的粒度就会越细,反之分类粒度就越粗。

(3) 编辑很难给一个物品多个分类,但隐含语义分析技术会计算出物品属于每个类的权重,因此每个物品都不是硬性地被分到某一个类中。

(4) 编辑很难给出多维度的分类,但隐含语义分析技术给出的每个分类都不是同一个维度的,它是基于用户的共同兴趣计算出来的, 如果用户的共同兴趣是某一个维度, 那么LFM给出的类也是相同的维度。

(5) 编辑很难决定一个物品在某一个分类中的权重,但隐含语义分析技术可以通过统计用户行为决定物品在每个类中的权重,如果喜欢某个类的用户都会喜欢某个物品,那么这个物品在这个类中的权重就可能比较高。


用户对物品的兴趣

LFM计算用户u对物品i的兴趣的公式如下:

P r e f e r e n c e ( u , i ) = r u i = p u T q i = ∑ f = 1 F p u , k q i , k Preference(u, i)=r_{ui}=p_u^Tq_i=\sum_{f=1}^{F} p_{u,k}q_{i,k} Preference(u,i)=rui=puTqi=f=1Fpu,kqi,k

其中, p u , k p_{u,k} pu,k q i , k q_{i,k} qi,k是模型的参数。 p u , k p_{u,k} pu,k度量了用户 u u u的兴趣和第 k k k个隐类的关系,而 q i , k q_{i,k} qi,k度量了第 k k k个隐类和物品 i i i之间的关系。 F F F为隐类的数量。


生成负样本

本章主要讨论的是隐性反馈数据集,其特点是:
只有正样本(用户喜欢什么物品),而没有负样本(用户对什么物品不感兴趣)。

由此,在隐性反馈数据集上应用LFM解决TopN推荐的第一个关键问题就是如何给每个用户生成负样本。

对负样本采样时需要遵循以下两个原则:
(1) 对每个用户,要保证正负样本的平衡(数目相似)。
(2) 对每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品。
一般认为,很热门而用户却没有行为更加代表用户对这个物品不感兴趣。因为对于冷门的物品,用户可能是压根没在网站中发现这个物品,所以谈不上是否感兴趣。


算法思想

经过采样,可以得到一个用户-物品集 K = { ( u , i ) } K=\{(u, i)\} K={ (u,i)}。其中,若 ( u , i ) (u, i) (u,i)是正样本,则有 r u i = 1 r_{ui}=1 rui=1,否则有 r u i = 0 r_{ui}=0 rui=0

然后,需要优化以下的损失函数来找到最合适的参数 p p p q q q

C = ∑ ( u , i ) ∈ K ( r u i − r ^ u i ) 2 = ∑ ( u , i ) ∈ K ( r u i − ∑ f = 1 F p u , k q i , k ) 2 + λ ∣ ∣ p u ∣ ∣ 2 + λ ∣ ∣ q i ∣ ∣ 2 C=\sum_{(u,i) \in K} (r_{ui}-\hat{r}_{ui})^2=\sum_{(u,i) \in K} \left(r_{ui}-\sum_{f=1}^{F} p_{u,k}q_{i,k} \right)^2 + \lambda ||p_{u}||^2 + \lambda||q_{i}||^2 C=(u,i)K(ruir^ui)2=(u,i)Kruif=1Fpu,kqi,k2+λpu2+λqi2

其中, λ ∣ ∣ p u ∣ ∣ 2 + λ ∣ ∣ q i ∣ ∣ 2 \lambda ||p_{u}||^2 + \lambda||q_{i}||^2 λpu2+λqi2是用来防止过拟合的正则化项,可以通过实验获得。


要最小化上述的损失函数,可以利用随机梯度下降法,即,首先通过求参数的偏导数找到最速下降方向,然后通过迭代法不断地优化参数。

优化方法具体数学推导,如下:

(1) 分别对损失函数中的两组参数 p u , k p_{u,k} pu,k q i , k q_{i,k} qi,k求偏导数,可以得到:

∂ C ∂ p u , k = − 2 q i , k + 2 λ p u , k ∂ C ∂ q i , k = − 2 p u , k + 2 λ q i , k \frac {\partial{C}}{\partial{p_{u,k}}}=-2q_{i,k}+2\lambda p_{u,k} \\ \text{} \\ \frac {\partial{C}}{\partial{q_{i,k}}}=-2p_{u,k}+2\lambda q_{i,k} pu,kC=2qi,k+2λpu,kqi,kC=2pu,k+2λqi,k

(2) 将参数沿着最速下降方向向前推进,可得以下递推公式:

p u , k = p u , k + α ( q i , k − λ p u , k ) q i , k = q i , k + α ( p u , k − λ q i , k ) p_{u,k}=p_{u,k}+\alpha(q_{i,k}-\lambda p_{u,k}) \\ \text{} \\ q_{i,k}=q_{i,k}+\alpha(p_{u,k}-\lambda q_{i,k}) pu,k=pu,k+α(qi,kλpu,k)qi,k=qi,k+α(pu,kλqi,k)

其中, α α α是学习速率(learning rate) , 它的选取需要通过反复实验获得。


重要参数

在LFM中, 重要的参数有以下4个:

  • 隐特征的个数 F F F
  • 学习速率 α \alpha α
  • 正则化参数 λ \lambda λ
  • 负样本/正样本比例 r a t i o ratio ratio

其中, r a t i o ratio ratio参数对LFM的性能影响最大。

随着负样本的数目增加,
LFM的精确率和召回率有明显提高;
覆盖率不断降低,推荐结果的流行度不断增加( r a t i o ratio ratio参数控制了推荐算法发掘长尾的能力)。



3.2 缺点

LFM模型在实际使用中存在一个困难:很难实现实时的推荐。

经典的LFM模型每次训练时都需要扫描所有的用户行为记录,这样才能计算出用户隐类向量 p u p_u pu和物品隐类向量 q i q_i qi
而且LFM的训练需要在用户行为记录上反复迭代才能获得比较好的性能。

因此, LFM的每次训练都很耗时,一般在实际应用中只能每天训练一次,并且计算出所有用户的推荐结果。
由此,LFM模型不能因为用户行为的变化实时地调整推荐结果来满足用户最近的行为 。



参考

《推荐系统实践》—— 2.5 隐语义模型

猜你喜欢

转载自blog.csdn.net/m0_38111466/article/details/108310348
今日推荐