? Mahout中的推薦算法主要有:User-based Recommender, Item-based Recommender和Slope-One Recommender。
? 1. User-based Recommender
??? 該算法的主要思想是:與用戶u最相似的用戶喜歡的商品有很大可能也是用戶u喜歡的商品。
1 對(duì)于用戶u的每一個(gè)沒(méi)有preference的商品i 2 對(duì)于每一個(gè)對(duì)商品i有preference的用戶v 3 計(jì)算用戶u與v的相似性s // 實(shí)際上無(wú)需在線計(jì)算,可以事先計(jì)算好存儲(chǔ)起來(lái) 4 將用戶v對(duì)于商品i的preference,乘以s,加到用戶u對(duì)商品i的預(yù)測(cè)preference的平均值 5 返回用戶u的平均值最高的幾個(gè)商品作為推薦商品。
?
? 上述算法需要窮舉每個(gè)商品i,導(dǎo)致計(jì)算非常非常慢。可以實(shí)現(xiàn)計(jì)算好某個(gè)用戶u的所有的鄰居(記為集合n),然后,再為用戶u做推薦時(shí),只需要考慮用戶u的鄰居的所有有preference的商品即可,而無(wú)需考慮所有商品,算法如下:
1 對(duì)于每個(gè)其他的用戶w 2 計(jì)算用戶u與用戶w之間的相似度s 3 返回用戶u的相似度最高的幾個(gè)用戶,記為用戶u的鄰居n 4 // 上述步驟可以離線完成,類似于索引 5 對(duì)于用戶u的每個(gè)u本身沒(méi)有preference,但是u的鄰居n中某個(gè)用戶有preference的商品i 6 對(duì)于每個(gè)對(duì)商品i有preference的用戶u的鄰居v 7 計(jì)算用戶u與v的相似度 // 其實(shí)無(wú)需在線計(jì)算,可以提前計(jì)算好,存儲(chǔ)起來(lái) 8 將用戶v對(duì)于商品i的preference,乘以s,加到用戶u對(duì)商品i的預(yù)測(cè)preference的平均值
? 2. Item-based Recommender
??? 該算法的主要思想是:喜歡商品i的用戶u,有很大可能性會(huì)喜歡和商品i很相似的其他商品
1 對(duì)于用戶u的每個(gè)沒(méi)有preference的商品i 2 對(duì)于每個(gè)用戶u有preference的商品j 3 計(jì)算商品i與j的相似度s 4 把用戶u對(duì)商品j的preference,乘以s,加到用戶u對(duì)商品i的preference的平均值 5 返回用戶u的平均值最高的幾個(gè)商品作為推薦商品
? 3. Slope-One Recommender
??? 首先計(jì)算每?jī)蓚€(gè)商品之間preference差值的平均值
1 對(duì)于某個(gè)商品i 2 對(duì)于某個(gè)商品j 3 對(duì)于每個(gè)對(duì)商品i和j都有preference的用戶u 4 將用戶u對(duì)商品i和商品j的preference的差值加到所有用戶對(duì)商品i和商品j的差值的平均值當(dāng)中去
??? 推薦
1 對(duì)于用戶u的每個(gè)沒(méi)有preference的商品i 2 對(duì)于用戶u的每個(gè)有preference的商品j 3 取得商品i和商品j的preference差值的平均值diff 4 將diff加上u對(duì)商品j的preference的和加入用戶u對(duì)商品i的preference的平均值當(dāng)中去 5 返回用戶u的預(yù)測(cè)preference最高的幾個(gè)商品作為推薦
?
? [1] Mahout in Action
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
