2017-10-13 136 views
0

我正在運行fit(),使用約5,000行的訓練集,使用LogisticRegression作爲分類器。我正在使用CrossValidator和參數網格(假設每個參數都與其他參數的所有組合一起嘗試,可能總共約有480個組合)什麼因素使訓練集(5000)的訓練(fit())極其緩慢?

這是本地運行的(「本地[*]」 - 所有可用內核應該被使用),並被分配12GB的RAM。相比於我們最終的訓練集,訓練集是很小的。

這是運行幾天 - 不是我所期望的。有人可以提供一些關於可能影響此性能的主要方面的提示/解釋嗎?

除非確有必要,否則我寧可不將Spark設置爲羣集。我原以爲這不是一項巨大的任務。

帕拉姆網格的例子:

return new ParamGridBuilder() 
    .addGrid(classifier.regParam(), new double[]{0.0, 0.1, 0.01, .3, .9}) 
    .addGrid(classifier.fitIntercept()) 
    .addGrid(classifier.maxIter(), new int[]{10, 20, 100}) 
    .addGrid(classifier.elasticNetParam(), new double[]{.8, .003}) 
    .addGrid(classifier.threshold(), new double[]{0.0, .03, 0.5, 1.0}) 
    .addGrid(classifier.standardization()); 

有什麼建議?

回答

1

那麼,480模型必須進行培訓和測試..這是巨大的工作量。

我建議喲做一些手工的探索,以確定在哪裏做GridSearch ..

例如,你可以驗證fitIntercept是好還是不只是一次(而不是240次,一個值和行吟詩人240倍其它值)

與標準化同樣的事情..

的論文參數

有些是黑/白的決定。