0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機器學習的幾個超參數(shù)調(diào)試方法

新機器視覺 ? 來源:AI公園導讀 ? 作者:Sivasai ? 2020-10-09 14:17 ? 次閱讀

作者:Sivasai,來源:AI公園導讀

ML工作流中最困難的部分之一是為模型找到最好的超參數(shù)。ML模型的性能與超參數(shù)直接相關(guān)。

介紹

維基百科上說,“Hyperparameter optimization或tuning是為學習算法選擇一組最優(yōu)的hyperparameters的問題”。

ML工作流中最困難的部分之一是為模型找到最好的超參數(shù)。ML模型的性能與超參數(shù)直接相關(guān)。超參數(shù)調(diào)優(yōu)的越好,得到的模型就越好。調(diào)優(yōu)超參數(shù)可能是非常乏味和困難的,更像是一門藝術(shù)而不是科學。

超參數(shù)

參數(shù)是在建立模型時用于控制算法行為的參數(shù)。這些參數(shù)不能從常規(guī)訓練過程中獲得。在對模型進行訓練之前,需要對它們進行賦值。

超參數(shù)的簡單列表

內(nèi)容

傳統(tǒng)的手工調(diào)參

網(wǎng)格搜索

隨機搜索

貝葉斯搜索

1. 傳統(tǒng)手工搜索

在傳統(tǒng)的調(diào)參過程中,我們通過訓練算法手動檢查隨機超參數(shù)集,并選擇符合我們目標的最佳參數(shù)集。

我們看看代碼:

#importingrequiredlibraries fromsklearn.neighborsimportKNeighborsClassifier fromsklearn.model_selectionimporttrain_test_split fromsklearn.model_selectionimportKFold,cross_val_score fromsklearn.datasetsimportload_wine wine=load_wine() X=wine.data y=wine.target #splittingthedataintotrainandtestset X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=14) #declaringparametersgrid k_value=list(range(2,11)) algorithm=['auto','ball_tree','kd_tree','brute'] scores=[] best_comb=[] kfold=KFold(n_splits=5) #hyperparametertunning foralgoinalgorithm: forkink_value: knn=KNeighborsClassifier(n_neighbors=k,algorithm=algo) results=cross_val_score(knn,X_train,y_train,cv=kfold) print(f'Score:{round(results.mean(),4)}withalgo={algo},K={k}') scores.append(results.mean()) best_comb.append((k,algo)) best_param=best_comb[scores.index(max(scores))] print(f' TheBestScore:{max(scores)}') print(f"['algorithm':{best_param[1]},'n_neighbors':{best_param[0]}]")

缺點:

沒辦法確保得到最佳的參數(shù)組合。

這是一個不斷試錯的過程,所以,非常的耗時。

2. 網(wǎng)格搜索

網(wǎng)格搜索是一種基本的超參數(shù)調(diào)優(yōu)技術(shù)。它類似于手動調(diào)優(yōu),為網(wǎng)格中指定的所有給定超參數(shù)值的每個排列構(gòu)建模型,評估并選擇最佳模型??紤]上面的例子,其中兩個超參數(shù)k_value =[2,3,4,5,6,7,8,9,10]&algorithm =[' auto ', ' ball_tree ', ' kd_tree ', ' brute '],在這個例子中,它總共構(gòu)建了9*4 = 36不同的模型。

讓我們來了解一下sklearn的GridSearchCV是如何工作的:

fromsklearn.model_selectionimportGridSearchCV knn=KNeighborsClassifier() grid_param={'n_neighbors':list(range(2,11)), 'algorithm':['auto','ball_tree','kd_tree','brute']} grid=GridSearchCV(knn,grid_param,cv=5) grid.fit(X_train,y_train) #bestparametercombination grid.best_params_ #Scoreachievedwithbestparametercombination grid.best_score_ #allcombinationsofhyperparameters grid.cv_results_['params'] #averagescoresofcross-validation grid.cv_results_['mean_test_score']

缺點:

由于它嘗試了超參數(shù)的每一個組合,并根據(jù)交叉驗證得分選擇了最佳組合,這使得GridsearchCV非常慢。

3. 隨機搜索

使用隨機搜索代替網(wǎng)格搜索的動機是,在許多情況下,所有的超參數(shù)可能不是同等重要的。隨機搜索從超參數(shù)空間中隨機選擇參數(shù)組合,參數(shù)由n_iter給定的固定迭代次數(shù)的情況下選擇。實驗證明,隨機搜索的結(jié)果優(yōu)于網(wǎng)格搜索。

讓我們來了解sklearn的RandomizedSearchCV是如何工作的,

