? 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ì)您有幫助就好】元

