Hadoop/Spark推荐系统(四)——推荐链接
来源:互联网 发布:淘宝上买的轮毂可靠吗 编辑:程序博客网 时间:2024/05/29 10:17
思路
如果两个人有一组共同好友,但这两个人本身不是好友,那个就会推荐他们联系,最后都可以归结为查找。用户1的所有好友里两两互为推荐好友,用户1和好友的关系为直接好友。先循环所有用户的所有好友,找出全部推荐好友和直接好友,在全部推荐好友去除直接好友即为推荐好友。所有的推荐好友中会按图论中的路径数对好友有个评分,只显示推荐联系的10个人,即取top 10.
与共同好友的区别
共同好友在于计算两个朋友集合的交集,推荐好友在于计算两个朋友集合的(并集-交集)
输入:
P F1,F2,…Fn
算法:
map(key,friends){ for(friend:friends){ directFriend=Tuple2(friend,-1); emit(key,directFriend); } for(int i=0;j<friends.size();i++){ for(int j=i+1;j<friends.size();j++){ possibleFriend1=Tuple2(friends.get(j),person); emit(friends.get(i),possibleFriend1); possibleFriend2=Tuple2(friends.get(i),person); emit(friends.get(j),possibleFriend2); } }}
reduce(key,values){ Map<Long,List> mutualFriends=new HashMap<Long,List>(); for(Tuple2<toUser,mutualFriend> t2:values){ Long toUser=t2.toUser; Long mutualFriend=t2.mutualFriend; boolean alreadyFriend=(mutualFriend==-1); if(mutualFriends.containsKey(toUser)){ if(alreadyFriend){ mutualFriends.put(toUser,null); }else if(mutualFriends.get(toUser)!=null){ mutualFriends.get(toUser).add(mutualFriend); } }else{ if(alreadyFriend){ mutualFriends.put(toUser,null); }else{ mutualFriends.put(toUser,List<mutualFriends>) } } } String reducerOutput=formaterOutput(mutualFriends); emit(key,reduceOutput);}
阅读全文
0 0
- Hadoop/Spark推荐系统(四)——推荐链接
- Hadoop/Spark推荐系统(一)——共同好友
- Hadoop/Spark推荐系统(三)——经常一起购买的商品
- Hadoop/Spark推荐系统(二)——购买过该商品的顾客还购买了哪些商品
- Hadoop—Spark企业应用实战(推荐版)视频教程
- Spark-电影推荐系统
- Hadoop Mahout 推荐系统
- Spark应用 —— 快速构建用户推荐系统
- 个性化推荐系统(四)--- 推荐系统服务端
- 推荐系统(一) —— 好的推荐系统
- 推荐系统(1)——推荐系统概述
- 推荐系统(1)—推荐系统评测
- Hadoop好友推荐系统-推荐结果查询
- 推荐系统学习(一)——推荐引擎初探
- 推荐系统导论笔记(四)
- 推荐系统学习笔记(四)
- 推荐系统相关的链接
- Hadoop、Spark开发入门视频书籍推荐
- HDU
- socketserver的简单使用
- Laravel 5.5设置跨域访问
- 数据库——Oracle中常见的日期类型及日期函数
- spring mvc项目从简入奢全过程记录(二):最简明的MVC
- Hadoop/Spark推荐系统(四)——推荐链接
- LeetCode.143 Reorder List
- Elimination Game问题及解法
- 【实战】2-4Linux上JDK,Tomcat,Maven安装配置(centOS,阿里云)
- python解方程
- html5学习笔记2 html简介
- Unable to load image ntoskrnl.exe的问题
- 类比C++ 学习Python的class
- WEB_01_HTML概述