Advertisement

电影推荐(电影推荐系统)

阅读量:

问题描述:lintcode506

为用户提供其观看过的电影列表,并为每位用户推荐可能感兴趣的其他影片。在此任务中,需要实现一种简单的推荐算法,并采用Map Reduce框架进行处理。针对某一用户,将其观看过的电影A、B、C作为基础,进一步查找与这些电影相关的其他观众群体所观看的影片集合。对于这些影片,按照出现频率由高到低选取前五部作为推荐结果,并依据相关性程度进行排序。

思路:

在运用Map Reduce思想方面存在不足之处,解题过程可分为三个阶段:首先,以每部电影为键值,统计用户观看该电影的次数(本题中仅将观看行为计为一次)。其次,构建共现矩阵,其中矩阵的行与列分别代表用户数量。若两位用户同时观看了相同的影片,则对应位置标记为1;否则标记为0。例如,在共现矩阵的第一行中,所有标记为1的列元素所对应的索引即表示与第一行用户存在共同观影记录的其他用户。第三步则是排除当前用户后,将与其有共同观影记录的所有用户的观影数据进行汇总,并根据出现次数进行排序,最终选取出现次数最多的五部影片作为推荐结果(仅保留出现次数大于零的影片)。第一步可视为map操作阶段,第二步和第三步则属于reduce操作阶段。该算法尚有优化空间。

问题示例:

输入:

复制代码
    [[1,2,3,5,6,7,8,9,10,11,12,13],[2,3,5,6,7,8,9,10,11],[2,3,4,5,6

全部评论 (0)

还没有任何评论哟~