1. 程式人生 > >推薦系統user-based和item-based協同過濾演算法定性比較

推薦系統user-based和item-based協同過濾演算法定性比較

    研究生期間做了兩年的推薦系統、資料探勘方面的學術研究,因為工作的原因,近期正在整理當初的學習資料和程式碼,本篇主要參考資料為項亮的《推薦系統實踐》。

    在現實的情況中,往往物品的個數是遠遠小於使用者的數量的,而且物品的個數和相似度相對比較穩定,可以離線完成工作量最大的相似性計算步驟,從而大大降低了線上計算量,基於使用者的實時性更好一些。但是具體使用的場景,還需要根據具體的業務型別來區分,User-CF偏重於反應使用者小群體熱點,更具社會化,而Item-CF在於維持使用者的歷史興趣,比如:對於新聞、閱讀類的推薦,新聞閱讀類的資訊是實時更新的,所以ItemCF在這種情況下需要不斷更新,而使用者對新聞的個性化推薦不是特別的強烈情況,使用者有新行為不會導致相似使用者的劇烈運動。

    對於電子商務類別的,由於使用者消費代價比較高,所以對個性化的精確程度要求也比較高,而一段使用者有新的行為,也會導致推薦內容的實時變化協同過濾的演算法缺點也很明顯,除了上面的冷啟動之外,往往商家的使用者數量和產品數量都很多,所以矩陣的計算量會非常的大,但某個具體的使用者往往買的東西又有限,所以資料同時也是高度稀疏的。

    UserCF給使用者推薦那些和他有共同興趣愛好的使用者喜歡的物品,而ItemCF給使用者推薦那些和他之前喜歡的物品類似的物品。從這個原理可以看到,UserCF的推薦結果著重於反映和使用者興趣相似的小群體的熱點,而ItemCF的推薦結果著重於維繫使用者的歷史興趣。UserCF

的推薦更社會化,反映了使用者所在的小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化,反映了使用者自己的興趣傳承。同時,從技術上來說,UserCF需要維護一個使用者相似度的矩陣,而ItemCF需要維護一個物品相似度矩陣。從儲存的角度來說,如果使用者很多,那麼維護使用者興趣相似度矩陣需要很大的空間,同理,如果物品很多,維護物品相似度矩陣代價較大。

計算複雜度

    user-based方法中相似度矩陣為user-user相似度矩陣,行列數均為系統中的使用者數,計算近鄰使用者的時候需要比較當前使用者與系統中其它所有使用者的相似度。系統中使用者越多,相似度矩陣就越大,計算近鄰使用者消耗的時間也就越多;item

-based方法中相似度矩陣為item-item相似度矩陣,行列數均為系統中的物品數,計算近鄰物品的時候需要比較當前物品與系統中其它所有物品的相似度。系統中物品越多,相似度矩陣就越大,計算近鄰物品消耗的時間也就越多。因此,當系統中使用者量很大,而物品數量相對固定的時候,適合用item-based方法,例如電影、視訊推薦等;當系統中物品數量很大,而使用者數量相對固定的時候,適合用user-based方法,例如新聞推薦等。

適用場景

    簡單來講,user-based方法更適合社交網路站點的產品推薦,而item-based方法更適合非社交網路站點的產品推薦。在社交網路站點中(例如微信、人人網等),使用者之間具有很強的社交關係,相互比較信任。向用戶推薦自己周圍人喜歡的物品,更具說服力,也更讓使用者接受;相反,在非社交網路站點中(例如豆瓣、電影網站等),使用者與使用者之間的關係比較弱,也不存在很強烈的信任度。向用戶推薦其它使用者喜歡的物品,說服力不強,使用者很難接受。這時候,向用戶推薦與他自己曾經喜歡過的物品類似的物品,具有較強的說服力,推薦的結果也更能讓使用者理解。

推薦結果多樣性

    在實際運用中,推薦結果的多樣性對使用者體驗有很大的影響。試想,一個使用者就因為是周杰倫的粉絲,於是系統就給他推薦滿屏有關周杰倫的新聞,這樣的推薦系統無疑是失敗的(即使它精確地捕捉到該使用者是周杰倫的粉絲這一點)。因此,在設計推薦系統時必須考慮推薦結果的多樣性。簡單分析不難發現,item-based方法推薦結果的多樣性不如user-baseditem-based方法推薦的是自己歷史喜歡的物品的近鄰物品,也就是說,被推薦的物品永遠都圍繞自己的歷史興趣產生,不可能推薦與自己歷史興趣不太相關的物品。而user-based方法推薦的是自己近鄰使用者喜歡的物品,其它使用者是自己的近鄰使用者,只能說明我們之間曾經共同喜歡過很多物品,對方仍然喜歡很多物品與我的歷史興趣無關,它們是隱藏在我內心深處而未表現出來的的興趣,這些物品將會被user-based協同過濾演算法推薦給我。

系統覆蓋率

    推薦系統的覆蓋率是指系統中有多少物品可能被推薦。對於推薦系統的運營方而言,當然希望系統中的所有物品都有可能被推薦系統推薦給使用者。分析發現,user-based推薦的產品多集中在熱門產品裡面,而item-based方法更善於推薦長尾的產品。因此,item-based推薦方法的整體覆蓋率要高於user-based

推薦精度

    user-baseditem-based兩種協同過濾方法的精度類似。統計發現,二者推薦的內容之間存在50%的相似度,另外50%的內容各自有各自的特點。因此,通常將兩個方法混用,使其互補。

使用者對推薦演算法的適應度

    假設使用者有明確的興趣(它的歷史記錄聚焦在某個興趣點上),那麼,他更適應item-based推薦演算法;相反,假設使用者沒有明確的興趣,或者興趣比較分散,但是該使用者有很多好友,或者他的近鄰使用者分散比較密切,則更適應user-based推薦演算法