天天看點

推薦系統實戰-出租較高價的電梯大廈項目4-協同過濾算法推薦協同過濾算法如何使用協同過濾算法優缺點對比

https://github.com/worry1613/gongyu-recommend

代碼已經托管到github上,有任何的疑問可以直接看代碼,或者直接給我發郵件[email protected],看到我會及時回複。

協同過濾算法

協同過濾是推薦系統中最常用到的算法,最基礎的算法。 在協同過濾的基礎上,衍生出了很多進階的算法,新的算法。協同過濾分為2種,基于使用者的協同過濾,基于物品的協同過濾。

基于使用者的協同過濾(userCF)

基于使用者的協同過濾算法包括2個步驟:

1.找到和目标使用者興趣相似的使用者集合

2.找到這個集合中使用者喜歡的,且目标使用者沒有看過的物品推薦給使用者

推薦那些和他有共同興趣愛好的使用者喜歡的物品

簡單點一句話,‘看過A的使用者還看過哪些物品’。在物品詳情頁中,幾乎都能見到。

推薦系統實戰-出租較高價的電梯大廈項目4-協同過濾算法推薦協同過濾算法如何使用協同過濾算法優缺點對比

具體實作請看https://github.com/worry1613/gongyu-recommend/usercf.py

類userCF經典算法,類userCFIIF改進版算法,對熱門商品進行了适當的降級,使推薦資料更多樣性。

基于物品的協同過濾(itemCF)

基于使用者的協同過濾算法包括2個步驟:

1.計算物品之間的相似度

2.根據物品的相似度和使用者的曆史行為給使用者生成推薦清單

推薦那些和他之前喜歡的物品類似的物品

簡單點一句話,‘找到和看過的物品類似的物品’

具體實作請看https://github.com/worry1613/gongyu-recommend/itemcf.py

類itemCF經典算法,類itemCFIUF改進版算法,對熱門商品進行了适當的降級,使推薦資料更多樣性。

如何使用協同過濾算法

什麼情況下用基于使用者的協同過濾?什麼情況下用基于物品的協同過濾?

1.使用者和物品哪個資料少,就用基于哪個的算法,為什麼?計算量小啊,很快就能出結果。臨時可以用一用可以,長久不行。

2.時效性強的推薦使用基于使用者的協同過濾,例如,新聞推薦。

3.個性化強的推薦使用基于物品的協同過濾,例如,論文,歌,圖檔,商品 推薦。

UserCF是某個群體内的物品熱門程度

ItemCF是反應本人的興趣愛好,更加個性化

優缺點對比

項目 UserCF ItemCF
性能 适用于使用者較少的場合,如果使用者過多,計算使用者相似度矩陣的代價交大 适用于物品數明顯小于使用者數的場合,如果物品很多,計算物品相似度矩陣的代價交大
領域 實效性要求高,使用者個性化興趣要求不高 長尾物品豐富,使用者個性化需求強烈
實時性 使用者有新行為,不一定需要推薦結果立即變化 使用者有新行為,一定會導緻推薦結果的實時變化
冷啟動

在新使用者對少的物品産生行為後,不能立即對他進行個性化推薦,因為使用者相似度是離線計算的 

新物品上線後一段時間,一旦有使用者對物品産生行為,就可以将新物品推薦給其他使用者

新使用者隻要對一個物品産生行為,就能推薦相關物品給他,但無法在不離線更新物品相似度表的情況下将新物品推薦給使用者
推薦理由 很難提供 可以根據使用者曆史行為歸納推薦理由

多看代碼,了解算法,這個算法很簡單,簡單,單。

繼續閱讀