国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

超參數優化比較之網格搜索、隨機搜索和貝葉斯優化

譯文 精選
人工智能 機器學習
本文將詳細介紹用來提高機器學習效果的最常見的超參數優化方法。

譯者 | 朱先忠?

審校 | 孫淑娟?

簡介?

通常,在嘗試改進機器學習模型時,人們首先想到的解決方案是添加更多的訓練數據。額外的數據通常幫助(在某些情況下除外),但生成高質量的數據可能非常昂貴。通過使用現有數據獲得最佳模型性能,超參數優化可以節省我們的時間和資源。?

顧名思義,超參數優化是為機器學習模型確定最佳超參數組合以滿足優化函數(即,給定研究中的數據集最大化模型的性能)的過程。換句話說,每個模型都會提供多個有關選項的調整“按鈕”我們可以改變它們,直到我們模型的超參數達到最佳組合。在超參數優化過程中,我們可以更改的參數的一些示例可以是學習率、神經網絡的架構(例如,隱藏層的數量)、正則化等。?

在這篇文章中,我們將從概念上介紹三種最常見的超參數優化方法,即網格搜索、隨機搜索和貝葉斯優化,然后它們進行逐一實現?

我將在文章一開始提供一個高級別的比較表,以供讀者參考,然后將在本文的其余部分進一步探討、解釋和實施比較表中的每一?

表1超參數優化方法比較?

1.網格搜索算法?

網格搜索可能是超參數優化的最簡單和最直觀的方法,它涉及在定義的搜索空間中徹底搜索超參數的最佳組合。在此上下文中的“搜索空間”是整個超參數以及在優化過程中考慮的此類超參數的值。讓我們通過一個示例來更好地理解網格搜索。?

假設我們有一個只有三個參數的機器學習模型,每個參數都可以取下表中提供的值:?

parameter_1 = [1, 2, 3]?
parameter_2 = [a, b, c]?
parameter_3 = [x, y, z]?

我們不知道這些參數的哪個組合將優化我們的模型的優化功能(即為我們的機器學習模型提供最佳輸出)。在網格搜索中,我們只需嘗試這些參數的每一個組合,測量每個參數的模型性能,然后簡單地選擇產生最佳性能的組合!在此示例中,參數1可以取3個值(即1、2或3),參數2可以取3值(即a、b和c),參數3可以取3種值(即x、y和z)。換句話說,總共有3*3*3=27個組合。本例中的網格搜索將涉及27輪評估機器學習模型的性能,以找到性能最佳的組合。?

如您所見,這種方法非常簡單(類似于試錯任務),但也有一些局限性。讓我們一起總結一下此方法的優點和缺點?

其中,優勢包括?

  • 易于理解和實施?
  • 易于并行化?
  • 適用于離散和連續空間?缺點主要有?
  • 在具有大量超參數的大型和/或復雜模型中成本高昂(因為必須嘗試和評估所有組合)?
  • 無記憶——不從過去的觀察中學習?
  • 如果搜索空間太大,可能無法找到最佳組合我的建議是,如果您有一個搜索空間較小的簡單模型,請使用網格搜索否則,建議繼續往下閱讀以找到更適合更大搜索空間的解決方案。
    現在,讓我們用一個真實的例子來實現網格搜索。

1.1.網格搜索算法實現?

為了實現網格搜索,我們將使用scikit-learn中的Iris數據集創建一個隨機森林分類模型。該數據集包括3種不同的鳶尾花瓣和萼片長度,將用于本次分類練習。在本文中,模型開發是次要的,因為目標是比較各種超參數優化策略的性能。我鼓勵您關注模型評估結果,以及每種超參數優化方法達到所選超參數集所需的時間。我將描述運行結果,然后為本文中使用的三種方法提供一個匯總比較表。?

包括所有超參數值的搜索空間定義如下:?

search_space = {'n_estimators': [10, 100, 500, 1000],?
'max_depth': [2, 10, 25, 50, 100],?
'min_samples_split': [2, 5, 10],?
'min_samples_leaf': [1, 5, 10]}?

上述搜索空間由4*5*3*3=180個超參數的總組合組成。我們將使用網格搜索來找到優化目標函數的組合,如下所示:?

