python超參數(shù)優(yōu)化的具體方法
1、手動調(diào)參,但這種方法依賴于大量的經(jīng)驗,而且比較費時。
許多情況下,工程師依靠試錯法手工調(diào)整超參數(shù)進(jìn)行優(yōu)化,有經(jīng)驗的工程師可以在很大程度上判斷如何設(shè)置超參數(shù),從而提高模型的準(zhǔn)確性。
2、網(wǎng)格化尋優(yōu),是最基本的超參數(shù)優(yōu)化方法。
利用這種技術(shù),我們只需要為所有超參數(shù)的可能性建立一個獨立的模型,評估每個模型的性能,選擇產(chǎn)生最佳結(jié)果的模型和超參數(shù)。
from sklearn.datasets import load_iris
from sklearn.svm import SVC
iris = load_iris()
svc = SVR()
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVR
grid = GridSearchCV(
estimator=SVR(kernel='rbf'),
param_grid={
'C': [0.1, 1, 100, 1000],
'epsilon': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10],
'gamma': [0.0001, 0.001, 0.005, 0.1, 1, 3, 5]
},
cv=5, scoring='neg_mean_squared_error', verbose=0, n_jobs=-1)
3、隨機尋優(yōu),可以更準(zhǔn)確地確定某些重要超參數(shù)的最佳值。
并非所有的超參數(shù)都有同樣的重要性,有些超參數(shù)的作用更加明顯。
知識點擴充:
貝葉斯優(yōu)化方法
簡單地說,貝葉斯優(yōu)化通過基于過去對目標(biāo)的評估結(jié)果建立一個代理函數(shù)(概率模型)找到使得目標(biāo)函數(shù)最小的值。代理函數(shù)比目標(biāo)函數(shù)更易于優(yōu)化,因此下一個待評估的輸入值是通過對代理函數(shù)應(yīng)用某種標(biāo)準(zhǔn)(通常為預(yù)期提升)來選擇的。貝葉斯方法不同于隨機搜索或網(wǎng)格搜索,后兩者都使用了過去的評估結(jié)果來選擇接下來待評估的值。它們的思想是:通過根據(jù)過去表現(xiàn)良好的值選擇下一個輸入值來限制評價目標(biāo)函數(shù)的高昂開銷。
對于超參數(shù)優(yōu)化來說,其目標(biāo)函數(shù)為使用一組超參數(shù)的機器學(xué)習(xí)模型的驗證誤差。它的目標(biāo)是找出在驗證集上產(chǎn)生最小誤差的超參數(shù),并希望將這些結(jié)果泛化到測試集上去。對目標(biāo)函數(shù)評估的開銷是巨大的,因為它需要訓(xùn)練帶有一組特定超參數(shù)的機器學(xué)習(xí)模型。理想情況下,我們希望找到這樣一方法,它既能探索搜索空間,又能限制耗時的超參數(shù)評估。貝葉斯超參數(shù)調(diào)優(yōu)使用一個不斷更新的概率模型,通過從過去的結(jié)果中進(jìn)行推理,使搜索過程「專注」于有可能達(dá)到最優(yōu)的超參數(shù)。
Python 環(huán)境下有一些貝葉斯優(yōu)化程序庫,它們目標(biāo)函數(shù)的代理算法有所區(qū)別。在本文中,我們將使用「Hyperopt」庫,它使用樹形 Parzen 評估器(TPE,https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf)作為搜索算法,其他的 Python 庫還包含「Spearmint」(高斯過程代理)和「SMAC」(隨即森林回歸)。目前在這個領(lǐng)域有大量有趣的研究,所以如果你對某一個庫不是很滿意,你可以試試其他的選項!針對某個問題的通用結(jié)構(gòu)(本文將使用的結(jié)構(gòu))可以在各個庫間進(jìn)行轉(zhuǎn)換,其句法差異非常小。
到此這篇關(guān)于python超參數(shù)優(yōu)化的具體方法的文章就介紹到這了,更多相關(guān)python超參數(shù)如何優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django 設(shè)置多環(huán)境配置文件載入問題
這篇文章主要介紹了Django 設(shè)置多環(huán)境配置文件載入問題,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
django中使用POST方法獲取POST數(shù)據(jù)
這篇文章主要介紹了django中使用POST方法獲取POST數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09
Python虛擬環(huán)境virtualenv是如何使用的
今天給大家?guī)淼氖顷P(guān)于Python虛擬環(huán)境的相關(guān)知識,文章圍繞著Python虛擬環(huán)境virtualenv是如何使用的展開,文中有非常詳細(xì)的解釋及代碼示例,需要的朋友可以參考下2021-06-06
在Keras中CNN聯(lián)合LSTM進(jìn)行分類實例
這篇文章主要介紹了在Keras中CNN聯(lián)合LSTM進(jìn)行分類實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫操作示例
這篇文章主要介紹了Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫操作,簡單介紹了flask、Mysql-Python以及Flask-SQLAlchemy的安裝方法,并結(jié)合實例形式分析了基于Flask-SQLAlchemy的數(shù)據(jù)庫連接相關(guān)操作技巧,需要的朋友可以參考下2018-08-08

