03.26 通過網格搜索和嵌套交叉驗證尋找機器學習模型的最優參數

在機器學習的模型中,通常有兩類參數,第一類是通過訓練數據學習得到的參數,也就是模型的係數,如迴歸模型中的權重係數,第二類是模型算法中需要進行設置和優化的超參,如logistic迴歸中的正則化係數和決策樹中的樹的深度參數等。在上一篇文章中,我們通過驗證曲線來尋找最優的超參,在這篇文章中,將通過一種功能更為強大的尋找超參的技巧:網格搜索,它可以尋找最優的超參組合,來提高模型的性能。

一、網格(grid search)搜索尋找超參

網格搜索:網格搜索其實是一種暴力搜索參數的方法,它通過我們指定不同的超參列表進行窮舉搜索,並計算每一個超參組合對於模型性能的影響,來獲取最優的超參組合。下面通過sklearn來實現網格搜索尋找超參

通過網格搜索和嵌套交叉驗證尋找機器學習模型的最優參數

通過上面的結果可以發現,當SVM的核為"linear"時,參數C為0.1時,模型獲得最好的結果為97.8%。

測試模型在測試集上的準確率

通過網格搜索和嵌套交叉驗證尋找機器學習模型的最優參數

網格搜索是一種功能強大的尋找超參的方法,但是由於它在尋找超參的時候使用的是窮舉法,需要評估所有的參數組合,所以計算成本也是非常高的。sklearn還提供一種隨機網格搜索參數RandomizedSearchCV類,可以以特定的代價從抽樣分佈中隨機抽取參數組合。

二、嵌套交叉驗證

通過網格搜索和嵌套交叉驗證尋找機器學習模型的最優參數

當我們需要在不同的機器學習算法中進行選擇的時候,可以通過嵌套交叉驗證來進行選擇。在對於誤差估計的偏差情形研究中表明:使用嵌套交叉驗證,估計的真實誤差與在測試集上得到的結果幾乎沒有差距。

嵌套交叉驗證分為外部循環和內部循環,在外部循環中,我們將數據分為訓練塊和測試塊。在內部循環中,我們將訓練塊分為訓練塊和測試塊,在訓練塊上使用k折交叉驗證,測試塊用於對於模型進行評估,通過內部循環來進行模型選擇。通過上圖可以發現,外部循環由5個模塊組合,內部循環由2個模塊組成,因此嵌套交叉驗證也被稱為5×2交叉驗證。下面通過sklearn來實現嵌套交叉驗證

通過網格搜索和嵌套交叉驗證尋找機器學習模型的最優參數

通過嵌套交叉驗證來判斷決策樹的表現性能

通過網格搜索和嵌套交叉驗證尋找機器學習模型的最優參數

通過SVM和決策樹的嵌套交叉驗證結果表明,SVM的模型性能要高於決策樹模型的性能。


分享到:


相關文章: