日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

韵乐x5最佳参数手动_4种超参数调整技术及其局限性

發布時間:2024/10/6 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 韵乐x5最佳参数手动_4种超参数调整技术及其局限性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每個數據科學家都應該知道的主流的超參數調整技術


導讀

ML工作流中最困難的部分之一是為模型找到最好的超參數。ML模型的性能與超參數直接相關。超參數調優的越好,得到的模型就越好。調優超參數可能是非常乏味和困難的,它更像是一門藝術而不是科學。

超參數

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

算法超參數
最常用的其他取值范圍目的
決策樹分類器Max_depth(默認值=1)CriterionMax_featuresMax_leaf_nodesMin_sample_leaf1層到多層兩個選擇:“基尼指數”和“信息熵”特征值的數量1個-多個1個-多個1.決定決策樹的深度2.衡量信息增益3.決定需要劃分的特征4.允許的葉子節點的數量5.定義最小的葉子節點的大小(包含的數據點)
隨機森林1.N_estimators(默認值=100)2. Criterion3.Max_depth4.Max_features5.boostrap1.同上2.同上3.同上4.是/否包含的樹的個數衡量信息增益需要評價的特征數是否使用boostrap(默認為是)
邏輯回歸C(默認值為1)fit_interceptSolver(默認值=“lbfgs”按需求是/否選擇包括(“newton-cg”, “lbfgs”, “liblinear”, “sag”, “saga”)懲罰大的系數按需要刪除截距最小化誤差函數

目錄

  • 傳統或手動調優
  • 網格搜索
  • 隨機搜尋
  • 貝葉斯搜索

傳統或手動調優

在傳統調優中,我們通過訓練算法來手動檢查隨機的超參數集,并選擇適合我們目標的最佳參數集。

缺點:

  • 無法保證獲得最佳的參數組合。
  • 這是需要反復試驗的方法,因此,它更消耗時間。

讓我們看一下代碼:

#importing required libraries from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.model_selection import KFold , cross_val_score from sklearn.datasets import load_winewine = load_wine() X = wine.data y = wine.target#splitting the data into train and test set X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.3,random_state = 14)#declaring parameters grid k_value = list(range(2,11)) algorithm = ['auto','ball_tree','kd_tree','brute'] scores = [] best_comb = [] kfold = KFold(n_splits=5)#hyperparameter tunning for algo in algorithm:for k in k_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)} with algo = {algo} , K = {k}')scores.append(results.mean())best_comb.append((k,algo))best_param = best_comb[scores.index(max(scores))] print(f'nThe Best Score : {max(scores)}') print(f"['algorithm': {best_param[1]} ,'n_neighbors': {best_param[0]}]")

網格搜索

網格搜索是一種基本的超參數調整技術。 它類似于手動調整,在手動調整中,它用網格中指定的所有給定超參數值的每種排列組合構建模型,評估并選擇最佳模型。考慮上面的示例,它有兩個超參數k_value = [2,3,4,5,6,7,8,9,10]&algorithm= ['auto','ball_tree','kd_tree','brute'] ,在這種情況下,它總共構建了9 * 4 = 36個不同的模型。

讓我們了解sklearn的GridSearchCV的工作原理:

from sklearn.model_selection import GridSearchCVknn = 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)#best parameter combination grid.best_params_#Score achieved with best parameter combination grid.best_score_#all combinations of hyperparameters grid.cv_results_['params']#average scores of cross-validation grid.cv_results_['mean_test_score']

缺點:

當它嘗試超參數的每種組合并根據交叉驗證得分選擇最佳組合時,會使GridsearchCV極其緩慢。

隨機搜尋

使用隨機搜索代替網格搜索的目的是,在許多情況下,所有超參數可能不是同等重要。隨機搜索從超參數空間中選擇參數的隨機組合,然后使用n_iter給定的固定迭代次數選擇參數。 實驗證明,隨機搜索可以比網格搜索提供更好的結果。

讓我們通過代碼了解一下sklearn中的RandomizedSearchCV的工作原理:

from sklearn.model_selection import RandomizedSearchCVknn = 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)#best parameter combination rand_ser.best_params_#score achieved with best parameter combination rand_ser.best_score_#all combinations of hyperparameters rand_ser.cv_results_['params']#average scores of cross-validation rand_ser.cv_results_['mean_test_score']

4.貝葉斯搜索

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

  • 使用先前評估的點X1*:n*,計算損失f的后驗期望。
  • 在新的點X的抽樣損失f,從而最大化f的期望的某些方法。該方法指定f域的哪些區域最適于抽樣。
  • 重復這些步驟,直到滿足某些收斂準則。

讓我們通過scikit-optimize的BayesSearchCV具體了解一下:

from skopt import BayesSearchCVimport warnings warnings.filterwarnings("ignore")# parameter ranges are specified by one of below from skopt.space import Real, Categorical, Integerknn = KNeighborsClassifier() #defining hyper-parameter grid grid_param = { 'n_neighbors' : list(range(2,11)) , 'algorithm' : ['auto','ball_tree','kd_tree','brute'] }#initializing Bayesian Search Bayes = BayesSearchCV(knn , grid_param , n_iter=30 , random_state=14) Bayes.fit(X_train,y_train)#best parameter combination Bayes.best_params_#score achieved with best parameter combination Bayes.best_score_#all combinations of hyperparameters Bayes.cv_results_['params']#average scores of cross-validation Bayes.cv_results_['mean_test_score']

安裝

pip install scikit-optimize

缺點

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

結論

在確定最佳參數組合的保證和計算復雜度之間總是要權衡取舍。如果超參數空間(超參數數量)非常大,請使用隨機搜索找到超參數的潛在組合,然后在該位置使用網格搜索(超參數的潛在組合)來選擇最佳特征。

聲明

轉載自

https://medium.com/swlh/4-hyper-parameter-tuning-techniques-924cb188d199?medium.com

參考資料

https://thuijskens.github.io/2016/12/29/bayesianoptimisation/?thuijskens.github.ioskopt.BayesSearchCV - scikit-optimize 0.8.1 documentation?scikit-optimize.github.iofmfn/BayesianOptimization?github.com

總結

以上是生活随笔為你收集整理的韵乐x5最佳参数手动_4种超参数调整技术及其局限性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。