# Import libraries?
from sklearn.model_selection import GridSearchCV?
from sklearn.datasets import load_iris?
from sklearn.ensemble import RandomForestClassifier?
from sklearn.model_selection import cross_val_score?
import time?
# 加載Iris數據集?
iris = load_iris()?
X, y = iris.data, iris.target?
#定義超參數搜索空間?
search_space = {'n_estimators': [10, 100, 500, 1000],?
'max_depth': [2, 10, 25, 50, 100],?
'min_samples_split': [2, 5, 10],?
'min_samples_leaf': [1, 5, 10]}?
#定義隨機林分類器?
clf = RandomForestClassifier(random_state=1234)?
# 生成優化器對象?
optimizer = GridSearchCV(clf, search_space, cv=5, scoring='accuracy')?
#存儲起始時間,以便用于計算總的耗時?
start_time = time.time()?
#擬合數據上的優化器?
optimizer.fit(X, y)?
# 存儲結束時間,以便用于計算總的耗時?
end_time = time.time()?
# 打印最佳超參數集和相應分數?
print(f"selected hyperparameters:")?
print(optimizer.best_params_)?
print("")?
print(f"best_score: {optimizer.best_score_}")?
print(f"elapsed_time: {round(end_time-start_time, 1)}")?

上面代碼的輸出結果如下:?

這里我們可以看到使用網格搜索選擇的超參數值。其中,best_score描述了使用所選超參數集的評估結果,而elapsed_time描述了我的本地筆記本電腦執行此超參數優化策略所花費的時間。在進行下一種方法時,請記住評估結果和經過的時間,以便進行比較。現在,讓我們進入隨機搜索的討論?

2.隨機搜索算法?

顧名思義,隨機搜索是從定義的搜索空間中隨機采樣超參數的過程。與網格搜索不同,隨機搜索只會在預定義的迭代次數(取決于可用資源,如時間、預算、目標等)中選擇超參數值的隨機子集,并計算每個超參數的機器學習模型的性能,然后選擇最佳的超參數值。?

根據上述方法,您可以想象,與完整的網格搜索相比,隨機搜索成本更低,但仍有其自身的優勢和劣勢,如下所示:?

優勢:?

  • 易于理解和實施?
  • 易于并行化?
  • 適用于離散和連續空間?
  • 比網格搜索便宜?
  • 與具有相同嘗試次數的網格搜索相比,更可能收斂到最優?缺點:?
  • 無記憶——不從過去的觀察中學習?
  • 考慮到隨機選擇,可能會錯過重要的超參數值?

在下一個方法中,我們將通過貝葉斯優化解決網格和隨機搜索的“無記憶”缺點。但在討論此方法之前,讓我們先來實現隨機搜索。?

2.1.隨機搜索算法實現

使用下面的代碼片段,我們將針對網格搜索實現中描述的相同問題實現隨機搜索超參數優化。?

# 導入庫?
from sklearn.model_selection import RandomizedSearchCV?
from scipy.stats import randint?

# 創建一個RandomizedSearchCV對象?
optimizer = RandomizedSearchCV(clf, param_distributinotallow=search_space,?
n_iter=50, cv=5, scoring='accuracy',?
random_state=1234)?

# 存儲開始時間以計算總運行時間?
start_time = time.time()?

# 擬合數據上的優化器?
optimizer.fit(X, y)?

# 存儲結束時間以計算總運行時間?
end_time = time.time()?

# 打印最佳超參數集和相應分數?
print(f"selected hyperparameters:")?
print(optimizer.best_params_)?
print("")?
print(f"best_score: {optimizer.best_score_}")?
print(f"elapsed_time: {round(end_time-start_time, 1)}")?

上面代碼的輸出結果如下:?

隨機搜索結果?

與網格搜索的結果相比,這些結果非常有趣。best_score保持不變,但elapsed_time從352.0秒減少到75.5秒!真是令人印象深刻!換句話說,隨機搜索算法設法找到了一組超參數,在網格搜索所需時間的21%左右,其性能與網格搜索相同!但是,里的效率高得多。?

接下來,讓我們繼續我們的下一種方法,稱為貝葉斯優化,它從優化過程中的每一次嘗試中學習。?

3.貝葉斯優化

