<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【機(jī)器學(xué)習(xí)】使用隨機(jī)搜索進(jìn)行超參數(shù)調(diào)整

          共 3674字,需瀏覽 8分鐘

           ·

          2022-12-22 09:28

          作者 | Arindam Banerjee

          編譯 | Flin

          來(lái)源 | analyticsvidhya

          簡(jiǎn)介

          超參數(shù)調(diào)整或優(yōu)化在任何機(jī)器學(xué)習(xí)模型訓(xùn)練活動(dòng)中都很重要。模型的超參數(shù)無(wú)法通過(guò)學(xué)習(xí)過(guò)程從給定的數(shù)據(jù)集中確定。但是,它們對(duì)于控制學(xué)習(xí)過(guò)程本身非常重要。這些超參數(shù)源自機(jī)器學(xué)習(xí)模型的數(shù)學(xué)公式。

          例如,在訓(xùn)練線性回歸模型時(shí)學(xué)習(xí)的權(quán)重是參數(shù),但梯度下降中的學(xué)習(xí)率是超參數(shù)。模型在數(shù)據(jù)集上的性能很大程度上取決于所找到的模型超參數(shù)的最佳組合。

          超參數(shù)優(yōu)化有不同的技術(shù),如網(wǎng)格搜索、隨機(jī)搜索、貝葉斯優(yōu)化等。今天我們將討論隨機(jī)搜索的方法和實(shí)現(xiàn)。數(shù)據(jù)科學(xué)家設(shè)置模型超參數(shù)來(lái)控制模型的實(shí)現(xiàn)方面。

          一旦數(shù)據(jù)科學(xué)家確定了模型超參數(shù)的值,就可以將超參數(shù)視為模型設(shè)置。這些設(shè)置需要針對(duì)每個(gè)問(wèn)題進(jìn)行調(diào)整,因?yàn)橐粋€(gè)數(shù)據(jù)集的最佳超參數(shù)不會(huì)是所有數(shù)據(jù)集的最佳超參數(shù)。

          什么是隨機(jī)搜索?

          網(wǎng)格搜索和隨機(jī)搜索是超參數(shù)調(diào)優(yōu)中兩種廣泛使用的技術(shù).

          網(wǎng)格搜索徹底搜索指定的超參數(shù)值的每個(gè)組合。

          與網(wǎng)格搜索相比,隨機(jī)搜索從指定分布中抽取固定數(shù)量的參數(shù)設(shè)置。如果所有參數(shù)都以列表形式呈現(xiàn),則執(zhí)行無(wú)替換采樣。如果至少一個(gè)參數(shù)作為分布給出,則使用替換抽樣。可以預(yù)先指定如何在隨機(jī)搜索中進(jìn)行抽樣。對(duì)于每個(gè)超參數(shù),可以指定可能值的分布或離散值列表(要均勻采樣)。對(duì)于具有連續(xù)值的超參數(shù),應(yīng)指定連續(xù)分布以充分利用隨機(jī)化。

          用于調(diào)整兩個(gè)超參數(shù)的隨機(jī)搜索空間示例

          Python 實(shí)現(xiàn)

          讓我們看看基于 Python 的隨機(jī)搜索實(shí)現(xiàn)。scikit-learn 模塊附帶了一些流行的參考數(shù)據(jù)集,包括輕松加載和獲取它們的方法。我們將使用乳腺癌數(shù)據(jù)集進(jìn)行二元分類。乳腺癌數(shù)據(jù)集是一個(gè)經(jīng)典且直接的二元分類數(shù)據(jù)集。

          數(shù)據(jù)集:https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html#sklearn.datasets.load_breast_cancer

          scikit-learn 的隨機(jī)搜索實(shí)現(xiàn)稱為 RandomizedSearchCV 函數(shù)。讓我們看看這個(gè)函數(shù)的重要參數(shù):

          • estimator:scikit-learn 模型類型的對(duì)象。

          • param_distributions:以參數(shù)名稱作為鍵和分布或要搜索的參數(shù)列表的字典。

          • 評(píng)分:一種評(píng)分策略,用于評(píng)估交叉驗(yàn)證模型在測(cè)試集上的性能。

          • n_iter:它指定隨機(jī)嘗試的組合數(shù)。選擇太低的數(shù)字會(huì)降低我們找到最佳組合的機(jī)會(huì)。
            選擇太大的數(shù)字會(huì)增加處理時(shí)間。因此,它權(quán)衡了運(yùn)行時(shí)間與解決方案的質(zhì)量。

          • cv:在Randomized Search CV中,“CV”代表交叉驗(yàn)證,也在優(yōu)化過(guò)程中進(jìn)行。交叉驗(yàn)證
            是一種重采樣方法,用于使用樣本外數(shù)據(jù)塊測(cè)試模型的泛化能力。

            我們可以通過(guò)該方法中的“cv”值來(lái)確定交叉驗(yàn)證拆分策略。

          我們將使用load_breast_cancer方法加載乳腺癌數(shù)據(jù)集。如果return_X_y為真,則返回 (data, target)。

          X, y = load_breast_cancer(return_X_y=True)
          print(X.shape)

          讓我們使用train_test_split將數(shù)據(jù)集拆分為訓(xùn)練集和測(cè)試集:

          X_train, X_test, y_train, y_test = train_test_split(X, y)

          我們將使用標(biāo)準(zhǔn)標(biāo)量來(lái)預(yù)處理數(shù)據(jù)。你可以看到訓(xùn)練數(shù)據(jù)經(jīng)過(guò)fit_transform,而測(cè)試數(shù)據(jù)僅經(jīng)過(guò)transform

          ss = StandardScaler()
          X_train_ss = ss.fit_transform(X_train) 
          X_test_ss = ss.transform(X_test)

          首先,我們將使用沒有隨機(jī)搜索和超參數(shù)默認(rèn)值的隨機(jī)森林分類器。

          clf = RandomForestClassifier() 
          clf.fit(X_train_ss, y_train) 
          y_pred = clf.predict(X_test_ss)

          可以根據(jù)測(cè)試數(shù)據(jù)計(jì)算準(zhǔn)確度分?jǐn)?shù),并且可以開發(fā)混淆矩陣:

          confusion_matrix(y_test, y_pred), "Test data"
          acc_rf = accuracy_score(y_test, y_pred) 
          print(acc_rf)

          我們將使用帶有隨機(jī)搜索的隨機(jī)森林分類器來(lái)找出超參數(shù)的最佳可能值。我們?cè)谶@里調(diào)整了隨機(jī)森林分類器的五個(gè)超參數(shù):max_depth、max_features、min_samples_split、bootstrap 和criteria。隨機(jī)搜索將搜索給定的超參數(shù)分布以找到最佳值。我們還將使用 3 折交叉驗(yàn)證方案(cv = 3)。

          一旦訓(xùn)練數(shù)據(jù)擬合模型,就可以從最終結(jié)果中提取隨機(jī)搜索的最佳參數(shù)。

          param_dist = {"max_depth": [35], 
              "max_features": sp_randint(111), 
              "min_samples_split": sp_randint(211), 
              "bootstrap": [TrueFalse], 
              "criterion": ["gini""entropy"]} 
          # build a classifier 
          clf = RandomForestClassifier(n_estimators=50)
          # Randomized search
          random_search = RandomizedSearchCV(clf, param_distributions=param_dist, 
              n_iter=20, cv=5, iid=False
          random_search.fit(X_train_ss, y_train)
          print(random_search.best_params_)

          完整的 Python 代碼:https://www.kaggle.com/arindambanerjee/randomized-search-simplified

          結(jié)論

          雖然 Grid Search 會(huì)檢查超參數(shù)的每個(gè)組合,但當(dāng)我們需要處理大型數(shù)據(jù)集時(shí),它的表現(xiàn)不佳。在大數(shù)據(jù)集上嘗試所有超參數(shù)組合是一項(xiàng)乏味的工作。如果一個(gè)模型有 m 個(gè)超參數(shù),并且每個(gè)超參數(shù)如果我們測(cè)試 n 個(gè)值,那么 Grid Search 會(huì)檢查mxn組合。

          在隨機(jī)搜索中,假設(shè)并非所有超參數(shù)都同等重要。每次迭代都會(huì)對(duì)超參數(shù)的隨機(jī)組合進(jìn)行采樣,找到好的組合的機(jī)會(huì)更高。

          這篇文章的主要內(nèi)容是:

          • 在機(jī)器學(xué)習(xí)中,超參數(shù)優(yōu)化至關(guān)重要,這樣模型才能在給定的數(shù)據(jù)集上進(jìn)行最佳訓(xùn)練。這些不是通過(guò)學(xué)習(xí)過(guò)程學(xué)到的。

          • 隨機(jī)搜索比網(wǎng)格搜索提供更少的處理時(shí)間。

          • 在隨機(jī)搜索中,從指定分布中抽取固定數(shù)量的參數(shù)設(shè)置。

          • Python scikit-learn 庫(kù)在其RandomizedSearchCV函數(shù)中實(shí)現(xiàn)了隨機(jī)搜索。這個(gè)函數(shù)需要和它的參數(shù)一起使用,例如estimator、param_distributions、scoring、n_iter、cv等。

          隨機(jī)搜索比網(wǎng)格搜索更快。但是,我們需要在減少處理時(shí)間和找到最佳組合之間權(quán)衡。隨機(jī)搜索方法可能無(wú)法保證找到超參數(shù)的最佳組合。

          參考

          1. https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html

          2. https://en.wikipedia.org/wiki/Hyperparameter_optimization

          往期精彩回顧




          瀏覽 75
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  高清无码视频免费阅读 | 国产黄色小说 | 超碰青青操 | 亚洲精品国产免费 | 最好看的MV中文字幕国语 |