网上对个性化推荐的介绍很零散,我正好做过相关的工作,所以这里做个总结。
总的来说,推荐系统的目标可以分为预测评分和物品推荐两种,其实模型也可相互转换,目前对前者的研究也更多,因为前者更适合建复杂的模型,所以这里只讨论预测评分的情况。推荐系统中常用的数据有以下几种:
1. 基于内容的推荐
要预测一个用户将来的行为,最直观的想法当然是看看他过去干了些什么,看了哪些电影啊,打多少分啊,听过什么歌啊,之类的。基于内容推荐的基本思想就是,你过去曾经买过什么东西、看过什么电影,我就给你推荐一样的东西或者类似的东西,显然这样的模型太直接,没有挖掘出数据背后隐含的内涵,只用这样简单的推荐肯定达不到最好的效果,所以我们需要有协同过滤。
2. 协同过滤
协同过滤可以分为两种模型,一种叫KNN,用户最近邻模型,一种是Matrix Factorization,矩阵分解模型。KNN又有两种基本做法:一是找出与用户u最类似的K个用户,譬如如果我们想要预测u对电影i的评分,我们可以找出其他K个对电影i评过分的用户,然后分别计算他们与用户u的相似性,然后把他们对i的评分进行加权以后,作为用户u对i的评分。计算用户之间的相似性有很多方法,最常用的是余弦相似系数和皮尔森相似系数,都是将每一个用户的评分情况作为一个向量以后计算两个向量之间的余弦夹