貝葉斯優化是一種超參數優化方法,它使用概率模型從以前的嘗試中“學習”,并將搜索引向搜索空間中超參數的最佳組合,從而優化機器學習模型的目標函數。?

貝葉斯優化方法可以分為4個步驟,我將在下面描述。我鼓勵您通讀這些步驟,以便更好地理解流程,但使用這種方法并不需要什么前提知識。?

  1. 定義一個“先驗”,這是一個關于我們在某個時間點對優化目標函數最可能的超參數組合的信念的概率模型?
  2. 評估超參數樣本的模型?
  3. 使用步驟2中獲得的知識,更新步驟1中的概率模型(即我們所稱的“先驗”),了解我們認為優化目標函數的超參數的最可能組合在哪里。我們更新的信念稱為“后驗”。換句話說,在步驟2中獲得的知識幫助我們更好地了解搜索空間,并將我們從先驗帶到后驗,使后驗成為我們關于搜索空間和目標函數的“最新”知識,由步驟2提供信息?
  4. 重復步驟2和3,直到模型性能收斂、資源耗盡或滿足其他預定義指標?

如果您有興趣了解更多有關貝葉斯優化的詳細信息,可以查看以下帖子:?

《機器學習中的貝葉斯優化算法》,地址是:
??https://medium.com/@fmnobar/conceptual-overview-of-bayesian-optimization-for-parameter-tuning-in-machine-learning-a3b1b4b9339f。???

現在,既然我們已經了解了貝葉斯優化是如何工作的,那么讓我們來看看它的優點和缺點。?

優勢:?

  • 從過去的觀察中學習,因此效率更高換句話說,與無記憶方法相比,它有望在更少的迭代中找到一組更好的超參數?
  • 在給定某些假設的情況下收斂到最優?缺點:?
  • 難以并行化?
  • 計算量大于網格和每次迭代的隨機搜索?
  • 先驗和貝葉斯優化中使用的函數(例如,獲取函數等)的初始概率分布的選擇會顯著影響性能及其學習曲線?

在排除了細節之后,讓我們實現貝葉斯優化并查看結果。?

3.1.貝葉斯優化算法實現

與上一節類似,我們將使用下面的代碼片段為網格搜索實現中描述的相同問題實現貝葉斯超參數優化。?

# 導入庫?
from skopt import BayesSearchCV?

# 執行貝葉斯優化?
optimizer = BayesSearchCV(estimator=RandomForestClassifier(),?
search_spaces=search_space,?
n_iter=10,?
cv=5,?
scoring='accuracy',?
random_state=1234)?

# 存儲開始時間以計算總運行時間?
start_time = time.time()?

optimizer.fit(X, y)?

# 存儲結束時間以計算總運行時間?
end_time = time.time()?

# 打印最佳超參數集和相應分數?
print(f"selected hyperparameters:")?
print(optimizer.best_params_)?
print("")?
print(f"best_score: {optimizer.best_score_}")?
print(f"elapsed_time: {round(end_time-start_time, 1)}")?

上面代碼的輸出結果如下:?

貝葉斯優化結果?

另一組有趣的結果!best_score與我們通過網格和隨機搜索獲得的結果保持一致,但結果僅用了23.1秒,而隨機搜索為75.5秒,網格搜索為352.0秒!換句話說,使用貝葉斯優化所需的時間比網格搜索所需的時間大約少93%。這是一個巨大的生產力提升,在更大、更復雜的模型和搜索空間中變得更有意義。?

請注意,貝葉斯優化只使用了10次迭代就獲得了這些結果,因為它可以從以前的迭代中學習(與隨機和網格搜索相反)。?

結果比較

下表對目前所討論的三種方法的結果進行了比較。“Methodology方法論”一欄描述了所使用的超參數優化方法。隨后是使用每種方法選擇的超參數。“Best Score”是使用特定方法獲得的分數,然后是“Elapsed Time”,表示優化策略在我的本地筆記本電腦上運行所需的時間。最后一列“獲得的效率(Gained Efficiency)”假設網格搜索為基線,然后計算與網格搜索相比,其他兩種方法中每種方法獲得的效率(使用經過的時間)。例如,由于隨機搜索耗時75.5秒,而網格搜索耗時352.0秒,因此相對于網格搜索的基線,隨機搜索的效率計算為1–75.5/352.0=78.5%。?

