推荐系统的协同过滤算法
协同过滤(CF)的关键点:
- userCF适合社群性、热点性强的内容;itemCF适合兴趣点稳定的场景;
- 为了减少运算,一般需要作倒排表(userCF用item倒排,itemCF用user倒排)。
- 度量相似度指标:余弦相似度、pearson系数等。
- pros:直观、可解释。
- cons:头部效应(热门item影响大);稀疏难泛化;无法加特征。
协同过滤(collaborative filtering,CF)是推荐中最经典、也是最早广泛应有的算法,基本思路:用item形成的向量度量user,用user形成的向量度量item的相似度。根据相似度排序后推荐。
举例子:豆瓣评分系统,每个user对于每个item都有一个分数(1星到5星,未标记的为0)。如果user数为N,item数为M,那么,user就有了一个M维的向量,item有了一个N维的向量。user-item组成了一个NxM维的矩阵。
基于user的userCF:即将两个具有相同兴趣的人拉近,用周围的人对某个item的评价预测该用户对该item的可能评价。
优点:对于热点(新的item)较好(可以直接推给兴趣相似的人),有社群效应。
缺点:用户相似度矩阵为NxN,用户数量大,储存开销大。另外,多数user历史记录少,因此矩阵稀疏。
基于物品的itemCF:将两个物品用用户群体作为特征进行度量,找到物品之间的相似性,用来给已经选择了某个item的user推荐类似的item。
特点:适合于兴趣点稳定的场景(对于类别和特征依赖较强,比如电影等)
CF算法的局限性:特征向量过于稀疏,并且无法增加其他特征(如用户的画像,item的属性等)。
改进方向:由于有了MxN的用户-物品矩阵,可以将它看做是:
于是,可以进行矩阵分解,得到用户和物品的隐向量(特征向量),后面就可以基于特征向量进行操作了。