2013-03-29 54 views
3

我有一個基於用戶相似性的布爾偏好推薦。我的數據集基本上包含關係,其中ItemId是用戶決定閱讀的文章。我想添加第二個數據模型,其中包含ItemId是訂閱特定主題的位置。使用多重,加權數據模型的Mahout推薦

我可以想象做到這一點的唯一方法是合併兩者,抵消訂閱ID,以便它們不會與文章ID衝突。對於加權,我考慮放棄布爾偏好設置並引入偏好分數,其中文章子集的偏好分數爲1(例如),訂閱子集的偏好分數爲2.

我不確定是否這樣但是,因爲偏好分數並不完全類似於我之後的加權類型;他們可能包括一些代表不滿的低分數概念。

我不得不想象有一個更好的方法來做到這一點,或者至少是對我的計劃進行了調整,使其更符合我的願望。

回答

4

我想你正以正確的方式思考它。是的,你希望比簡單的存在更具表現力/不存在訂閱和文章,因爲它們意味着有些不同的東西。我建議選擇反映其相對頻率的權重。例如,如果用戶已經閱讀了100K篇文章,並且訂閱了10000個訂閱,那麼您可以選擇訂閱權重爲「10」,讀權重爲「1」。

由於多種原因,如果您將這些值視爲偏好分數,這並不完全正確。如果你使用一種把它們看作是線性權重的方法,它會更好。

我會告訴你ALS-WR算法,它是專門爲這種類型的輸入設計的。例如:Collaborative Filtering for Implicit Feedback Datasets

這是在Mahout中以Hadoop上的ParallelALSFactorizationJob實現的。它很好地工作,但需要Hadoop。 (雖然我在Mahout中編寫了大部分推薦代碼,但我無法相信這一點)。

廣告:我正致力於將從我在Mahout工作演變而來的「下一代」系統商業化爲Myrrix。它是ALS-WR的一個實現,非常適合您的輸入。 download and run相當簡單,不需要Hadoop。

鑑於它可能會直接適合您的問題,我不介意在這裏插入它。

+0

我沒有看到多個數據集支持我Myrrix除了實驗示例:合併建議 – Hurda

+0

我不是指合併模型。這裏,不同的數據集是用戶文章和用戶訂閱數據。兩者都可以添加到一個模型中,具有不同的權重。它們實際上並不重要,他們只能通過權重來定義。 –

+0

所以我們可以用不同的權重重複輸入(相同的ID) - 它會被計算兩次(考慮到重量)? – Hurda