表2——方法性能比較表?

以上比較表中的兩個主要結論:?

  1. 效率:我們可以看到貝葉斯優化等學習方法如何在更短的時間內找到一組優化的超參數。?
  2. 參數選擇:可以有多個正確答案。例如,貝葉斯優化的選定參數與網格和隨機搜索的參數不同,盡管評估度量(即best_score)保持不變。這在更大、更復雜的環境中更為重要。?

結論

在這篇文章中,我們討論了什么是超參數優化,并介紹了用于此優化練習的三種最常見的方法。然后,我們詳細介紹了這三種方法中的每一種,并在分類練習中實現了它們。最后,我們比較了實施這三種方法的結果。我們發現,從以前的嘗試中學習的貝葉斯優化等方法可以顯著提高效率,這可能是大型復雜模型(如深度神經網絡)中的一個重要因素,其中效率可是一個決定因素。?

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。?

原文標題:??Hyperparameter Optimization — Intro and Implementation of Grid Search, Random Search and Bayesian Optimization??,作者:Farzad Mahmoodinobar?



責任編輯:華軒 來源: 51CTO
相關推薦

2022-09-28 08:00:00

Python機器學習算法

2020-10-09 12:41:04

算法優化場景

2017-08-19 08:36:25

貝葉斯優化超參數函數

2023-02-13 15:00:13

機器學習scikit-leaPyTorch

2024-10-11 16:53:16

貝葉斯人工智能網絡

2017-08-07 13:02:32

全棧必備貝葉斯

2022-03-22 15:20:32

微信全文搜索

2011-05-17 17:51:43

SEO網站優化

2011-06-20 18:23:06

SEO

2012-09-24 10:13:35

貝葉斯

2012-08-24 09:16:53

App Store

2020-12-21 10:00:49

算法模型優化

2017-03-29 14:50:18

2024-04-16 09:53:56

PostgreSQL數據庫優化索引

2016-10-25 12:39:37

Windows優化桌面

2024-11-21 08:00:00

向量搜索人工智能

2011-06-03 10:19:53

2024-08-13 12:54:20

2018-01-23 10:29:50

主搜索店鋪搜索

2009-07-30 10:40:56

搜索引擎優化網站
點贊
收藏

51CTO技術棧公眾號

