我正在嘗試計算亞馬遜的「查看/購買X的客戶也查看/購買了Y和Z」的項目到項目的相似度。我所見過的所有示例和參考資料都是針對排名項目的計算項目相似度,用於查找用戶 - 用戶相似度或根據當前用戶的歷史記錄查找推薦項目。在考慮當前用戶的偏好之前,我想先採用非目標方法。協作過濾:非個性化的項目到項目的相似性
望着Amazon.com recommendations white paper,他們使用離線項目,項目相似以下邏輯:
For each item in product catalog, I1
For each customer C who purchased I1
For each item I2 purchased by customer C
Record that a customer purchased I1 and I2
For each item I2
Compute the similarity between I1 and I2
如果我理解正確的話,通過我們在「I1和I2之間計算similiarty」的時候,我具有與單個值I1(外部循環)一起購買的項目列表(I2)。
這個計算是如何進行的?
另一個想法是,我超越了這一點,使它比我所需要的更加困難 - 是否足以對與I1一起購買的I2的計數做一個前n查詢?
我也很感謝關於這種方法是否正確的建議。我的產品數據庫隨時都有大約15萬件產品。由於我所看到的大部分閱讀材料都顯示了用戶項目的相似性,甚至用戶用戶的相似性,我應該尋找這種方式。
我在過去使用過類似算法,但他們總是涉及排名或得分。我認爲唯一可行的方法是建立一個0/1的客戶產品矩陣,而不是購買/購買。鑑於購買歷史和項目大小,這可能會變得非常大。
編輯:雖然我列出了python作爲標記,但我更願意將邏輯保留在數據庫中,最好使用Oracle PL/SQL。
我有這本書,但它的例子都認爲東西是額定在書的情況下,電影和評論家(至少在關於相似性的章節)。例如,「給我的評級,給我看我想要的其他[電影|評論家]。」我的數據是剛剛購買的,如果必須的話,我可以派生出不購買的產品。 我不介意使用貝葉斯,但我不尋找用戶A購買X的可能性。我更感興趣的是顯示A的購買者也購買了Z.免責聲明 - 我可能不理解這一點以及我認爲我尊重想要項目項目與用戶項目。 –
@Neil,使用購買/不購買作爲0和1的評級 - 不是最大的計算效率,但概念上顯示如何,如果你知道如何處理瓦特/評級,然後**當然**你知道如何處理W /只是購買以及!而且,它必須使用貝葉斯(或其中的大約)纔有意義,否則你不能切斷要顯示在「同樣購買」列表中的項目數量,並且最終會有數百萬項目(= =完全無用),而且目錄龐大,用戶衆多,而且即使是非常適中的電子商務網站也是如此。 –