协同过滤算法
目前主要有两类协同过滤推荐算法:Memory-Based协同过滤推荐算法和Model-Based协同过滤推荐算法。
基于Memory的协同过滤推荐算法基于假设:
- 如果用户对一些项目的评分相似,则他们对其他项目的评分也比较相似
- 如果用户浏览了或购买了某些项目,那么他们也倾向于购买类似项目
该类算法根据目标用户的最近邻用户对某个项目的评分逼近目标用户对该项目的评分。基于Memory的协同过滤推荐算法认为,用户对不同项目的评分存在相似性,当需要顾及用户对某个项目的评分时,可以使用用户对该项目的若干相似评分进行估计。
协同过滤就是根据一个用户对其它项目的评分以及整个用户群过去的评分记录来预测这个用户对某一未评分项目的评分。在典型协同过滤推荐系统中,输入数据通常可以描述为一个m×n
的用户-项目评分矩阵。其中m
是用户数,n
是项目数。基于协同过滤算法的推荐系统从用户的角度出发,自动的计算用户的偏好,并推荐给用户比较感兴趣的项目,也就是说,用户所获得的推荐结果是推荐系统在用户的浏览购买或评分项目的数据基础上,自己计算产生的,不需要用户主动的去查找自己感兴趣的项目。基于协同过滤算法的推荐系统的另外一个优点是对推荐对象没有特殊的要求,这不像基于内容的推荐需要对推荐对象进行特征分析,抽取推荐对象的特征表示,而且它能够处理非结构化的多媒体对象,如音乐、电影等。
协同过滤算法的一般过程分为四步进行:
- 第一步是数据的输入,算法的输入也很简单,通常为用户-项目评分矩阵
R(m,n)
, 其中,行数为m
,表示有m个用户,n表示项目的数目。矩:阵中第i
行第j
列所对应元素值表示用户i
对项目j
的评分值,它的获取一般是通过用户的评分获得。也可以通过分析用户的一些行为,如停留时间,是否收藏等隐式获取。用数字表示评价分值,如用0到5之间的整数来表示用户的喜好程度 - 完成评价数据矩阵输入后,就要利用协同过滤算法对待推荐用户进行最近邻选择,最近邻可以是当前目标用户的最近邻,或者当前目标项目的最近邻。协同过滤算法不同,最近邻选择的方式有所不同。最近邻用户或项目的选择也是协同过滤算法的核心部分
- 然后是算法的计算部分,协同过滤推荐算法在找到最近邻之后,会使用最近邻的评分数据去计算待推荐用户对指定项目的评分值,根据选用协同过滤算法不同,其内部计算方式也不同
- 最是协同过滤算法的输出部分,输出部分依据算法目的不同而不同,有的算法要求是对待推荐用户户在指定项目的偏好值进行预测,那输出就是该用户对指定项目的偏好数值。如果需要给待推荐户推荐一些他可能感兴趣的项目,那输出的就是Top-N项目的列表
协同过滤算法要分为两大类:基于内存的协同过滤算法和基于模型的协同过滤算法。下面将进行分别介绍。