推荐那点事儿

当前推荐场景:

​ 当前针对与商品/音乐的推荐系统,主要研究是Learning to Rank 和 Rating Prediction,即推荐Top-N item和用户打分估计。
当然还有其他的方面,如广告点击率预估(CTR),兴趣点估计(POI,基于地理位置),股票预估(使用点过程(Point Processes)),新闻推荐(结合topic model、context)等。

推荐算法的分类:

依据推荐结果是否因人而异:主要分为大众化推荐和个性化推荐

依据推荐方法的不同

1.基于人口统计学的推荐 (Demographic-based Recommendation)

2.基于规则的推荐 (Rule-based Recommendation)

3.基于内容的推荐 (Content-based Recommendation)

4.基于协同过滤的推荐 (Collaborative Filtering-based Recommendation)

5.混合型推荐系统 (Hybrid Recommendation)

协同过滤的种类:

根据用户-物品的打分矩阵,计算物品的相似度或者用户的相似度,基于相似物品或相似用户进行推荐。
这种推荐是基于向量空间的计算,而非对内容的分析。协同过滤主要分为以下三种:

​ 1.基于用户的协同过滤推荐 (User-based Collaborative Filtering Recommendation)

​ 2.基于项目的协同过滤推荐 (Item-based Collaborative Filtering Recommendation)

​ 3.基于模型的协同过滤推荐 (Model-based Collaborative Filtering Recommendation)

基于模型的协同过滤:

​ a. 用关联规则做协同过滤:Apriori、FP Tree、PrefixSpan算法等;

​ b. 用聚类算法做协同过滤:K-Means、BIRCH、DBSCAN、Spectral Clustering等聚类算法;

​ c. 用分类算法做协同过滤:逻辑回归、朴素贝叶斯算法等;

​ d. 用回归算法做协同过滤:Ridge回归、线性回归、决策树、支持向量机回归等;

​ e. 用矩阵分解做协同过滤:由于传统的SVD要求矩阵不能有缺失数据,但打分矩阵比较稀疏。目前主流的矩阵分解推荐算法有FunkSVD、SVD++,和传统的SVD的最大区别是不再要求将矩分解为UΣV^T的形式,而是得到两个低秩矩阵P^T Q的乘积形式;

​ f. 用神经网络做协同过滤:限制玻尔兹曼机(RBM)、CNN、RNN、Attention等;

​ d. 用图模型做协同过滤:SimRank系列算法和马尔可夫模型算法;

​ g. 用隐语义模型做协同过滤:主要是基于NLP,涉及对用户行为的语义分析来做评分推荐,主要有隐语义分析(LSA)和隐含狄利克雷分布(LDA)等。

​ h. 基于集成学习方法和混合推荐: 梯度提升决策树(Gradient Boosting Decision Tree ,GBDT)等;

矩阵分解(协同过滤)扩展(自己的总结):

​ Limitation:user-item的关系矩阵进行分解得到user和item的latent feature representation,但是受限与user-item pair,item与item之间存在的关联性无法显性的去刻画,所以现在很多算法聚焦于item-item:

1、其主要思想是构建basket或者是session,basket和session中的itemA与itemB同时出现,存在着相似度,而这个相似度可以用SPPMI或者其他数据挖掘中计算相似度的方法计算得到,得到这个相似度Sij后,一种方法:矩阵分解得到的qi·qj==Sij,从而使得qi、qj中也包含了其相似度关系,即添加了item-item的情况;

2、构建一个item graph,采用pagerank算法中random walk思想,求得最后的转移矩阵,item i与item j之间的相似度就可以通过转移概率来刻画,然后再通过qi·qj==Si添加了item-item的情况。这就是现在经常使用的network embdding的方法;

3、……(SorC)