协同过滤算法简介
协同过滤算法在推荐系统算法领域中也已经被研究了许多年,提出了不少的方法,我们就来把这些算法归类一下。
协同过滤方法的一个基本假设就是,如果用户A和用户B在一些物品偏好上,具有相似的历史标注模式或者行为习惯,那么他们在其余项目上都具有一定相似的兴趣。
协同过滤算法主要分为两大类:基于内存的方法、基于模型的方法。而协同过滤算法的难点就在于用户评价矩阵非常稀疏,缺省的值较多,存在共同评价的物品非常少。
1. 基于内存的协同过滤算法
基于内存的协同过滤算法主要就是两个代表:基于用户和基于物品。这两个都在我们上篇博文中讲过了,如下:
http://blog.csdn.net/puqutogether/article/details/43524641
其主要的步骤就是:
这两种方法是基于内存一类方法的代表,后续的扩展包括很多,主要是为了解决评价矩阵中高稀疏,缺省项太多的情况。
这些改进的方法包括:
1)基于缺省标注填充的协同过滤算法。在基于内存的协同过滤算法中,相似度的计算往往考虑的是用户共同标注过的项目,或者是共同标注过项目的用户。但是,评价矩阵是非常系数的,导致这两种共同项会非常少。这个方法将评价矩阵中缺失的值,采用相似用户标注的平均值来填充,提高了推荐精度;
2)基于逆用户频率的协同过滤算法。对于一些物品,所有用户都标注偏好了,那么这个数据对用户相似度的计算就没有太高的用处,我们应该忽略掉。这个方法在计算相似度的时候,不是采用原始的评价矩阵,而是把它使用逆用户频率公式转换一下,转换公式为:
其中n_i表示标注过物品i的用户数量,n表示用户总数量。对于刚才那种情况,转换之后的特征就是0. 基于逆用户频率的协同过滤算法过滤掉了频繁标注对于相似度计算的影响,适当提高了非频繁标注的权重,提高了推荐精度;
3)基于虚拟值估算的协同过滤算法。这个方法也是解决评价矩阵稀疏性问题的,其基本思想就是利用虚拟值插补技术,对评价矩阵中的缺失标注进行填充。
2. 基于模型的协同过滤算法
这类方法运用评价矩阵为训练数据,通过一些常见的机器学习算法(聚类,回归,贝叶斯)等,来学习出一个模型,以识别出复杂的用户或者物品标注模式,做出推荐。
1)基于聚类模型的协同过滤算法。在协同过滤中,聚类通常可以作为数据处理中间步骤,聚类的结果被用来下一步的分类和预测。例如,我们可以用评价矩阵的数据把用户聚类,然后在每个小簇中采用基于内存的协同过滤算法得到推荐;或者也可以在聚类之后,把用户到簇中心的距离作为一个权重,常与到后面的步骤中。不过,这类方法由于先聚类,在数据两更小的簇中协同过滤,小簇毕竟损失了一部分有用的信息,效果不一定很好;
2)基于贝叶斯信念网络;
3)基于回归模型;
4)基于隐语义模型。
这几个方法不通用,就不一一介绍了,需要了解的可以参考下面的文献。
参考文献:
《基于协同过滤的推荐算法研究》