fromsklearn.model_selectionimportRandomizedSearchCV knn=KNeighborsClassifier() grid_param={'n_neighbors':list(range(2,11)), 'algorithm':['auto','ball_tree','kd_tree','brute']} rand_ser=RandomizedSearchCV(knn,grid_param,n_iter=10) rand_ser.fit(X_train,y_train) #bestparametercombination rand_ser.best_params_ #scoreachievedwithbestparametercombination rand_ser.best_score_ #allcombinationsofhyperparameters rand_ser.cv_results_['params'] #averagescoresofcross-validation rand_ser.cv_results_['mean_test_score']

缺點:

隨機搜索的問題是它不能保證給出最好的參數(shù)組合。

4. 貝葉斯搜索

貝葉斯優(yōu)化屬于一類優(yōu)化算法,稱為基于序列模型的優(yōu)化(SMBO)算法。這些算法使用先前對損失f的觀察結(jié)果,以確定下一個(最優(yōu))點來抽樣f。該算法大致可以概括如下。

使用先前評估的點X1*:n*,計算損失f的后驗期望。

在新的點X的抽樣損失f,從而最大化f的期望的某些方法。該方法指定f域的哪些區(qū)域最適于抽樣。

重復(fù)這些步驟,直到滿足某些收斂準則。

讓我們用scikit- optimization的BayesSearchCV來理解這

Installation: pip install scikit-optimize

fromskoptimportBayesSearchCV importwarnings warnings.filterwarnings("ignore") #parameterrangesarespecifiedbyoneofbelow fromskopt.spaceimportReal,Categorical,Integer knn=KNeighborsClassifier() #defininghyper-parametergrid grid_param={'n_neighbors':list(range(2,11)), 'algorithm':['auto','ball_tree','kd_tree','brute']} #initializingBayesianSearch Bayes=BayesSearchCV(knn,grid_param,n_iter=30,random_state=14) Bayes.fit(X_train,y_train) #bestparametercombination Bayes.best_params_ #scoreachievedwithbestparametercombination Bayes.best_score_ #allcombinationsofhyperparameters Bayes.cv_results_['params'] #averagescoresofcross-validation Bayes.cv_results_['mean_test_score']

缺點:

要在2維或3維的搜索空間中得到一個好的代理曲面需要十幾個樣本,增加搜索空間的維數(shù)需要更多的樣本。

總結(jié)

在確定參數(shù)的最佳組合的保證和計算時間之間總是存在權(quán)衡。如果超參數(shù)空間(超參數(shù)個數(shù))非常大,則使用隨機搜索找到超參數(shù)的潛在組合,然后在該局部使用網(wǎng)格搜索(超參數(shù)的潛在組合)選擇最優(yōu)特征。

原文標題:機器學習4個常用超參數(shù)調(diào)試方法!

文章出處:【微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ML
    ML
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    34447
  • 機器學習
    +關(guān)注

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131867

