基于领域的算法是推荐系统中最基本的算法,该算法在实际应用中得到了广泛的应用,亚马逊的推荐算法就是采用基于领域的算法。基于领域的算法分为两大类,一类是基于用户的协同过滤算法,这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品;另一类是基于物品的协同过滤算法,这种算法给用户推荐和他之前喜欢的物品相似的物品。
实验所采用的数据集可以用GroupLens提供的MovieLens数据集。为了测试方便,这里暂时使用一个有10条记录的二维数组:
$train=array(
array(1,11), //array(userid,itemid)
array(1,12),
array(1,14),
array(2,11),
array(2,13),
array(3,12),
array(3,15),
array(4,13),
array(4,14),
array(4,15),
);
一、基于用户的协同过滤算法
该算法的主要步骤:
1、找到与该用户兴趣相似的用户集;
2、找到这个集合中的用户喜欢的但是没有听说过的物品推荐给目标用户。
用户的相似度可以用如下公式计算:
其中u,v表示两个用户,N(u)表示用户u曾经有过正反馈的物品集合;N(v)表示用户v曾经有过正反馈的物品集合。因为大多数用户的兴趣相似度可能位0,即|N(u)∩N(v)| = 0,所以我们可以建立一个物品到用户的倒排表: