2015-02-11 126 views
2

我很好奇基於類似推薦的算法。我的意思是人們可以「喜歡」某些東西,但他們不能「不像」某種東西。這種情況下有什麼樣的推薦算法。基於類似的推薦

我有一個想法,但我不認爲它的可擴展性。我的想法是創建一個圖表,其中每個可愛的項目對於每個其他喜歡的項目具有邊緣容量,其中邊緣容量是喜歡這兩個項目的用戶數量的共同點。然後爲某個用戶提供建議,可以增加圖形,以便用戶是源節點,並且對用戶喜歡的所有項目具有無限邊緣。用戶不喜歡的所有項目都具有無限容量的邊緣到目的節點。然後使用Ford-Fulkerson運行最大流量,並根據目的地的邊緣流量對建議進行排序。然而,一想到它,一張1000個或更多的圖表就會很快失去控制。

我曾經想過其他系統如協作過濾器,但我不確定他們會很好地工作,考慮到沒有投票或多個喜歡的比例。因此,「不喜歡」與「尚未喜歡」無法區分。

我會很感激任何想法或資源。

+0

「看到和不喜歡」與「看不見」有很大區別。如果用戶看過某件物品,您是否有數據?看到和不喜歡有時用作弱「反感」 – amit 2015-02-11 06:40:21

回答

3

有一些點,你可以使用:

  1. 有「見過,不喜歡」到「沒有看到」有很大的區別。通常,「看到和不喜歡」被用作弱的「不喜歡」,然後你可以使用協作過濾。
  2. 您仍然可以找到基於喜歡的「類似用戶」,並基於一組類似用戶(喜歡類似的東西) - 您可以推薦他們喜歡的物品。如果他們喜歡的項目集合具有較高的Jaccard similarity(例如),則可以確定兩個用戶「相似」,並推薦大部分「相似」用戶喜歡的項目。

您可能會搜索更多選擇的文獻,這是過去幾年www conference的熱門話題,新方法總是在不斷髮展。

+0

我明白了。因此,使用jaccard相似度,每個建議的費用大約爲O(N * M),其中N是用戶數量,M是項目數量。實際上,性能會隨着2 * M是喜歡的項目的平均數量或類似的東西。現在考慮可能有一百萬用戶和每個用戶喜歡的1000個項目,我們可能需要稍快些的東西。增量方法會在每個新的「喜歡」上花費O(N)。我想這是協作過濾開始蓬勃發展的地方。有什麼想法嗎? – Chet 2015-02-11 19:36:44