基于用户的协同过滤算法的系统多样性分析
来源:互联网 发布:大数据平台发展趋势 编辑:程序博客网 时间:2024/05/20 03:05
在学习userbasedCF推荐算法的过程中,我尝试了从宏观和微观两个角度分析推荐算法系统的多样性
Intra diversity:
函数表达式如下,m为训练集长度,L为用户推荐列表长度,ajαajβ为用户j推荐列表中α和β两物品的相似度。先求一个用户的推荐列表多样性,再求系统总体多样性。
计算物品-物品相似度的代码如下
def itemSimilarity(self,train = None): train = train or self.traindata self.itemSim = dict() C = dict() N = dict() user_items = dict() itemsN=set() #创建物品集合 for u,item in train.items(): for i in item.keys(): itemsN.add(i) for i in itemsN: for j in itemsN: if i == j: continue C.setdefault(i,{}) C[i].setdefault(j,0) #创建一个物品-物品值全为0的字典 for u,item in train.items(): for i in item.keys(): user_items.setdefault(u,set()) user_items[u].add(i) for user,items in user_items.items(): for i in items: N.setdefault(i,0) N[i] += 1 for j in items: if i == j: continue C.setdefault(i,{}) C[i].setdefault(j,0) C[i][j] += 1 for i,related_items in C.items(): self.itemSim.setdefault(i,dict()) for j,cij in related_items.items(): self.itemSim[i][j] = cij / math.sqrt(N[i]*N[j]*1.0) #计算物品i与物品j之间相似度
intraDiversity的代码实现:
def intraDiversity(): ubcf = UserBasedCF('C:\Users\Desktop\PythonDatabase\\u.data') ubcf.readData() ubcf.splitData(4,100) ubcf.userSimilarityBest() ubcf.itemSimilarity() IntraD=0 m=943 R=0 for w in range(m): rank = ubcf.recommend(user="%s"%(w+1),k = 3) ret=0 for u,item in rank.items(): for v,item in rank.items(): if u == v: continue ret += ubcf.itemSim["%s"%(u)]["%s"%(v)] R += (1-ret/(40*(40-1)))#每个用户的推荐列表的inIntraD += R/m print"IntraD:"%.5f"%IntraD
Inter diversity:
函数表达式如下,根据列表物品同现矩阵计算两用户推荐列表相似性得出系统总体多样性。
def interDiversity(): ubcf = UserBasedCF('C:\Users\Desktop\PythonDatabase\\u.data') ubcf.readData() ubcf.splitData(4,100) ubcf.userSimilarityBest() InterD=0 m=943 for w in range(m): rank = ubcf.recommend(user="%s"%(w+1),k = 3) for u in range(m): if w>=u: continue rant = ubcf.recommend(user="%s"%(u+1),k = 3) ret=0 c=0 for i in rank.items(): for j in rant.items(): if i[0]==j[0]: c += 1 ret +=(1-c*1.0/40) #两个用户推荐列表间多样性,列表长度L=40 InterD += ret*2/(m*(m-1)) print InterD:""%.5f"%InterD
阅读全文
0 0
- 基于用户的协同过滤算法的系统多样性分析
- 基于用户的协同过滤算法的电影推荐系统
- 推荐系统--基于用户的协同过滤算法
- 推荐系统--基于用户的协同过滤算法
- 推荐系统实践--基于用户的协同过滤算法
- 推荐系统实践--基于用户的协同过滤算法
- 推荐系统实践--基于用户的协同过滤算法
- 基于用户协同过滤的推荐系统算法,python 实现
- 基于近邻用户协同过滤算法的音乐推荐系统
- 《推荐系统》基于用户和Item的协同过滤算法的分析与实现(Python)
- 《推荐系统》基于用户和Item的协同过滤算法的分析与实现(Python)
- 基于用户的协同过滤算法
- 基于用户的协同过滤算法
- 基于用户的协同过滤算法
- 基于用户的协同过滤推荐算法
- 基于用户的协同过滤算法
- 基于用户的协同过滤推荐算法
- 基于用户的协同过滤算法
- NOIP2017
- 运用tensorflow改写《机器学习与实战》一书中的手写识别系统
- set get 方法
- 理解 Android Activity 的启动模式
- git版本控制管理系列-----第一章 介绍GIT
- 基于用户的协同过滤算法的系统多样性分析
- git版本控制管理系列-----第二章 安装GIT
- GCC基础知识学习-1
- hashcode()与equals区别
- Ubuntu12.04+Hadoop2.6.5实现全分布式集群搭建
- git版本控制管理系列-----第三章 GIT起步
- HDI的分类和阶数(自己总结的文档,图片上传)
- git版本控制管理系列-----第四章 GIT基本概念
- 遇见未来的自己