基于Hadoop的商品推荐系统
推荐:
基于特征:
基于行为:
基于物品:
基于用户:不确定性
使用协同过滤算法
相似度计算方式:
1.欧式距离:(x1,y1)(x2,y2)(x3,y3),比较三点距离,越近越相似
2.余弦夹角
3.共现矩阵
物品的相似度:物品共现次数
这个项目我是计算
推荐结果=用户的购买向量*物品的相似度矩阵
物品的相似度:物品的共现次数
1.项目名:GRES【Goods Recommend Engine System】
2.添加Maven依赖:pom.xml
3.创建包:
com.briup.bigdata.project.gres
|–step1
|–step2
|–…
|–utils
4.将集群上的四个xml配置文件放到resources目录中。
5.在HDFS集群的根目录下创建目录:
/gres
|–rawdata
|-----matrix.txt
|–step1
|–…
6.开始编程。
原始数据:(部分数据,这里为了方便我将用户评价分数改为是否购买,1是指购买)
10001 20001 1
10001 20002 1
10001 20005 1
10001 20006 1
10001 20007 1
10002 20003 1
10002 20004 1
10002 20006 1
10003 20002 1
10003 20007 1
10004 20001 1
10004 20002 1
10004 20005 1
10004 20006 1
10005 20001 1
10006 20004 1
10006 20007 1
a.计算用户购买商品的列表
类名:UserBuyGoodsList.java
UserBuyGoodsList
UserBuyGoodsListMapper
UserBuyGoodsListReducer
结果数据:
10001 20001,20005,20006,20007,20002
10002 20006,20003,20004
10003 20002,20007
10004 20001,20002,20005,20006
10005 20001
10006 20004,20007
b.计算商品的共现关系
文件:GoodsCooccurrenceList.java
类名:GoodsCooccurrenceList
GoodsCooccurrenceListMapper
GoodsCooccurrenceListReducer
数据来源:第1步的计算结果
计算结果:
20001 20001
20001 20001
20001 20002
20001 20005
20001 20006
20001 20007
20001 20001
20001 20006
20001 20005
20001 20002
20002 20007
20002 20001
20002 20005
20002 20006
20002 20007
20002 20002
20002 20006
20002 20005
20002 20002
20002 20001
20002 20002
20003 20003
20003 20004
20003 20006
20004 20004
20004 20007
20004 20004
20004 20006
20004 20003
20005 20002
20005 20006
20005 20005
20005 20001
20005 20005
20005 20006
20005 20007
20005 20001
20005 20002
20006 20005
20006 20003
20006 20004
20006 20001
20006 20002
20006 20006
20006 20002
20006 20006
20006 20007
20006 20006
20006 20001
20006 20005
20007 20006
20007 20004
20007 20007
20007 20002
20007 20007
20007 20005
20007 20001
20007 20002
20007 20007
c.计算商品的共现次数(共现矩阵)
文件:GoodsCooccurrenceMatrix.java
类名:GoodsCooccurrenceMatrix
GoodsCooccurrenceMatrixMappper
GoodsCooccurrenceMatrixReducer
数据来源:第2步的结果
计算结果:
20001 20001:3,20002:2,20005:2,20006:2,20007:1
20002 20001:2,20002:3,20005:2,20006:2,20007:2
20003 20003:1,20004:1,20006:1
20004 20003:1,20004:2,20006:1,20007:1
20005 20001:2,2