上QQ阅读APP看书,第一时间看更新
2.1 协同过滤
协同过滤一词最初在1992年由PARC公司提出,此时协同过滤的含义是人类协同系统过滤喜欢或不喜欢的内容,从而达到个性化推荐的效果。
目前对于协同过滤的广泛理解是人以群分,物以类聚。该理解是约翰·里德尔于1994年提出的GroupLens推荐思想。GroupLens的推荐思想是说系统会推荐给用户与其相似的用户喜欢的物品,假设了用户应该会喜欢与其同一类用户喜欢的物品,这就叫人以群分。
当代对于协同过滤的理解,并不是最初1992年提出的“协同过滤”一词的形态。那为什么不直接把“协同过滤”称为“集体过滤”,并且“集体过滤”是GroupLens的直译,这样可能就能见名思义了。这是因为个人的“协同过滤”也一样具备“集体过滤”的效果。
假设有3个用户和3个物品,用户仅需要告诉系统自己喜欢的产品是什么,然后我们便可将用户反馈的信息画出,如图2-1所示。
很明显,可以将由上往下数的第1个和第2个人归为一个集体,因为他们都喜欢第1个和第2个物品。同理,第1个和第2个物品也同样被第1个和第2个人喜欢,所以也可被归为同一类物品,即人以群分,物以类聚。而对于收集数据而言,仅仅收集了用户与物品的个人交互数据。
这是为什么协同过滤无须改为集体过滤的原因,只要用户反馈出其与物品发生的交互行为,用户与用户之间自然就会因为物品而连接起来,同理,物品与物品间也会因为用户而连接起来。
图2-1 协同过滤示意图
从算法上讲,协同过滤可以归为以下三大类:
(1)近邻协同过滤,例如UserCF和ItemCF。
(2)矩阵分解协同过滤,例如SVD和LFM。
(3)所有用户物品交互信息作标注的算法。
目前网络上有很多关于协同过滤的教程,但是笔者认为讲得都不够透彻,所以本章由近邻协同过滤开始,慢慢来梳理协同过滤的脉络,并会在本章的最后做一个总结。