hadoop實例:電子商務網站商品推薦系統


薦系統無處不在

比如:

購買成功后:購買了該商品的其他用戶購買了以下商品

搜索成功后:您可能感興趣的以下商品

主頁或廣告:您可能感興趣的以下商品

如下圖,用戶A購買物品AC;用戶B購買物品ABC;當用戶C購買物品A后,根據數據分析發現,購買物品A的用戶大多數購買了物品C,所以提醒用戶C”購買了該商品的其他用戶購買了以下商品:物品C”。 下面我們就模擬實現這個功能

 

這里有一堆數據,記錄的是用戶購物記錄;要求用戶推薦和他之前喜歡的物品相似的物品。

item_id,user_id,action,vtime
i161,u2625,click,2014/9/18 15:03
i161,u2626,click,2014/9/23 22:40
i161,u2627,click,2014/9/25 19:09
i161,u2628,click,2014/9/28 21:35
i161,u2629,click,2014/9/27 16:33
i161,u2630,click,2014/9/5 18:45
i161,u2631,click,2014/9/29 16:57
i161,u2632,click,2014/9/24 21:58
i161,u2633,click,2014/9/25 22:41
i161,u2634,click,2014/9/16 13:30
i161,u2635,click,2014/9/20 9:23
i161,u2636,click,2014/9/21 1:00
i161,u2637,click,2014/9/24 22:51
i161,u2638,click,2014/9/27 22:40

解決思路:

將數據拆分  用戶對物品的喜愛度得分矩陣 與  物品的同現矩陣 如下圖,矩陣相乘得到的就是推薦商品

 

 

 

101…107指商品分數   U3指用戶評分 

R指矩陣乘積,如 40=2*(5+3+4+4+2+2+1)

R最高的代表推薦商品

 

需要五次mapReduce處理數據

第一次mapReduce做的事情?去重復數據;

第二次mapReduce做的事情?

按用戶分組,計算所有物品出現的組合列表,得到用戶對物品的喜愛度得分矩陣

u13 i160:1,

u14 i25:1,i223:1,

u16 i252:1,

u21 i266:1,

u24 i64:1,i218:1,i185:1,

u26 i276:1,i201:1,i348:1,i321:1,i136:1,

第三次mapReduce做的事情?

對物品組合列表進行計數,建立物品的同現矩陣

i100:i100   3

i100:i105   1

i100:i106   1

i100:i109   1

i100:i114   1

i100:i124   1

第四次mapReduce做的事情?

把同現矩陣和得分矩陣相乘

u13  i100,3

u13  i100,2

u13  i105,1

u14  i100,3

u14  i105,1

 

第五次mapReduce做的事情?

 

把相乘之后的矩陣相加獲得結果矩陣

u13  i100,5

u13  i105,1

u14  i100,3

u14  i105,1

 

代碼實現如下:

網址: https://github.com/hzcjd8/hadoop

hadoop偽分布式安裝(單機版) HDFS +Yarn


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM