动手学推荐系统:基于PyTorch的算法实现(微课视频版)
上QQ阅读APP看书,第一时间看更新

2.3.3 ItemCF

基于物品的协同过滤(Item Based Collaborative Filtering,ItemCF)[4],也是“物以类聚”的概念,如果理解了“行为特征”与“内容特征”,则ItemCF就很好理解了。可参看以下两种定义。

(1)基于物品的普通推荐:给目标用户推荐与他喜爱的物品内容相似的物品。

(2)基于物品的协同过滤推荐:给目标用户推荐与他喜爱物品行为相似的物品。

内容相似的物品很好理解,例如对于两部电影而言,如果它们的题材一样,故事内容又差不多,甚至标题看起来都一样,则可认为是内容相似的电影,但什么是行为相似的物品呢?根据UserCF的启发可以知道,一个用户与物品的交互行为可以认为是用户的行为特征,则对于物品而言,自然可以把这个物品与用户的交互行为认为是物品的行为特征。

基于用户物品交互行为特征得到的相似用户、基于用户物品交互行为特征得到的相似物品和基于内容特征得到的相似物品这三者的区别如图2-3所示。

图2-3 相似用户与相似物品的定义方式

需要注意,基于内容特征得到的相似物品,这种手段称不上协同过滤,所以前文称之为基于物品的普通推荐。因为协同过滤的重点是要在用户物品的交互行为数据中找到推荐的规律并不断地迭代模型。如果仅仅采用内容特征做相似物品的定义,则物品间的相似度并不会根据用户的行为发生迭代更新。且根据实际情况看来,基于内容的推荐效果远逊于ItemCF,这也很好理解,因为基于内容的推荐会造成给用户推荐内容不断趋近于同质化,但更重点的是基于内容的推荐需要假设“用户会喜欢与他喜欢的物品内容相似的物品”,而包括ItemCF在内的所有协同过滤需要的假设都是“用户会喜欢跟他有相同喜好的人喜欢的物品”,从实际情况看来,后者假设为真的概率比前者更高。

理解上述内容后,再来看UserCF与ItemCF的推荐方式的区别,如图2-4所示。

图2-4 UserCF与ItemCF的推荐方式的区别

一般情况下UserCF比ItemCF在模型效果评测上会显得更好,但是实际情况下ItemCF往往比UserCF实用很多,很大一部分原因是因为系统中用户往往比物品要多,并且变化快。推荐模型并不是仅训练一次就可以了,必须实时地在大数据环境下更新。例如一个短视频平台,用户想看的视频往往仅被自己5分钟内甚至更短时间内的视频影响。如果是UserCF,必须实时更新每个用户的相似用户列表才能让推荐准确,但是如果是ItemCF,则要求没那么高,因为当用ItemCF给用户推荐视频时,取的是该用户最近几个喜爱视频的相似视频,这意味着即使物品间的相似列表更新速率不是那么快,用户的行为变化也会被系统捕捉到。