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

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