2.2.1基于用户的协同过滤算法
对于基于用户的协同过滤算法,输入是一个给定的评分数据集以及当前用户的ID,输出是与该用户又相似偏好的其他用户。
例如给定项目—评分矩阵R,R为m×n的矩阵,ri,j代表评分项,用集合U={u1,u2,…un}代表用户集,集合I={i1,i2,…in}代表项目集,分值定义为1到5分,5分最高。若用户u未对项目i评分,则对应的ui,j为空。
项目评分矩阵
| 物品1 | 物品2 | 物品3 | 物品4 | 物品5 |
A | 5 | 3 | 4 | 4 | ? |
B | 3 | 1 | 2 | 3 | 3 |
C | 4 | 3 | 4 | 3 | 5 |
D | 3 | 3 | 1 | 5 | 4 |
E | 1 | 5 | 5 | 2 | 1 |
现在我们想得到用户A对物品5的评分,需要先确定用户A的相似用户集。相似度计算的方式有多种,协同方法中一般用的是Pearson相关系数。给定评分矩阵R,用户A和用户B的相似性 用下列公式表示,
(2.1)
其中, 表示用户A的平均评分。减掉平均值是因为用户对物品的评分未必遵循同一标准。
例如对上表中用户A和用户B的相似性计算如下:( ),
则
(2.2)
同理也可计算出用户A与用户C,D,E的相似性分别为0.70,0.00,-0.79,皮尔逊相关系数的值从-1(强负相关)到+1(强正相关)。
为了预测用户A对物品5的评分,首先要选择出用户A的近邻,由上面的计算可知,与用户A最相似的是用户B和C,由该最近邻和用户A平均评分的 的偏差,利用公式计算出用户A对物品i的评分。
则,用户A对物品5的预测值为
经过上述的计算,我们可以得到用户A对于未使用的物品5的可能评分为4.87,因此可以将物品5推荐给用户A。
2.2.2基于物品的协同过滤算法
基于物品的协同过滤与基于用户的协同过滤相类似,只不过是利用物品之间的相似性而非用户之间的相似性来计算预测值。
在上述的评分项目矩阵中,对于物品5的评分向量是(3,5,4,1),其他物品也有相应的评分向量,基于物品的协同算法就是简单的找到A对这些相似物品的评分。
对于物品相似性的计算,采用的是余弦相似度度量方法。在基于物品的推荐系统中,余弦相似度效果精确被证实为一种标准的度量体系。这种方法是通过计算两个n维向量之间的夹角来计算相似度的。
对于物品a和b分别有对应的评分向量 和 ,其相似度可以定义如下:
则对于物品5与物品1的余弦相似度为:
基本的余弦方法未考虑评分均值之间的差异,因此,同皮尔逊相关系数相似,应在评分值中减去平均值。