首頁 > 軟體

SMAC:如何在Python上用AutoML快速調整超參數

2021-05-17 23:00:30

為給定的資料科學問題生成第一個模型可能非常簡單。建立具有高精確度的有效模型要困難得多。資料科學家必須清理資料,完善功能,找到正確的指標,找到正確的驗證策略,正確構建測試和訓練集,以及微調所選模型的參數。

這些步驟中的大多數都受益於資料科學家的經驗,並且幾乎無法自動化。幸運的是,超參數調整不是這種情況,可以使用自動機器學習:AutoML。

超參數究竟是什麼?

當嘗試為給定的資料集擬合模型時,必須定義兩種參數:

用於配置模型的參數:深度決策,SVM模型的核心,多項式的階數,神經網路的層數,模型本身的參數:決策的權重,SVM核心的參數,多項式上的係數,每個神經元的權重

第一種參數稱為模型超參數,因為它們定義了模型的結構,而後者則附加到模型本身。

為什麼需要AutoML進行超參數調整?

請記住,「超參數優化」有時也稱為「超參數優化(HPO)」,它是通過根據所選指標確定模型的最佳配置來嘗試充分利用模型的過程。

使用AutoML的主要原因主要有兩個:

手動尋找最佳參數是一項非常繁瑣的任務。配置空間的組合可能因此而來。對於隨機量,要考慮的參數不少於10個。每個參數可以採用10個不同的值。因此,探索配置空間需要評估配置!

絕對不能保證為給定資料集優化的配置在另一個數據集上也能正常運行。每次將模型應用於新資料集時,優化超參數至關重要。

使用AutoML技術可以通過自動進行配置空間探索來解決這兩個限制。

使用AutoML進行超參數調整:一項艱鉅的任務

在繼續進行之前,向您展示如何有效地自動調整超參數,讓我們解釋一下為什麼這是一項複雜的任務。

讓我們進行一些數學運算以形式化理解什麼是超參數優化

HPO嘗試最小化通常使用交叉驗證生成的一個或多個測試集的評估指標。

其中M是使用給定的訓練集和測試集,我們要為其優化模型f_hat的度量的評估。 Theta是用於配置模型的參數集。值取自配置空間Theta。

通常,當面對這樣的優化問題時,使用基於數值微分的方法。基本上,優化函數,即具有f_hat的M的組成,相對於參數theta是有區別的。然後,使用牛頓-拉夫森(Newton-Raphson),梯度下降或任何類似方法來迭代收斂至最優值。

但是,在進行超參數調整的情況下,通常無法計算這些梯度:

度量可以是非平滑的,例如MAE。請參閱我關於該主題的其他論文。因此,區別是不可能的。

模型本身可能難以區分,不僅在符號上而且在數值上都難以區分。考慮所有基於樹的方法,這些方法是分段不變的。

梯度會消失。神經網路就是這種情況,XGBoost,CatBoost,LightGBM等。

對梯度進行數值評估非常耗時,因為對於每個參數方向上的每個變化,我們都需要訓練一個完整的模型。

模型超參數可能不是連續的。考慮XGBoost nb_estimators參數:它是一個整數值。相同代表分類參數。

請注意,自動微分在某些情況下可能會有所幫助,但是在大多數情況下,您無法使用梯度定向方法執行優化。

如您所見,在「超參數調整」的情況下,有許多原因禁止使用標準優化方法。我們是否被迫僅依靠我們作為資料科學家的經驗來選擇最佳參數?

為什麼不使用網格搜尋?

一種選擇是要找到XGBoost,Random Forest或任何其他模型的最佳超參數,只需要評估每種可能配置的指標即可。

但是如上所述,配置空間可能很大,即使計算機功能越來越強大,探索配置仍然(遠遠)無法實現。

那隨機搜尋呢

這是一個選擇,但是其中存在隨機性。我們將在下面看到它的工作原理,但不能保證至少在給定的時間內完成最佳配置。

使用SMAC

SMAC庫提出了一種隨機探索的方法:基於序列模型的演算法配置。

該庫背後的想法是建立一個模型(因此,在SMAC中縮寫為基於模型),該模型試圖估計給定超參數集的度量值。使用此內部模型,您可以隨機生成配置,然後使用此估計量來猜測最佳配置。

SMAC使用隨機模型來捕獲演算法/模型的行為,以針對指標進行優化。

總體演算法非常簡單,進行第一次訓練並計算指標。

然後生成隨機配置,將具有最佳估計分數的配置用於下一次訓練。然後,使用新結果對模型進行重新訓練,然後重新開始該過程。

配置空間探索由內部效能模型指導。如程式碼所示,受此SMAC示例的啟發,SMAC從先前的運行中學習並在每個步驟中提高其知識

上面的程式碼使用SMAC和RandomizedSearchCV調整超參數。請注意,SMAC支援連續實參數以及分類實參數。支援分類參數是使用隨機模型作為指導勘探的內部模式的原因之一。

這段程式碼說明了將SMAC與隨機模型進行微調的方法,但是我一直在將它用於XGBoost以及SVM或SARIMA模型,它的工作原理很吸引人。

根據超參數調整迭代次數繪製分數

我們看到隨機搜尋會錯誤地探索配置空間。該優化不會從先前的培訓中受益。

好了,本文到此結束。如果對程式設計、計算機、程式設計師方面感興趣的話,歡迎私信聯絡我,隨時交流!點個關注,是對我莫大的鼓勵!


IT145.com E-mail:sddin#qq.com