基于物品的协同过滤ItemCF的mapreduce实现
文章的UML圖比較好看.....
原文鏈接:www.cnblogs.com/anny-1980/articles/3519555.html
基于物品的協(xié)同過濾ItemCF
數(shù)據(jù)集字段:
1.? User_id: 用戶ID
2.? Item_id: 物品ID
3.? preference:用戶對該物品的評分
?
算法的思想:
1.? 建立物品的同現(xiàn)矩陣A,即統(tǒng)計兩兩物品同時出現(xiàn)的次數(shù)
數(shù)據(jù)格式:Item_id1:Item_id2??????? 次數(shù)
2.? 建立用戶對物品的評分矩陣B,即每一個用戶對某一物品的評分
數(shù)據(jù)格式:Item_id????????? user_id:preference
3.? 推薦結(jié)果=物品的同現(xiàn)矩陣A * 用戶對物品的評分矩陣B
數(shù)據(jù)格式:user_id?????????? item_id,推薦分值
4. 過濾用戶已評分的物品項
5.對推薦結(jié)果按推薦分值從高到低排序
?
原始數(shù)據(jù):
| 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程序分為四步:
第一步: 讀取原始數(shù)據(jù),按用戶ID分組,輸出文件數(shù)據(jù)格式為
| 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 |
?
第二步:統(tǒng)計兩兩物品同時出現(xiàn)的次數(shù),輸出文件數(shù)據(jù)格式為
| 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 |
第三步:生成用戶評分矩陣和物品同現(xiàn)矩陣
第一個mapper結(jié)果為用戶評分矩陣,結(jié)果如下:
| 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生成物品同現(xiàn)矩陣,結(jié)果如下:
| 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 |
第四步:做矩陣乘法,推薦結(jié)果=物品的同現(xiàn)矩陣A * 用戶對物品的評分矩陣B
結(jié)果如下:
| 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 |
?
總結(jié)
以上是生活随笔為你收集整理的基于物品的协同过滤ItemCF的mapreduce实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克的锅?特斯拉大跌近10%,市值一夜
- 下一篇: 美股周四:三大股指走势分化,纳指跌逾2%