成人毛片在线| 亚洲视频中文字幕| 青草热久免费精品视频 | 狠狠综合久久av| 欧美激情在线精品一区二区三区| 亚洲精品网址在线观看| www日韩tube| 国产精品久久久久一区二区三区 | 亚洲综合激情另类小说区| 奇米777四色影视在线看| 日韩亚洲精品在线| 国产精品三级久久久久久电影| 91成人短视频| 美女视频黄免费的亚洲男人天堂| 欧美卡一卡二| 欧美电影影音先锋| 91官网在线| 日韩欧美中文免费| 日本一本草久在线中文| 亚洲成人一区二区在线观看| 97午夜影院| 国产精品女上位| 在线视频xx| 一区二区三区毛片| 国产又大又黄又猛| 亚洲国产成人午夜在线一区| 国产性xxxx18免费观看视频| 99国产欧美另类久久久精品| 成人毛片一区二区| 2023国产精品视频| 日本 片 成人 在线| 中文字幕一区二区三区不卡在线| 邪恶网站在线观看| 国产精品国产三级国产普通话蜜臀 | 欧美视频第二页| 国产乱子伦三级在线播放| 日韩欧美中文在线| 一级日本在线| 亚洲高清在线观看| 偷拍视频一区二区三区| 亚洲一区999| 日韩大陆av| 97精品国产91久久久久久| 国产成人1区| av成人午夜| 蜜臀久久久99精品久久久久久| 日韩在线电影一区| 日韩一区精品字幕| 亚洲精品天堂成人片av在线播放| 99精品久久免费看蜜臀剧情介绍| 国产喷水theporn| 五月婷婷色综合| 免费看a在线观看| 日韩久久精品电影| 9l视频自拍蝌蚪9l视频成人| 欧美在线视频观看免费网站| 偷拍欧美精品| 在线视频不卡国产| 国产精品免费视频观看| 亚洲热app| 欧美成人艳星乳罩| 亚洲五月天综合| 亚洲国产精品自拍| v天堂福利视频在线观看| 亚洲性线免费观看视频成熟| 猫咪成人在线观看| 高清视频在线观看一区| 国产一区免费电影| 天堂社区日本电影超碰| 91麻豆精品国产自产在线| 中文不卡1区2区3区| 欧美国产第二页| 亚洲中无吗在线| 国产日韩亚洲欧美在线| 夜夜精品视频一区二区| h片视频在线观看| 奇米影视亚洲狠狠色| 日韩成人午夜精品| 亚洲五月天综合| 欧美日韩国产一级片| 日韩三区四区| 古典武侠综合av第一页| 国产视频一区二区在线观看| www在线免费观看视频| 欧美噜噜久久久xxx| 精品二区视频| 1024av视频| 欧美日韩国产一级片| 视频一区日韩精品| 欧美连裤袜在线视频| 亚洲国产精品精华液2区45| 2024最新电影免费在线观看 | 大桥未久av一区二区三区中文| 黄色三级电影网站| 亚洲欧美综合v| 欧美激情五月| 国产成人精品视频ⅴa片软件竹菊| 欧美日韩在线视频一区二区| 亚洲一区二区三区久久久| 精品欧美一区二区三区久久久| 国产农村妇女毛片精品久久麻豆 | 不卡av电影院| 99精品视频免费全部在线| 色悠悠久久综合网| 亚洲福利在线视频| 国产一区毛片| 黄色免费视频大全| 日韩午夜中文字幕| 91影院成人| 黄色免费福利视频| 亚洲精品一区二区三区蜜桃下载| 日韩免费av| 国产免费网址| 日韩一区二区欧美| 免费一级欧美片在线播放| 中文字幕视频在线| 国产69精品久久久久久| 99免费精品在线| 色一区二区三区| 久久伦理网站| 日韩欧美亚洲成人| av资源久久| 国产黄色av免费看| 欧美黄色成人网| caoporn国产精品| 婷婷av在线| 久久久人人爽| 一本到不卡精品视频在线观看| 偷拍精品福利视频导航| 九九视频精品在线观看| 久久久国产一区二区三区| 国产精品1024| 日韩欧美另类一区二区| 中文字幕精品在线播放| 亚洲国产成人精品一区二区| 日韩成人午夜精品| 国精一区二区三区| 亚洲一区二区三区精品视频| 精品嫩草影院久久| 麻豆国产欧美日韩综合精品二区 | 在线日本视频| 国产乱码精品一区二区三区不卡| 精品日韩视频在线观看| 成人av动漫在线观看| 在线观看中文字幕| 成人两性免费视频| 精品久久久中文| 欧美天天综合| 免费看成年人视频在线观看| 国产成人精品亚洲精品| 一区2区3区在线看| 久久久久久久久久久妇女| 国产美女极品在线| 成人中文字幕在线观看| 在线视频欧美区| 销魂美女一区二区三区视频在线| 成人午夜影视| 亚洲高清在线观看一区| 亚洲经典中文字幕| av动漫一区二区| 台湾亚洲精品一区二区tv| 亚洲国产欧美国产第一区| 日韩欧美有码在线| 国产精品资源| 欧洲一区二区三区精品| 手机看片福利日韩| 精精国产xxxx视频在线播放| 欧美日韩卡一| 亚洲国产精品免费视频| 欧美极度另类| 婷婷激情久久| 免费白浆视频| 精品日本一区二区| 日韩精品视频免费在线观看| 91免费在线视频观看| 欧美系列电影免费观看 | 黄网在线免费| 天堂资源在线亚洲视频| 久久精品国产清自在天天线| 夜夜嗨av一区二区三区四季av| 伊人久久大香线蕉av超碰演员| 亚洲成人不卡| av福利导福航大全在线播放| 国产一区二区精品免费| 黑人精品xxx一区一二区| 乱码第一页成人| 麻豆精品在线| 成色在线视频| 欧美精品欧美精品| 久久中文字幕国产| 亚洲午夜日本在线观看| 视频一区二区国产| 老色鬼在线视频| 日本老熟妇毛茸茸| 久久99精品久久久久久久久久| 亚洲精品国产综合久久| 亚洲一区在线免费观看| 天堂久久一区二区三区| 久久丝袜视频| а√天堂8资源在线|