1、背景介绍

《动手实现基于协同过滤的电影推荐系统》源于《深度学习与推荐系统》课程。此课程有比较清晰的脉络,从经典的推荐算法如CF、MF、FM、LR、GBDT等讲起,直到现在火热的各种深度学习模型,再到词向量Embedding预处理等,脉络清晰,让大家能够领会到推荐系统技术这些年的发展进步。本课程其中有个环节是:动手实现基于协同过滤的电影推荐系统,实现了基于用户的协同过滤算法和基于物品的协同过滤算法,并在MovieLens数据集上做了测试,效果十分出色。

2、协同过滤算法介绍

协同过滤算法(Collaborative Filtering,CF)是只基于用户的历史行为对用户未来的购买习惯进行预测的一种算法。对于协同过滤的算法,最著名的、在业界得到最广泛应用的算法是基于邻域的方法,而基于邻域的方法主要包含下面两种算法。

(1)基于用户的协同过滤算法(UserBasedCF) 这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。
(2)基于物品的协同过滤算法(ItemBasedCF) 这种算法给用户推荐和他之前喜欢的物品相似的物品。

因为这两种算法都是基于求邻域的,并且直观上UserBasedCF更容易理解,所以UserBasedCF比ItemBasedCF提出的更早一点。关于协同过滤理论,最值得一看的论文就是亚马逊发表的《Amazon.com Recommendations Item-to-Item Collaborative Filtering》。这篇论文是ItemBasedCF开山之作,很值得学习。这篇论文的主要思想是:

在 User-based 方法中,随着用户数量的不断增多,在大数量级的用户范围内进行“最近邻搜索”会成为整个算法的瓶颈。Item-based 方法通过计算项之间的相似性来代替用户之间的相似性。对于项来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而大大降低了在线计算量,提高推荐效率。

在 Item-based 方法中,要对 A 和 B 进行项相似性计算,通常分为两步:1)找出同时对 A 和 B 打过分的组合;2)对这些组合进行相似度计算,常用的算法包括:皮尔森相关系数、余弦相似性、调整余弦相似性和条件概率等。

这篇论文中也提出了可以只计算购买了这个物品的用户和其购买的其他物品的相似性来简化计算,所以实现的时候也采用了。

其实,很容易看出协同过滤算法的思想非常简单淳朴:用户之前的行为记录会反映出用户-用户的相关性(UserBasedCF)或者物品-物品的相关性(ItemBasedCF)。也就是UserBasedCF是基于用户的历史信息求用户的相关性,然后根据该用户的相似用户购买了的物品产生推荐信息;ItemBasedCF是基于用户的历史信息求物品的相关性,然后根据用户购买了的物品产生推荐信息。

3、欢迎关注

欢迎关注《深度学习与推荐系统》课程