2012-03-08 104 views
3

我自己和我的朋友決定在python推薦引擎上做一個項目。最初我們決定用SVM做我們的項目,但很快就發現它的監督學習很困難,現在我們打算使用自己組織地圖,並可能與協作過濾(不知道是否可能)構建引擎。有人會提出一個很好的自組織映射參考。除了使用協作過濾外,還有其他選擇。基於SOM的推薦引擎

非常感謝。

+0

您可能會在CrossValidated或新的[DataScience.SE](http://datascience.stackexchange.com)上做得更好。 – smci 2016-11-28 13:19:08

回答

3

我不確定自組織映射實際上是最適合您的應用程序的。它可能會保留輸入空間的拓撲屬性,但它不適合於稀疏數據集,這在推薦引擎中是一個常見問題。我不會說SVM是更好的,事實上它可能比你想要做的更遠,但是SOM只會稍好一些。也就是說,如果你想學習如何構建一個SOM,按照有用性的順序,下面的資源是值得關注的。另外值得一提的是,SOM實際上在卷積神經網絡的理論上非常接近,所以任何資源都應該很好地支持。

http://en.wikipedia.org/wiki/Self-organizing_map 
http://ftp.it.murdoch.edu.au/units/ICT219/Papers%20for%20transfer/papers%20on%20Clustering/Clustering%20SOM.pdf 
http://www.eicstes.org/EICSTES_PDF/PAPERS/The%20Self-Organizing%20Map%20%28Kohonen%29.pdf 
http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf 
http://www.willamette.edu/~gorr/classes/cs449/Unsupervised/SOM.html 

至於方法,可能會更有意義的特定的應用程序,我可能會提出一個受限玻爾茲曼機。使用RBM的想法是,您將嘗試基於各種統計信息爲每個用戶創建一個「推薦配置文件」,爲用戶定義一個特徵向量。這個基本的預測會以一種類似於深度神經網絡的方式發生。

一旦你的網絡被訓練在一個方向上,一個RBM的真正的輝煌是,你然後運行它。您嘗試從推薦配置文件生成用戶配置文件,這對於這些應用程序非常適用。有關RBM的信息,您可以訪問這些鏈接:

http://deeplearning.net/tutorial/rbm.html 
http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf 
http://www.cs.toronto.edu/~hinton/absps/netflix.pdf 

Hinton基本上是這些的權威,也是數據科學的總BAMF。 RBM列表中的最後一個鏈接實際上能夠完全構建您的推薦引擎,但如果您想要使用更多的預建庫或利用其他數據科學部分,我會強烈建議使用某種降​​維機制,然後再嘗試任何協作過濾。

協同過濾最大的問題是你通常有一個非常稀疏的矩陣,它不能完全給你所需要的信息,並最終陷入很多對你沒有用的東西。出於這個原因,在主題建模領域有一系列算法可以幫助您降低數據的維度,從而使協作過濾變得微不足道,或者可以在上述任何其他方法中利用這些算法來獲取更有意義的數據強度較低。

gensim是一個python軟件包,它爲您完成了很多主題建模,並且還會爲您利用numpy和scipy構建tfidf向量。它也有很好的記錄。這些例子是針對更直接的NLP。請記住,它們的單個項目恰好是詞語的事實對底層算法沒有影響,您可以將其用於較少受限制的系統。

如果你想在主題建模部分尋找黃金,你應該看看Pachinko Allocation(PA),這是一個新的主題建模算法,它比其他大多數主題建模者有更多的承諾,但不會捆綁在一起在包裝中。

http://www.bradblock.com /Pachinko_Allocation_DAG_Structured_Mixture_Models_of_Topic_Correlations.pdf 

祝您在您的數據科學攻擊中幸運!如果您有任何問題,請告訴我,我可以嘗試回答。