原文標題:機器學習4個常用超參數(shù)調(diào)試方法!

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    機器學習中的數(shù)據(jù)分割方法

    機器學習中,數(shù)據(jù)分割是一項至關(guān)重要的任務(wù),它直接影響到模型的訓練效果、泛化能力以及最終的性能評估。本文將從多個方面詳細探討機器學習中數(shù)據(jù)分割的方法
    的頭像 發(fā)表于 07-10 16:10 ?645次閱讀

    機器學習中的交叉驗證方法

    機器學習中,交叉驗證(Cross-Validation)是一種重要的評估方法,它通過將數(shù)據(jù)集分割成多個部分來評估模型的性能,從而避免過擬合或欠擬合問題,并幫助選擇最優(yōu)的
    的頭像 發(fā)表于 07-10 16:08 ?400次閱讀

    深度學習的模型優(yōu)化與調(diào)試方法

    深度學習模型在訓練過程中,往往會遇到各種問題和挑戰(zhàn),如過擬合、欠擬合、梯度消失或爆炸等。因此,對深度學習模型進行優(yōu)化與調(diào)試是確保其性能優(yōu)越的關(guān)鍵步驟。本文將從數(shù)據(jù)預(yù)處理、模型設(shè)計、
    的頭像 發(fā)表于 07-01 11:41 ?482次閱讀

    深度學習與傳統(tǒng)機器學習的對比

    在人工智能的浪潮中,機器學習和深度學習無疑是兩大核心驅(qū)動力。它們各自以其獨特的方式推動著技術(shù)的進步,為眾多領(lǐng)域帶來了革命性的變化。然而,盡管它們都屬于機器
    的頭像 發(fā)表于 07-01 11:40 ?638次閱讀

    焊接機器調(diào)試技巧有哪些

    調(diào)試的技巧,創(chuàng)想智控焊縫跟蹤小編帶大家一起了解。 1. 準備工作 在開始調(diào)試工作之前,工程師必須充分了解焊接機器人的結(jié)構(gòu)、工作原理及其工作環(huán)境。這包括機器人的控制系統(tǒng)、運動學特性、焊
    的頭像 發(fā)表于 06-27 14:25 ?305次閱讀
    焊接<b class='flag-5'>機器</b>人<b class='flag-5'>調(diào)試</b>技巧有哪些

    變頻器的參數(shù)調(diào)試方法有哪些?

    參數(shù)調(diào)試方法,包括基本參數(shù)設(shè)置、頻率設(shè)定、加減速時間調(diào)整、轉(zhuǎn)矩提升、制動功能設(shè)置、通訊設(shè)置等方面的內(nèi)容。 ? ? ??一、基本參數(shù)設(shè)置 ?
    的頭像 發(fā)表于 06-23 15:29 ?868次閱讀
    變頻器的<b class='flag-5'>參數(shù)</b><b class='flag-5'>調(diào)試</b><b class='flag-5'>方法</b>有哪些?

    變頻器的參數(shù)調(diào)試方法有哪些

    變頻器是一種將工頻電源轉(zhuǎn)換為頻率和電壓可調(diào)的電能控制裝置,廣泛應(yīng)用于工業(yè)自動化、電力系統(tǒng)、交通等領(lǐng)域。變頻器參數(shù)調(diào)試是確保其正常運行和滿足特定應(yīng)用需求的關(guān)鍵環(huán)節(jié)。本文將詳細介紹變頻器參數(shù)調(diào)試
    的頭像 發(fā)表于 06-17 15:20 ?941次閱讀

    機器學習8大調(diào)參技巧

    今天給大家一篇關(guān)于機器學習調(diào)參技巧的文章。參數(shù)調(diào)優(yōu)是機器學習例程中的基本步驟之一。該
    的頭像 發(fā)表于 03-23 08:26 ?474次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>8大調(diào)參技巧

    什么是機器學習?它的重要性體現(xiàn)在哪

    任務(wù)的解決方法機器學習的重要性體現(xiàn)在幾個方面數(shù)據(jù)處理能力:在當今數(shù)字化時代,我們產(chǎn)生了大量的數(shù)據(jù)。機器
    的頭像 發(fā)表于 01-05 08:27 ?1102次閱讀
    什么是<b class='flag-5'>機器</b><b class='flag-5'>學習</b>?它的重要性體現(xiàn)在哪

    學習處理電源emi的幾個問題

    電子發(fā)燒友網(wǎng)站提供《學習處理電源emi的幾個問題.pdf》資料免費下載
    發(fā)表于 11-20 10:16 ?0次下載
    <b class='flag-5'>學習</b>處理電源emi的<b class='flag-5'>幾個</b>問題

    NNI:自動幫你做機器學習調(diào)參的神器

    NNI 自動機器學習調(diào)參,是微軟開源的又一個神器,它能幫助你找到最好的神經(jīng)網(wǎng)絡(luò)架構(gòu)或參數(shù),支持 各種訓練環(huán)境 。 它常用的 使用場景 如下: 想要在自己的代碼、模型中試驗 不同的
    的頭像 發(fā)表于 10-30 10:28 ?2148次閱讀
    NNI:自動幫你做<b class='flag-5'>機器</b><b class='flag-5'>學習</b>調(diào)參的神器

    機器視覺為什么需要反復(fù)調(diào)試?

    機器視覺需要反復(fù)調(diào)試的原因有以下幾點: 圖像集的質(zhì)量不同,需要針對不同的圖像集進行調(diào)試; 算法的參數(shù)設(shè)置不同,需要不斷調(diào)整參數(shù)以達到最優(yōu)
    的頭像 發(fā)表于 10-25 16:12 ?335次閱讀

    vscode全系列調(diào)試

    這里介紹了 RTT 常見的幾個 bsp 的調(diào)試方法,其他的都是類似的形式,照著寫即可
    的頭像 發(fā)表于 10-17 11:39 ?513次閱讀
    vscode全系列<b class='flag-5'>調(diào)試</b>

    詳解LDO的幾個重要參數(shù)

    LDO學名低壓差線性穩(wěn)壓器,那么今天以LM1117的規(guī)格書,去看一下LDO的幾個重要的參數(shù)。
    發(fā)表于 09-27 11:48 ?2668次閱讀
    詳解LDO的<b class='flag-5'>幾個</b>重要<b class='flag-5'>參數(shù)</b>

    機器學習與數(shù)據(jù)挖掘方法和應(yīng)用

    機器學習與數(shù)據(jù)挖掘方法和應(yīng)用(經(jīng)典)
    發(fā)表于 09-26 07:56