簡體   English   中英

在sklearn中使用partial_fit的GridSearchCV/RandomizedSearchCV

[英]GridSearchCV/RandomizedSearchCV with partial_fit in sklearn

根據 sklearn 的RandomizedSearchCVGridSearchCV模塊的文檔,它們僅支持傳遞給它們的分類器的fit方法,不支持可用於增量訓練的分類器的partial_fit方法。 目前,我正在嘗試使用SGDClassifier ,它可以使用partial_fit方法對增量數據進行訓練,並且還可以找到相同的最佳超參數集。 我只是想知道為什么RandomizedSearchCVGridSearchCV支持partial_fit 我沒有看到任何關於為什么不能這樣做的技術原因(如果我在這里錯了,請糾正我)。 任何線索將不勝感激。

是的,從技術上講,您也可以為partial_fit編寫一個GridSerachCV,但是當您考慮

  • 您正在尋找什么?
  • 您正在優化什么?

它與我們使用.fit()方法所做的完全不同。 這是我在GridsearchCV / RandomSearchCV沒有partial_fit的原因。

您正在尋找什么?

  1. 當我們針對一批數據優化模型的超級參數時,對於最終模型(使用多個partial_fit對完整數據進行訓練)而言,它可能不是最佳的。 現在,問題就變成了找到超參數的最佳計划,即在每個批次/時間步中超參數的最佳值是多少。 其中一個示例是神經網絡中遞減的學習率,其中我們使用多個partial_fit和超參數來訓練模型-學習率值不是單個值,而是每個時間步長/需要使用的一系列值批量。

  2. 此外,您還需要遍歷整個數據集多次(多個時期),以了解超參數的最佳調度。 這需要對GridSearchCV進行基本的API更改。

您正在優化什么?

  1. 現在需要更改模型的評估指標。 該指標可能會在所有partial_fit的結尾處獲得最佳性能,或者可以以常規指標( precisionrecallf1-score等)(一種或兩種的組合)快速(以較少的批次)達到最佳點。 因此,這還需要API更改以計算單個值以匯總模型的性能,該更改使用多個partial_fit進行訓練。

我認為這可以以不同的方式解決。 我遇到了只有partial_fit起作用的問題(數據太大而無法通過fit進行完整的批量學習),所以我認為 scikit-learn 應該在某處提供partial_fit支持。

您可以編寫一個簡單的包裝器(類似於 pytorch DataLoader ),將partial_fit模型轉換為fit模型,並在包裝​​器的fit進行批量拆分和洗牌,而不是在GridSearchCV中使用partial_fit 然后您可以使GridSearchCV工作,並使用包裝器提供的額外參數進行微調( batch_sizeis_shuffle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM