1. 程式人生 > 實用技巧 >hadoop例項:電子商務網站商品推薦系統

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/bigData

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