隐语义模型LFM和LSI,LDA,Topic Model其实都属于隐含语义分析技术,是一类概念,他们在本质上是相通的,都是找出潜在的主题或分类。这些技术一开始都是在文本挖掘领域中提出来的,近些年它们也被不断应用到其他领域中,并得到了不错的应用效果。比如,在推荐系统中它能够基于用户的行为对item进行自动聚类,也就是把item划分到不同类别/主题,这些主题/类别可以理解为用户的兴趣。
对于一个用户来说,他们可能有不同的兴趣。就以作者举的豆瓣书单的例子来说,用户A会关注数学,历史,计算机方面的书,用户B喜欢机器学习,编程语言,离散数学方面的书, 用户C喜欢大师Knuth, Jiawei Han等人的著作。那我们在推荐的时候,肯定是向用户推荐他感兴趣的类别下的图书。那么前提是我们要对所有item(图书)进行分类。那如何分呢?大家注意到没有,分类标准这个东西是因人而异的,每个用户的想法都不一样。拿B用户来说,他喜欢的三个类别其实都可以算作是计算机方面的书籍,也就是说B的分类粒度要比A小;拿离散数学来讲,他既可以算作数学,也可当做计算机方面的类别,也就是说有些item不能简单的将其划归到确定的单一类别;拿C用户来说,他倾向的是书的作者,只看某几个特定作者的书,那么跟A,B相比它的分类角度就完全不同了。
对于一个用户,首先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品。这里要解决3个问题:
- 如何给物品分类?
- 如何确定用户对哪些类感兴趣,以及感兴趣的程度?
- 对于一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在该类中的权重?
LFM解决这些问题的方法:
- 根据用户的行为实现物品的自动聚类。如果2个物品被很多用户同时喜欢,那么他们属于一个隐类的概率很大。
- 用户的兴趣通过用户的行为统计得到。
- 在一个隐类中,如果一个物品被很多用户喜欢,那么它必定权重较大。
对于一个给定的用户行为数据集(数据集包含的是所有的user, 所有的item,以及每个user有过行为的item列表),使用LFM对其建模后,我们可以得到如下图所示的模型:(假设数据集中有3个user, 4个item, LFM建模的分类数为4)
其中,R矩阵是user-item兴趣度矩阵,矩阵值Rij表示的是user i 对item j的兴趣度;P是user-class兴趣度矩阵,Pij表示user i对class j的兴趣度;Q是item-class权重矩阵,Qij表示class i中item j的权重。
LFM通过如下公式计算用户u对物品i的兴趣度:
该公式中,
,
是LFM模型的参数,表示矩阵P,Q中的值,需要估计它们的值。
要估计参数值,首先必须要有一个训练样本集,针对每个用户,选择用户的行为数据集作为正样本,正样本中都是用户发生过行为(喜欢)的物品,设
=