推荐系统之基于物品的协同过滤算法(ItemCF)
发布时间:2018-03-04 16:55,
浏览次数:1778
, 标签:
ItemCF
推荐系统之基于物品的协同过滤算法(ItemCF)
前端时间已经把基于用户的推荐系统给弄出来了,详情见我的另一篇文章:点击打开链接
,(建议先看懂UserCF后再来看这篇文章,当然大佬可以忽视)其实理解了基于用户的协同过滤算法,再来看基于物品的协同过滤算法,就会感觉没啥太大差异,
具体的思路,通俗的讲:用户A 喜欢了一个物品s集合,那么推荐的时候就把与物品s集合里最相似的前N个物品推荐给用户A,结束。
是不是言简意赅?哈哈,其实道理都差不多,看懂了UserCF再来看ItemCF,就会感觉基本差不多。具体的步骤呢:
一、计算物品之间的相似度。
二、根据物品的相似度和用户的历史行为给用户生成推荐列表
同样,计算相似度的时候公式用的也是余弦相似度,详情就看我写的UserCF吧:点击打开链接
,因为都差不多就不重复写了,对照着上一篇博客然后在看看书,就知道基本完全一样了
这里就贴上书上给的一个案例,最下面就是系统的推荐TOP N ,很好理解:
依旧是大牛的ItemCF 代码,贴上供大家学习:#-*- coding: utf-8 -*- ''' Created on 2015-06-22
@author: Lockvictor ''' import sys import random import math import os from
operator import itemgetter random.seed(0) class ItemBasedCF(object): ''' TopN
recommendation - Item Based Collaborative Filtering ''' def __init__(self):
self.trainset = {} self.testset = {} self.n_sim_movie = 20 self.n_rec_movie =
10 self.movie_sim_mat = {} self.movie_popular = {} self.movie_