2011-02-22 40 views
4

我的意思是在亞馬遜上的產品建議或在Last.fm上的更具體類似的樂隊推薦。來自客戶購買/聆聽行爲的「類似產品/音樂/ ...」的統計計算是如何工作的?

考慮到您可以儲存您的用戶的完整聆聽/購買行爲(世衛組織聽取了何種方式?),您如何計算哪些頻段與任何給定頻段相似,以及多少?

我在維基百科上發現了一些網站(Association rule learning,Affinity analysis),但我想從程序員的角度獲取一些信息,最好是一些僞代碼或Python代碼。

考慮到我有

dic = { 
"Alice" : { "AC/DC" : 2, "The Raconteurs" : 3, "Mogwai" : 1 }, 
"Bob"  : { "The XX" : 4, "Lady Gaga" : 3, "Mogwai" : 1, "The Raconteurs" : 1 } 
"Charlie" : { "AC/DC" : 7, "Lady Gaga" : 7 } 
} 

在數字播放次數,我怎麼會遍歷這個發現帶的相似性?

+0

我不認爲你很清楚你在問什麼:你在問什麼數據結構需要實現購物籃分析? – 2011-02-22 17:49:15

+0

嗯,也許我可以編輯我的問題,使其更清晰。我正在尋找使用的算法。如果它被稱爲購物籃分析,你已經以某種方式幫助了我。我現在在維基百科的Affinity Analysis下找到它。但是,我無法在任何地方找到僞代碼或Python代碼。 – 2011-02-22 17:55:47

回答

1

我想你所談論的是協同過濾。據我所知,亞馬遜和其他公司使用名爲Apache Mahout的Java框架,簡而言之,它是基於用戶/項目數據的「推薦工廠」。

檢查出來,它是免費的。但是,我不確定它是否適合Python集成,我不是那個部門的新手。

2

您可能在Orange中找到了Association Rules小工具(除其他外),有助於入門。另一個可用的源碼包是pysuggest,它實現了許多recsys /協作過濾算法。

1

當你有數據關聯用戶和產品時,你隱式地在這兩組之間有一個二部圖。該圖的(非常稀疏的)鄰接矩陣很有用。如果你在標準化列的長度方面做了一些工作,然後將它的轉置乘以矩陣本身,那麼在某種意義上,你可以在中間用戶基礎上反映項目到項目的相似性。