2016-08-23 95 views
1

我正在使用glmnet在matlab中進行多項式迴歸,並且具有大約6-10GB的數據集,具體取決於我製作測試集的大小。我可以將它加載到內存中,但似乎glmnetmex無法處理整個數據集以適應更大的培訓規模(例如,留下一個)。我懷疑應該有辦法將批處理輸入到glmnetmex,但我似乎無法在文檔中找到它。它是否存在,或者你有任何建議,否則如何進行?我沒事使用R版本,而不是它是否有解決這一問題glmnet批處理過大的數據集

+0

等等,你使用R還是Matlab? –

+0

我正在使用matlab,但在引擎蓋下,glmnetmex是Fortran。如果glmnet的matlab或R版本可以處理這個,我很好地使用任何一種實現(最好是matlab)。我會在這個問題上更清楚一點。 –

回答

0

如果能夠養活批次的方法的一種方式,需要兩兩件事:

  • 能力與以前適合初始化學習算法
  • 能夠運行學習算法迭代

glmnet數量有限有後者,但不幸的是,不是前者。我認爲你有幾個選擇來解決問題:

  • 找到一個更好的機器。如果您的財務資源允許,您可以考慮使用其中一項雲服務。
  • 挖入glmnet的代碼。 MATLAB和R包都是用FORTRAN編寫的實際優化器的包裝器。兩個包裝在將它們傳遞給FORTRAN解算器之前,對模型變量進行新的初始化。您可以嘗試修改它以使用預先計算的模型。
  • 您可以考慮建立一個整體預測,在那裏你訓練每批單獨glmnet模型,並使用加權投票方案(其中每個預測是由它的交叉驗證性能加權),以使最終的預測。
  • 我有一個R package,提供更廣泛的正規化框架,但它也可以用來訓練標準的彈性網模型與glmnet。我的包確實允許您使用預先計算的模型初始化訓練,並運行固定次數的迭代訓練。缺點是我只有一個二項式求解器,而不是多項式求解器。所以,你必須用一對一或者一對一休息方案來破解它。
  • 最後,如果你沒有連接到線性模型,還有很多其他的學習方法是允許的投入容易配料。深度學習和神經網絡框架目前是比較流行的框架之一。