利用用户行为数据
隐语义模型
基础算法:
pLSA
LDA
隐含类别模型(latent class model)
隐含主题模型(latent topic model)
矩阵分解(matrix factorization)
LFM隐含语义分析技术
作用:
在推荐系统中,LFM可以实现通过用户行为将物品聚类。
推导过程:
用户u对物品i的兴趣公式(假设函数):
pu,k 度量了用户u的兴趣和第k个隐类的关系(可以理解为喜欢的权重),
qi,k 度量了第k个隐类和物品i之间的关系(可以理解为归属的权重)。
二者相乘表示用户、隐类、物品三者之间的累计权重
(用户喜欢这个类别,这个物品属于这个类别,所以用户喜欢这个物品,并且这种喜欢是带有“程度”的)。
求和的意义:
用户喜欢类别的每个权重,
物品属于类别的权重,
这样可以算出这个用户综合下来有多么喜欢该物品。
何处体现分解:
用户喜欢每个类别的程度,以及每个物品本身具有的类别属性。
综合下来决定这个用户对这个物品有多喜欢。
最终结果:
每一个用户都有一个对类别的“喜欢”矩阵。
每个物品有一个一个对类别的“归属”矩阵。
损失函数:
λ项是防止过拟合的正则化项。
参数与性能(准确率和召回率):
负样本/正样本比例 ratio
隐特征的个数F;
学习速率alpha;
正则化参数lambda;
与协同过滤比较:
数据集非常稀疏时,LFM的性能会明显下降,
甚至不如UserCF和ItemCF。
理论区别:
LFM是一个学习的过程,有模型。
协同过滤是基于邻域的统计,没有模型和学习过程。
空间复杂度:
协同过滤中用户相关表O(M*M)的空间。
物品相关表,则需要O(N*N)的空间。
LFM,F个隐类,那么它需要的存储空间是O(F*(M+N))
相比协同过滤节省很多空间。
在线实时推荐:
用户有新行为时,比较协同过滤和LFM是否能及时推荐:
LFM需要重新计算,重新缓存
因为维护了用户和物品的相似度列表,
协同过滤可以在推荐给用户其它物品的时候,
可以快速更新待推荐列表。更新的时候带上本次的评分。
负反馈数据生成:
对于一个用户,采样负反馈数据时,方法从好到坏:
1、从没有过行为的物品中采样出一些物品作为负样本,
但采样时,保证每个用户的正负样本数目相当。
2、从他没有过行为的物品中均匀采样出一些物品作为负样本
3、从他没有过行为的物品中采样出一些物品作为负样本,但采样时,偏重
实际中负反馈数据生成的原则:
对每个用户,要保证正负样本的平衡(数目相似)。
对每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品。
负反馈数据生成原因:
很热门而用户却没有行为更加代表用户对这个物品不感兴趣。
因为对于冷门的物 品,用户可能是压根没在网站中发现这个物品,所以谈不上是否感兴趣
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。