您的位置:首页 > 其它

协同过滤--基于物品的推荐案例

2016-04-22 17:52 211 查看
数据集字段:

1.User_id: 用户ID 2.Item_id: 物品ID 3.preference:用户对该物品的评分

算法的思想:

1. 建立物品的同现矩阵A,即统计两两物品同时出现的次数. 数据格式:Item_id1:Item_id2 次数

2. 建立用户对物品的评分矩阵B,即每一个用户对某一物品的评分. 数据格式:Item_id user_id:preference

3. 推荐结果=物品的同现矩阵A * 用户对物品的评分矩阵B. 数据格式:user_id item_id,推荐分值

4. 过滤用户已评分的物品项

5.对推荐结果按推荐分值从高到低排序

原始数据:

1,101,5.0

1,102,3.0

1,103,2.5

2,101,2.0

2,102,2.5

2,103,5.0

2,104,2.0

3,101,2.0

3,104,4.0

3,105,4.5

3,107,5.0

4,101,5.0

4,103,3.0

4,104,4.5

4,106,4.0

5,101,4.0

5,102,3.0

5,103,2.0

5,104,4.0

5,105,3.5

5,106,4.0

6,102,4.0

6,103,2.0

6,105,3.5

6,107,4.0

Hadoop MapReduce程序分为四步:

第一步: 读取原始数据,按用户ID分组,输出文件数据格式为

1 103:2.5,101:5.0,102:3.0

2 101:2.0,102:2.5,103:5.0,104:2.0

3 107:5.0,101:2.0,104:4.0,105:4.5

4 103:3.0,106:4.0,104:4.5,101:5.0

5 101:4.0,102:3.0,103:2.0,104:4.0,105:3.5,106:4.0

6 102:4.0,103:2.0,105:3.5,107:4.0

第二步:统计两两物品同时出现的次数,输出文件数据格式为

101:101 5

101:102 3

101:103 4

101:104 4

101:105 2

101:106 2

101:107 1

102:101 3

102:102 4

102:103 4

102:104 2

102:105 2

102:106 1

102:107 1

103:101 4

103:102 4

103:103 5

103:104 3

103:105 2

103:106 2

103:107 1

104:101 4

104:102 2

104:103 3

104:104 4

104:105 2

104:106 2

104:107 1

105:101 2

105:102 2

105:103 2

105:104 2

105:105 3

105:106 1

105:107 2

106:101 2

106:102 1

106:103 2

106:104 2

106:105 1

106:106 2

107:101 1

107:102 1

107:103 1

107:104 1

107:105 2

107:107 2

第三步:生成用户评分矩阵和物品同现矩阵

第一个mapper结果为用户评分矩阵,结果如下:

101 2:2.0

101 5:4.0

101 4:5.0

101 3:2.0

101 1:5.0

102 2:2.5

102 1:3.0

102 6:4.0

102 5:3.0

103 6:2.0

103 5:2.0

103 1:2.5

103 4:3.0

103 2:5.0

104 5:4.0

104 2:2.0

104 3:4.0

104 4:4.5

105 5:3.5

105 3:4.5

105 6:3.5

106 4:4.0

106 5:4.0

107 3:5.0

107 6:4.0

第二个mapper生成物品同现矩阵,结果如下:

101:101 5

101:102 3

101:103 4

101:104 4

101:105 2

101:106 2

101:107 1

102:101 3

102:102 4

102:103 4

102:104 2

102:105 2

102:106 1

102:107 1

103:101 4

103:102 4

103:103 5

103:104 3

103:105 2

103:106 2

103:107 1

104:101 4

104:102 2

104:103 3

104:104 4

104:105 2

104:106 2

104:107 1

105:101 2

105:102 2

105:103 2

105:104 2

105:105 3

105:106 1

105:107 2

106:101 2

106:102 1

106:103 2

106:104 2

106:105 1

106:106 2

107:101 1

107:102 1

107:103 1

107:104 1

107:105 2

107:107 2

第四步:做矩阵乘法,推荐结果=物品的同现矩阵A * 用户对物品的评分矩阵B

结果如下:

1 107,10.5

1 106,18.0

1 105,21.0

1 104,33.5

1 103,44.5

1 102,37.0

1 101,44.0

2 107,11.5

2 106,20.5

2 105,23.0

2 104,36.0

2 103,49.0

2 102,40.0

2 101,45.5

3 107,25.0

3 106,16.5

3 105,35.5

3 104,38.0

3 103,34.0

3 102,28.0

3 101,40.0

4 107,12.5

4 106,33.0

4 105,29.0

4 104,55.0

4 103,56.5

4 102,40.0

4 101,63.0

5 107,20.0

5 106,34.5

5 105,40.5

5 104,59.0

5 103,65.0

5 102,51.0

5 101,68.0

6 107,21.0

6 106,11.5

6 105,30.5

6 104,25.0

6 103,37.0

6 102,35.0

6 101,31.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: