推荐系统:寻找相近用户——欧几里德距离评价
2013-12-18 21:11
357 查看
所谓欧几里德距离,通俗的来讲就是两个物体之间各个维度的差的平方和,然后再开方。这样,我们可以通过两个用户对若干本书的评价分数,我们可以求得两个用户的相近程度。具体算法思路是,先求得两个用户都评价的书籍,然后求同一本书的评分差的平方,并把各差的平方相加,其实可以同时完成,即在求共同评价的书籍的时候就可以求差的平方和。为了比较容易衡量,也是为了和其他评价标准相同,我们规定0代表两用户无共同爱好,1代表完全相同。实现详见代码
from math import sqrt
def sim_distance(prefs,person1,person2):
si={}
for item in prefs[person1]:
if item in prefs[person2]:
si[item]=1;
if len(si)==0:
return 0
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in si])
#print 1/(1+sqrt(sum_of_squares))
return 1/(1+sqrt(sum_of_squares))
参考文献:Programming Collective Intelligence by Toby Segaran. Copyright 2007 Toby Segaran,978-0-596-52932-1
from math import sqrt
def sim_distance(prefs,person1,person2):
si={}
for item in prefs[person1]:
if item in prefs[person2]:
si[item]=1;
if len(si)==0:
return 0
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in si])
#print 1/(1+sqrt(sum_of_squares))
return 1/(1+sqrt(sum_of_squares))
参考文献:Programming Collective Intelligence by Toby Segaran. Copyright 2007 Toby Segaran,978-0-596-52932-1
相关文章推荐
- 推荐系统:寻找相近的用户——皮尔逊相关度评价
- 使用欧几里德距离构建简单的推荐系统计算用户相似度
- 社会化推荐系统浅析-欧几里德距离的java实现
- mahout in Action2.2-给用户推荐图书(3)-评价推荐系统
- 视频用户行为及推荐系统评价KPI-部分
- 推荐系统(3)---寻找数据集中的相似用户
- 转:TopN推荐系统——推荐的实现与推荐效果的评价指标
- 推荐系统实践--基于用户的协同过滤算法
- R语言实战实现基于用户的简单的推荐系统(数量较少)
- 实战智能推荐系统(5)-- 推荐系统评价指标
- 实战智能推荐系统(5)-- 推荐系统评价指标
- 实战智能推荐系统(6)-- 用户行为分析
- 实战智能推荐系统(6)-- 用户行为分析
- 《推荐系统实战》-基于用户的系统过滤推荐
- 实战智能推荐系统(7)-- 基于用户的协同过滤算法
- 基于用户行为的推荐系统
- 推荐系统评价指标
- 揭秘Keras推荐系统如何建立模型、获取用户爱好
- 基于用户的协同过滤(user-based CF)推荐系统【2】
- 原创:自定义三叉树(二)--基于搜索推荐系统根据用户搜索频率(热搜)排序