几个隐语义模型

转载自https://blog.csdn.net/winone361/article/details/49491709 

协同过滤Collaborative Filtering (CF)算法是推荐算法的一个大分支,基本思想是推荐相似的物品,或者推荐相似用户(隐式或者显式)评分过的物品。CF方法主要可以分为两类:基于邻域和基于隐语义。

①基于邻域的方法利用“两个用户共同评分过的物品”(user-based)或者“共同评价两个物品的用户”(item-based)分别计算用户间的相似度和物品间的相似度。而相似度的计算有余弦相似度,皮尔逊相似度和一种被称为“Conditional Probability-Based“的Similarity[4]。[4]中指出,第三个方法的弊端在于由于每个物品(人)邻域的大小不同,流行物品或评分多的用户会引起问题。皮尔逊系数与余弦相似度的不同在于,皮尔逊系数还能捕捉负关系。因此,实际中一般采用带权的皮尔逊相似度(P. 2) [2]。但基于邻域方法的缺点是:由于实际用户评分的数据是十分稀疏,用户之间可能根本没有相同的评论;而且用启发式的方法很难考虑全面用户和物品之间的所有关系。具体可以参看项亮的《推荐系统实践》。

By the way,item-based模型较user-based模型有一下优点:更好的精确度,更容易对推荐产生解释,参数更少(因为用户一般比物品多)。另外,[3]中指出,在user-based模型中集成隐式评分矩阵的效果没有在item-based模型中的好。

②基于隐语义的方法则不依赖于共同评分。其基本思想是将用户和物品分别映射到某种真实含义未知的feature向量。用户feature代表用户对不同类别电影的喜好程度(如:动作片5,惊悚片5),物品feature代表电影中大致属于哪类电影(如:爱情片3,喜剧片5)。然后通过两个feature向量的内积来判断用户对一个物品的喜好程度。虽然这个方法不要求共同评分,但推荐系统还是面临很大的数据稀疏问题。

下面具体介绍几个隐语义模型。

Probabilistic Matrix Factorization

[1]中作者提出了Probabilistic Matrix Factorization,它与一般FM十分类似。它假设评分的真实值和预测值间的误差是服从高斯分布的,并假设不同评分之间是相互独立的(即并非采用混合高斯模型)。同时,用户特征向量U和物品特征向量V都加上了zero-mean spherical Gaussian priors。为了自动设置Hyperparameters,该模型为Hyperparameters也引入了priors。这个模型被作者成为”PMF”。进一步,作者提出了”Constrained PMF”。它在用户的特征向量上做了限制:看的电影类似的用户,他们的特征向量也应该是类似的。据论文显示,Constrained PMF在用户评分很少的情况下(20-)能取得显著高于其他模型的performance。文章还指出,单单知道用户评论了哪些物品(但不知道其评分,相当于0-1评分)也能得到比推荐average rating高的performance。通过混合,作者在Netflix数据集上得到的最高performance是0.8861。不过他最好单模型Constrained PMF只有0.9016。 

Asymmetric-SVD

[2] 是Koren 2008年的文章,作者首先提出改良的item-based CF模型。传统的neighbourhood定义是user-specific的:假设求用户u对物品i的评分,那么物品i的neighbourhood定义为”用户u评过分的物品中与物品i最相似的前k个物品”。而新模型中,neighbourhood定义为A与B的交集(其中A是用户u评过分的物品,B是与i最相似的前k个物品)。有了全局的neighbourhood,就可以使用机器学习的方法来训练物品相似度。接着作者指出将相似度看成一种增益,如此一来集成隐式评分也是自然而然的事情(P. 4)。 其中,作者还对累计的增益值做归一化,因为用户的评分数有多有少。然后,使用矩阵分解和使用物品表示用户的思想,作者提出了“Asymmetric-SVD”。使用物品表示用户的好处有两个好处:①能处理新来的用户,因为所有参数都是基于物品的。②一般来说用户数要大于物品数,因此这样还能减少参数个数。值得一提的是Asymmetric-SVD既保留了基于领域方法的特点,又能获得不错的performance。Koren指出,他在竞赛中学到的一个lesson是隐语义模型与邻域模型捕捉的是很不一样的两类关系:其中隐语义模型善于捕捉物品间的整体关系,而领域模型则擅长捕捉个别之间的强联系。最后,Asymmetric-SVD获得的RMSE是0.9000

SVD++

同样是在[2]中,作者学到的另一个lesson是:应集成用户不同的输入。于是,他在传统的FM模型里加入了隐式评分信息,称之为SVD++。它取得了0.8911的成绩。

PS. 其实[2]中,用物品来表示用户就已经实现了[1]中constrain的效果。

参考文献:

[1] Probabilistic Matrix Factorization

[2] Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model

[3] Factor in the Neighbors Scalable and Accurate Collaborative Filtering

[4] Evaluation of Item-Based Top-N Recommendation Algorithms
--------------------- 
作者:雷打不动1510 
来源:CSDN 
原文:https://blog.csdn.net/winone361/article/details/49491709 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/sssmmm5620141/article/details/88653102