协同过滤算法2019-05-17

来源https://www.cnblogs.com/pinard/p/6349233.html

推荐算法分为:

1)基于内容的推荐

2)协调过滤推荐

3)混合推荐

4)基于规则的推荐

5)基于人口统计信息的推荐

协同过滤:

一般来说,协同过滤推荐分为三种类型。第一种是基于用户(user-based)的协同过滤,第二种是基于项目(item-based)的协同过滤,第三种是基于模型(model based)的协同过滤

基于模型的协同过滤:

    基于模型的协同过滤作为目前最主流的协同过滤类型,主流的方法可以分为:用关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型来解决。

用关联算法做协同过滤:常用的关联推荐算法有Apriori,FP Tree和PrefixSpan

用聚类算法做协同过滤:常用的聚类推荐算法有K-Means, BIRCH, DBSCAN和谱聚类

用分类算法做协同过滤:常见的分类推荐算法有逻辑回归和朴素贝叶斯,两者的特点是解释性很强。

用回归算法做协同过滤:用回归算法做协同过滤比分类算法看起来更加的自然,常用的回归推荐算法有Ridge回归,回归树和支持向量回归

用矩阵分解做协同过滤:目前主流的矩阵分解推荐算法主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++

用神经网络做协同过滤:目前比较主流的用两层神经网络来做推荐算法的是限制玻尔兹曼机(RBM)。在目前的Netflix算法比赛中, RBM算法的表现很牛。当然如果用深层的神经网络来做协同过滤应该会更好。

用图模型做协同过滤:用图模型做协同过滤,则将用户之间的相似度放到了一个图模型里面去考虑,常用的算法是SimRank系列算法和马尔科夫模型算法。

用隐语义模型做协同过滤:隐语义模型主要是基于NLP的,涉及到对用户行为的语义分析来做评分推荐,主要方法有隐性语义分析LSA和隐含狄利克雷分布LDA

协同过滤的一些新方向:

a) 基于集成学习的方法和混合推荐:这个和混合推荐也靠在一起了。由于集成学习的成熟,在推荐算法上也有较好的表现。一个可能取代逻辑回归的算法是GBDT。目前GBDT在很多算法比赛都有好的表现,而有工业级的并行化实现类库。

b)基于矩阵分解的方法:矩阵分解,由于方法简单,一直受到青睐。目前开始渐渐流行的矩阵分解方法有分解机(Factorization Machine)和张量分解(Tensor Factorization)。

c) 基于深度学习的方法:目前两层的神经网络RBM都已经有非常好的推荐算法效果,而随着深度学习和多层神经网络的兴起,以后可能推荐算法就是深度学习的天下了

协同过滤也有些难以避免的难题,比如令人头疼的“冷启动”问题,我们没有新用户任何数据的时候,无法较好的为新用户推荐物品。同时也没有考虑情景的差异,比如根据用户所在的场景和用户当前的情绪。当然,也无法得到一些小众的独特喜好,这块是基于内容的推荐比较擅长的。 

你可能感兴趣的:(协同过滤算法2019-05-17)