在推荐系统的系列笔记中预计将会简要记录这些:
一些推荐系统的基础应用:
- Content Based Recommendation System 基于内容的推荐系统
- Collaborative Filtering 协同过滤
- Low Rank Matrix Factorization 低阶矩阵分解
以及一些更加精确不过更为复杂的模型:
- LFM (Latent Factor Model) 隐因子模型
- SVD (Singular Value Decomposition) 奇异值分解 / SVD++
- Factorization Machines 因子分解机
- Field-aware Factorization Machine (FFM) 场感知分解机
- Group Lasso (least absolute shrinkage and selection operation) 分组最小角回归算法
综述
现在常见的推荐系统可以分为以下两种形式:
- Rating prediction 评分预测
- Item recommendation (基于历史记录的) 物品推荐
评分预测是比较简单的一种模型,比如某个用户给定某个物品的评分,在对比其他用户对该用户的评分相似度来判断该用户对其他物品的喜爱程度,从而进行推荐。最典型的就是IMDB与豆瓣,都需要用户主动评分才能进行下一步推荐。其中CBRS基于内容的推荐系统,Collaborative Filtering 协同过滤,SVD奇异值分解就是评分预测的典型模型。
然而评分预测在大部分场景中并不适用,比如在许多电商购物网站,许多用户并不会主动给某个物品进行评分,而且每个物品的attribute差距都很大,不能像电影那样对每个电影的不同属性进行分类从而进行推荐。这个时候只能通过用户的历史记录,点击,购买记录,评论对用户进行合适的推荐。其中有LSA(Latent Semantic Analysis) 隐语义模型:分析用户评论的语义进行推荐;Curiosity Based Model基于好奇心的心理学模型;或是使用数据挖掘的频繁项物品进行推荐(bundle recommendation)等等。
基于此,大概可以归纳出以下三类模型。在这三类中,每一类又包含很多方法,无法绝对的说哪一类模型最好,依照具体的数据形式以及内容而定。
- 基于聚类的推荐
- 基于协同过滤的推荐
- 基于模型学习的推荐
第一类的模型可以使用到的方法:
- 全局均值
- 物品均值
- 用户均值
- 用户分类-物品均值
- 物品分类-用户均值
- 用户活跃度
- 物品活跃度
- 改进的用户活跃度
- 改进的物品活跃度
这类模型的共同特征是通过设计聚类方法来对用户和物品分类,利用同类用户对同类物品的评分均值来预测用户对物品的评分。另外通过该模型的实现对用户和商品的特征有一个基本的了解。
第二类的模型主要使用的方法是基于物品的协同过滤,它的核心思想是当预测用户对一个物品评分时,主要考虑与该物品最相似且用户已打过分的若干物品。所以在这其中相似度的度量方法尤其重要,包括欧氏距离、皮尔逊相似度度量、余弦相似度度量、改进的余弦相似度度量。(之所以不使用基于用户的协同过滤,是由于建立用户-用户的相似度矩阵过于巨大)
第三类的模型使用的方法有:
- SVD
- NMF
- RSVD
- SVD++
- SVDfeature
- Libmf
- Libfm
这一类模型的共同特点是矩阵分解。即对用户-物品评分矩阵分解成若干个小矩阵,目的是分解之后的矩阵乘积接近原始矩阵,于是也实现了对原始矩阵为空的值的预测。在这些方法中,比较重要的几个参数有:隐特征个数,随机梯度下降中的学习率,正则化参数,总迭代次数。具体在每个方法中这些参数的最优值也不尽相同。