协同过滤算法主要可以分为两类:基于用户相似的UserCF算法以及基于物品相似的ItemCF算法。简明地解释这两类的基本思想:如果user1和user2相似度高,那么user1买了一款物品item,就可以把这款物品也推荐给user2,这是UserCF的基本思想;如果item1和item2相似度高,那么一个用户user买了item1,就可以推荐他再买item2,这是I...
items[int(movieLine[0])]=movieLine[1:]#print(items)returnitems#主程序if__name__=='__main__': itemTemp=getMovieList("D:/movieRecommend/ml-100k/u.item")#获取电影列表fileTemp=readFile("D:/movieRecommend/ml-100k/u.data")#读取文件user_dic,movie_dic=createDict(fileTemp)#创建字典user_i...
N[itemId] += 1 C.setdefault(itemId,{}) for i in items.keys(): if(i==itemId): continue C[itemId].setdefault(i,0) #同时给两个物品打分的人数 C[itemId][i] += 1 #如果要对活跃用户惩罚 #C[itemId][i]+=1/math.log(1+len(items)*1.0) endTime=datetime.datetime.now() print('...
基于用户的协同过滤(UserCF):当要给目标用户进行推荐时,先找出与他相似的其他用户,再从那些用户喜欢的项目中找出目标用户没有看过的项目推荐给他。 基于项目的协同过滤(ItemCF):先找出目标用户历史观看列表里与之相似的其他项目,再对这些相似项目进行排序并生成最后的推荐列表。 评分预测还是TopN推荐? 评分预测和TopN...
传统的ItemCF算法,物品间不具有先后关系,可以任意进行推荐。这样的算法并不适用某些场景(见下文背景),对于此类场景,对ItemCF算法进行了扩展,使其可以依据当前用户使用的物品进行推荐。 注意:该算法只是在原有的ItemCF实现上进行了扩展,它只能根据当前使用的物品推荐下一个物品,并不记忆之前使用的物品(不依据上下文信息...
,也是“物以类聚”的概念,如果理解了“行为特征”与“内容特征”,则ItemCF就很好理解了。可参看以下两种定义。 (1)基于物品的普通推荐:给目标用户推荐与他喜爱的物品内容相似的物品。(2)基于物品的协同过滤推荐:给目标用户推荐与他喜爱物品行为相似的物品。
当前spark支持的协同过滤算法只有ALS(基于模型的协同过滤算法),但ALS算法对于某些特定的问题,效果并不理想,不像mahout提供了各种推荐算法。为了享受到spark在速度上带来的提升同时为满足一些业务需求,遂使用spark构建ItemCF算法。同时spark提供了新的DataFrame数据类型,使算法开发更加清晰和易于实现, 前提 本文需要你对基于...
ItemCF(基于物品的协同过滤算法),以书籍推荐为例 数据集 Book-Crossing Dataset: http://www2.informatik.uni-freiburg.de/~cziegler/BX/ 数据集是 Book-Crossing Dataset ,提供的亚马逊用户对书籍评分的真实数据。 缺点:数据集有点老。2004年的数据集。 该数据集包括三张表 user(用户表),book(书籍表),ratin...
Spark SQL 实现 ItemCF,UserCF,Swing,推荐系统,推荐算法,协同过滤. Contribute to xiaogp/recsys_spark development by creating an account on GitHub.
Spark ItemCF推荐算法(mllib) 余弦相似度实现: package com.keyboard.pro_test import org.apache.log4j.{Level, Logger} import org.apache.spark.ml.feature.StringIndexer import org.apache.spark.mllib.linalg import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, IndexedRow, MatrixEntry, ...