2012-04-27 28 views
3

如果我想要使用太大而不適合內存的矩陣進行大量數據擬合,我會查看哪些工具/庫?具體來說,如果我通常使用php + mysql在網站上運行數據,那麼如何建議在合理的時間內執行大型矩陣操作的離線進程?Web數據上的大型機器學習

可能的答案可能就像「你應該用這種語言和這些分佈式矩陣算法來映射許多機器上的減少量」。我認爲php不是最好的語言,所以流程更像是其他離線進程從數據庫中讀取數據,進行學習,並將規則存儲回php中可以使用的格式(因爲該網站的其他部分是建立在PHP)。

不知道這是否是正確的地方問這個問題(在機器學習SE中會問這個問題,但它從來沒有超出測試版)。

+1

機器學習已被交叉驗證合併。 – 2012-04-27 08:52:58

回答

3

如果你想處理大量的數據,你需要做很多事情。處理網絡規模數據的 一種方法是使用的Map/Reduce,也許你可以看看Apache Mahout這是一個包含

  • 協同過濾可擴展的機器學習包
  • 用戶和基於項目引薦人
  • K-均值,模糊K均值聚類
  • 還有更多。

具體而言,您希望執行的操作可能在某些開源項目中可用,例如Weka,但您可能需要遷移/創建代碼以執行分發作業。

希望以上給出你的想法。

+0

謝謝你,非常有趣的東西,我會研究它。 – hackartist 2012-04-27 09:40:51

+0

如果它看起來很有趣,那就太好了。 – 2012-04-27 09:50:17

2

機器學習是一個廣泛的領域,可用於許多不同的事情(例如監督預測建模和無監督數據探索)。根據您想要達到的目標以及數據的性質和維度,找到可擴展的算法,這兩種算法對於他們輸出的模型的質量以及利用大型訓練集的可擴展性以及速度和內存消耗預測時間是一個難以回答的難題。一些算法可以是可擴展的,因爲它們是聯機的(即,增量學習而不必一次加載所有數據集),其他算法可擴展,因爲它們可以被分成可以並行執行的子任務。這一切都取決於你想要達到的目標以及你過去收集/註釋的數據類型。例如,對於文本分類,簡單線性模型(如具有良好特徵的邏輯迴歸(TF-IDF歸一化,可選二元組和可選的chi2特徵選擇))可以擴展到非常大的數據集(數百萬個文檔),而不需要羣集上的任何類型的羣集並行化。查看liblinear和vowpal wabbit來構建這樣的可伸縮分類模型。