Mahout中的推薦演算法主要有:User-based Recommender, Item-based Recommender和Slope-One Recommender。
1. User-based Recommender
該演算法的主要思想是:與使用者u最相似的使用者喜歡的商品有很大可能也是使用者u喜歡的商品。
1 對於使用者u的每一個沒有preference的商品i2 對於每一個對商品i有preference的使用者v3 計算使用者u與v的相似性s//實際上無需線上計算,可以事先計算好儲存起來4 將使用者v對於商品i的preference,乘以s,加到使用者u對商品i的預測preference的平均值5 返回使用者u的平均值最高的幾個商品作為推薦商品。
上述演算法需要窮舉每個商品i,導致計算非常非常慢。可以實現計算好某個使用者u的所有的鄰居(記為集合n),然後,再為使用者u做推薦時,只需要考慮使用者u的鄰居的所有有preference的商品即可,而無需考慮所有商品,演算法如下:
1 對於每個其他的使用者w2 計算使用者u與使用者w之間的相似性s3 返回使用者u的相似性最高的幾個使用者,記為使用者u的鄰居n4 //上述步驟可以離線完成,類似於索引5 對於使用者u的每個u本身沒有preference,但是u的鄰居n中某個使用者有preference的商品i6 對於每個對商品i有preference的使用者u的鄰居v7 計算使用者u與v的相似性//其實無需線上計算,可以提前計算好,儲存起來8 將使用者v對於商品i的preference,乘以s,加到使用者u對商品i的預測preference的平均值
2. Item-based Recommender
該演算法的主要思想是:喜歡商品i的使用者u,有很大可能性會喜歡和商品i很相似的其他商品
1 對於使用者u的每個沒有preference的商品i2 對於每個使用者u有preference的商品j3 計算商品i與j的相似性s4 把使用者u對商品j的preference,乘以s,加到使用者u對商品i的preference的平均值5 返回使用者u的平均值最高的幾個商品作為推薦商品
3. Slope-One Recommender
首先計算每兩個商品之間preference差值的平均值
1 對於某個商品i2 對於某個商品j3 對於每個對商品i和j都有preference的使用者u4 將使用者u對商品i和商品j的preference的差值加到所有使用者對商品i和商品j的差值的平均值當中去
推薦
1 對於使用者u的每個沒有preference的商品i2 對於使用者u的每個有preference的商品j3 取得商品i和商品j的preference差值的平均值diff4 將diff加上u對商品j的preference的和加入使用者u對商品i的preference的平均值當中去5 返回使用者u的預測preference最高的幾個商品作為推薦
[1] Mahout in Action