4

我一直在閱讀有關使用矩陣分解進行協作過濾的問題,但似乎無法找到一個處理向系統中添加新用戶或項目或者讓用戶對新項目進行評分的示例。在這些情況下,項目用戶矩陣和分解需要重新計算,是正確的嗎?這對大量的用戶和項目如何表現良好?有沒有辦法解決它?協作過濾的矩陣分解 - 新用戶和項目?

謝謝

+0

一對夫婦的附加條款,可以幫助你在你的搜索會「在線協作過濾」和隨機梯度下降。我沒有使用以下內容,它是java,但您可能想要查看https://github.com/MrChrisJohnson/CollabStream作爲可能滿足您需求的項目示例。 –

+0

在這裏看到一個可能的解決方案:http://stackoverflow.com/questions/41537470/als-model-how-to-generate-full-u-vt-v –

回答

3

你的問題有兩個部分:(A)如何應對新的用戶和項目,和(B),如何應對新的互動(例如,收視率,點擊次數等)。

(A)基本上有與新的用戶和項目交易(不管我們是否使用矩陣分解或別的東西)2種不同的策略:

  1. 估計用戶/從用戶的項目特徵(人口,調查)或項目(價格,流派,文字說明,類別)屬性
  2. 主動學習:以平衡個人用戶體驗和信息的方式向所有與系統交互的用戶或向系統新用戶顯示某些項目的新項目系統獲得收益。

有關這兩個問題的學術文獻中有很多論文。 (B)這實際上沒有問題 - 對矩陣分解模型的增量更新不具有高計算成本。例如見本文:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.165.8010&rep=rep1&type=pdf

的MyMediaLite庫(免責聲明:我公司的主要作者)支持多種矩陣分解方法增量更新:http://ismll.de/mymedialite

+0

如果你使用分解算法,如增量svd,因此「完成」用戶x項目矩陣,並在場景下產生新客戶1)他們有一些評級或2)他們沒有評級你會如何「評分」他們,而無需重新運行整個svd?在情景1下,您可以回退到在「已完成」矩陣上執行SVD(不是增量,而是標準svd),然後使用相似性度量來查看他們最接近哪些用戶,並使用完成矩陣中的條目來提出建議? –

+0

如果您不介意,還有一個問題,因爲您似乎是這方面的專家:增量式SVD(Simon Funk)可以用於二進制數據(客戶購買與否)還是需要使用其他功能?謝謝! –