2016-11-22 95 views
1

我是數據科學領域的新手。我想在500k行和81列的數據集上使用SVM訓練模型。在SciPy中運行多核心SVM代碼?

到目前爲止,在SciPy中運行此模型需要數小時。我可以訪問100個計算節點,每個核心有16個核心,但由於缺乏應該如何運行此SVM代碼的知識,所以不知道如何利用這一點。

有人能指出我該如何解決這個資源問題的方向嗎?

回答

0

你使用的是什麼內核函數?

支持向量機不能很好地擴展。運行時間是O(n^3),其中n是訓練樣本的數量。

如果你不使用內核功能,您可以創建一個火花集羣,您可以使用火花mllib SVM這是一個線性分類:

https://spark.apache.org/docs/latest/mllib-linear-methods.html

如果使用非線性核函數,然後您可以使用LIBIRWLS,即多核,所以你可以使用並行使用16個內核的機器上:

https://github.com/RobeDM/LIBIRWLS

+0

你有什麼想法長這樣的事情應該如何採取現實? –

+0

這是使用徑向基礎內核運行的內核 –

+0

您事先並不知道運行時間(它取決於培訓結束時支持向量的數量)。對於500.000的運行時間,如果使用libsvm可能會持續幾個小時。如果想要快速運行時間,可以使用SVM的近似值,查看這些庫(BudgetedSVM http://www.dabi.temple.edu/budgetedsvm/和LIBIRWLS:https://github.com/RobeDM/LIBIRWLS)包含一個簡化的算法。 – Rob