协作型过滤是1992年David Goldberg 在施乐帕研究中心(Xerox PARC)的一篇题为《Using collaborative filtering to weave an information tapestry》的论文中首次使用的。现在大多数的web站点在各个方面都运用到了协作型过滤算法。
本文简单介绍基于用户的协同过滤算法和基于物品的协同过滤算法原理,最后将运用算法实现推荐观众合适的影片的实战。
一、基于用户的协同过滤算法
以我的理解,user_based即在一大群人中找到与我们在某处有相似爱好的一小群人中,分析他们的所偏爱的其他内容,将这些进行排名为我们进行推荐。本文中所讨论的偏爱物品是对影片进行分析。我们首先获得数据集,即不同客户对不用影片的评分,分数越高则代表客户越喜欢这部影片。在这里运用python中字典的方法将数据集表示出来。其次我们需要做的就是寻找和我们有相似偏好的一小群人即相近的用户。有很多计算相似度的评价值。以下介绍几种方法。需要的数据集如下:
critics={'Lisa Rose':{'Lady in the Water':2.5,'Snakes on a plane':3.5,
'Just My Luck':3.0,'Superman Returns':3.5,'You,Me,and Dupree':2.5,
'The Night Listener':3.0},
'Gene Seymour':{'Lady in the Water':3.0,'Snakes on a plane':3.5,
'Just My Luck':1.5,'Superman Returns':5.0,'You,Me,and Dupree':3.0,
'The Night Listener':3.5},
'Michael Phillips':{'Lady in the Water':2.5,'Snakes on a plane':3.0,
'Superman Returns':3.5,'The Night Listener':4.0},
'Claudia Puig':{'Snakes on a plane':3.5,
'Just My Luck':3.0,'Superman Returns':4.0,'You,Me,and Dupree':2.5,
'The Night Listener':4.5},
'Mick LaSlle':{'Lady in the Water':3.0,'Snakes on a plane':4.0,
'Just My Luck':2.0,'Superman Returns':3.0,'You,Me,and Dupree':3.0,
'The Night Listener':2.0},
'Jack Matthews':{'Lady in the Water':3.0,'Snakes on a plane':4.0,
'Superman Returns':5.0,'You,Me,and Dupree':3.5,'The Night Listener