协同过滤的分类
当得到指定用户或者内容的邻居后,我们就可以利用这些数据信息为用户进行详细的推荐了。前面提到过,协同过滤算法可以分成三类:基于用户的协同过滤,基于内容项的协同过滤和基于模型的协同过滤。
1.基于用户的协同过滤
基于用户的协同过滤(User-based CF)是最早被提出来的算法,是根据用户对不同内容的喜好程度找到他的邻居用户,然后将这些邻居喜欢的内容排序推荐给指定用户。具体流程是首先利用相似矩阵的行向量,即代表每个用户对所有内容的喜好程度,来计算得出每个用户间的相似度,然后根据相似性结果找出K个最近的邻居用户,再根据邻居的相似性程度对他们进行加权,利用权重和他们对内容的喜好程度,预测指定用户可能也会喜好的内容,最终得出一个经过排序的内容列表作为该指定用户的推荐。Fig 5给出了一个实例,将用户A作为指定用户,根据他的用户行为,系统可以得出他对不同内容项的喜好程度,利用这些信息找到他的邻居,示例中用户C即为用户A的邻居用户,所以将用户C喜好的内容D推荐给用户A。
基于用户的协同过滤适用于一些新闻,微博或其他媒体的推荐系统,因为对于这些推荐系统来说,内容项的数量是远远多于用户的数量,而且内容更新很快,所以与计算内容项间的相似性相比,我们计算用户间的相似性可以大大地减小计算量。
2.基于内容项的协同过滤
基于内容项的协同过滤(Item-based CF),它与基于用户的协同过滤区别主要在于,它是通过计算内容项之间的相似性,而非计算用户间的相似性来得到指定用户的推荐列表。具体步骤为首先利用相似矩阵的列向量,即代表所有用户对内容项的喜好程度,来计算得出内容项间的相似度,然后利用指定用户的历史喜好信息,得出一个排序的相似内容项列表作为推荐预测。Fig 6也给出了一个示例,根据所有用户的喜好记录,喜欢内容B的用户大部分也喜欢内容D,也就是说内容B的邻居是内容D,而指定用户A喜欢内容B,所以根据基于内容项的协同过滤,我们可以预测用户A也应该会喜欢内容D。
基于内容项的协同过滤适用于电子商务网站,如淘宝,京东,当当网等。因为这些网站的用户数量是海量的,而商品内容的数据相对比较稳定,因此计算内容项间的相似性可以减小计算量,也不需要频繁地进行更新。
3.基于模型的协同过滤
基于模型的协同过滤(Model-based CF)是目前较为流行的协同过滤类型,它的思想和前面两个类型有较大的区别。基于用户的协同过滤和基于内容项的协同过滤都属于基于记忆(Memory based)的协同过滤算法,它们难以处理大量的数据集,所以不适用于一些对时效性要求高的应用。而基于模型的协同过滤可以胜任该任务,它可以利用用户和喜好内容间的历史数据,预测出用户和未知内容之间的喜好关系,最后找出喜好程度最高的内容推荐给指定用户。基于模型的协同过滤主要利用了机器学习的方法,对样本的用户喜好数据进行建模,并将训练好的模型来预测未知的用户喜好信息,最终得出推荐。它的复杂度一般较高,因为对模型进行训练和评估需要花费大量的时间和精力。