[英]GridSearchCV/RandomizedSearchCV with partial_fit in sklearn
根據 sklearn 的RandomizedSearchCV和GridSearchCV模塊的文檔,它們僅支持傳遞給它們的分類器的fit
方法,不支持可用於增量訓練的分類器的partial_fit
方法。 目前,我正在嘗試使用SGDClassifier
,它可以使用partial_fit
方法對增量數據進行訓練,並且還可以找到相同的最佳超參數集。 我只是想知道為什么RandomizedSearchCV
或GridSearchCV
支持partial_fit
。 我沒有看到任何關於為什么不能這樣做的技術原因(如果我在這里錯了,請糾正我)。 任何線索將不勝感激。
是的,從技術上講,您也可以為partial_fit
編寫一個GridSerachCV,但是當您考慮
它與我們使用.fit()
方法所做的完全不同。 這是我在GridsearchCV
/ RandomSearchCV
沒有partial_fit
的原因。
您正在尋找什么?
當我們針對一批數據優化模型的超級參數時,對於最終模型(使用多個partial_fit
對完整數據進行訓練)而言,它可能不是最佳的。 現在,問題就變成了找到超參數的最佳計划,即在每個批次/時間步中超參數的最佳值是多少。 其中一個示例是神經網絡中遞減的學習率,其中我們使用多個partial_fit
和超參數來訓練模型-學習率值不是單個值,而是每個時間步長/需要使用的一系列值批量。
此外,您還需要遍歷整個數據集多次(多個時期),以了解超參數的最佳調度。 這需要對GridSearchCV進行基本的API更改。
您正在優化什么?
partial_fit
的結尾處獲得最佳性能,或者可以以常規指標( precision
, recall
, f1-score
等)(一種或兩種的組合)快速(以較少的批次)達到最佳點。 因此,這還需要API更改以計算單個值以匯總模型的性能,該更改使用多個partial_fit
進行訓練。 我認為這可以以不同的方式解決。 我遇到了只有partial_fit
起作用的問題(數據太大而無法通過fit
進行完整的批量學習),所以我認為 scikit-learn 應該在某處提供partial_fit
支持。
您可以編寫一個簡單的包裝器(類似於 pytorch DataLoader
),將partial_fit
模型轉換為fit
模型,並在包裝器的fit
進行批量拆分和洗牌,而不是在GridSearchCV
中使用partial_fit
。 然后您可以使GridSearchCV
工作,並使用包裝器提供的額外參數進行微調( batch_size
和is_shuffle
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.