2

我正在用真實用戶數據實現電影推薦系統。我計劃採取協作過濾方法。但是,這種方法通常需要一個巨大的矩陣來存儲用戶的額定電影。因爲我有超過一萬部電影和十萬用戶。我不可能創建這樣一個巨大的稀疏矩陣。我想知道每個人如何通過如此大量的數據實施協作過濾?謝謝!帶有大量數據的推薦系統

+0

一個巨大的*稀疏*矩陣有什麼問題?這應該是很好的。 – 2013-03-12 18:16:55

+0

矩陣非常龐大,我無法在我的matlab中創建矩陣。可以用其他語言解決嗎? – 2013-03-13 01:53:31

回答

3

我會向你推薦分佈式計算框架,但是,我認爲仍然有一個規模,你可以輕鬆地在一臺機器上處理它。

Apache Mahout包含Taste協作過濾庫,它旨在在一臺機器上進行縮放。一個模型 - 什麼,10M數據點? - 應該適合記憶與健康的堆大小。看看像GenericItemBasedRecommenderFileDataModel。 (基於亨利馬烏也有分佈實現Hadoop的,但我不認爲你需要這個呢。)

我的那個作者,但此後移動作爲商業化大規模引薦Myrrix。它還包含一個獨立的單機版,這是免費的,並且open source。它也可以在一臺機器上輕鬆處理這些數據。例如,這是比在this example中使用的數據集更小的數據集。 Myrrix也有一個分佈式實現。

還有其他的快速分佈式以上的實現,如GraphLab。其他非分佈式框架也可能足夠快,如MyMediaLite

我會建議只使用其中的一種,或者如果您真的只是想知道「如何」發生,請檢查源代碼並查看數據表示。

0

我沒有使用矩陣形式來存儲我的數據。相反,我使用C++並構建了一些結構,如User,Rating,Item,它們包含我需要的變量和數組。這可能會增加算法的複雜性,但它可以有效地節省內存。