协同过滤推荐算法是一种主流的、目前广泛应用在工业界的推荐算法。

一般,协同过滤推荐分为三种类型。

1.基于用户(user-based)的协同过滤

基于用户的协同过滤算法,主要考虑的是用户和用户之间的相似度,只要找出与目标用户相似度高的其他用户,根据相似用户喜欢的物品,预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户。

2.基于项目(item-based)的协同过滤

基于项目的协同过滤算法,类似于基于用户的协同过滤,只是这往往是根据用户的行为判断物品的相似度(并不是根据物品的本身来判断物品相似度)。通过寻找物品和物品之间的相似度,向目标用户推荐与其喜欢的物品相似度高的其他物品。即对相似度高的类似物品进行预测,将评分最高的若干个相似物品推荐给用户。
典型使用了基于项目的协同过滤算法的就是亚马逊的推荐系统。

3.基于用户和基于物品的比较

基于用户的协同过滤需要在线找用户和用户之间的相似度关系,计算复杂度肯定会比基于基于项目的协同过滤高。但是可以帮助用户找到新类别的有惊喜的物品。而基于项目的协同过滤,由于考虑的物品的相似性一段时间不会改变,因此可以很容易的离线计算,准确度一般也可以接受,但是推荐的多样性来说,就很难带给用户惊喜了。一般对于小型的推荐系统来说,基于项目的协同过滤肯定是主流。但是如果是大型的推荐系统来说,则可以考虑基于用户的协同过滤。

4.基于模型(model based)的协同过滤

基于模型的协同过滤算法,不同于上述两种,它往往使用机器学习算法来预测用户对于某个物品的评分,一般来说,推荐系统会由 m 个用户和 n 个物品,用户对其中的部分物品进行评分,推荐系统中,物品数量往往及其巨大,单个用户不会对所有物品产生评分,所以用户-物品矩阵一般是一个稀疏矩阵。此时,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。
一般对于这个问题,可以用机器学习的来建模解决,主流的方法可以分为:关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型等。