<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在建模時模型的超引數對精度有一定的影響,而設定和調整超引數的取值,往往稱為調參。
在實踐中調參往往依賴人工來進行設定調整範圍,然後使用機器在超引數範圍內進行搜素。本文將演示在sklearn中支援的四種基礎超引數搜尋方法:
作為精度對比,我們最開始使用隨機森林來訓練初始化模型,並在測試集計算精度:
# 資料讀取 df = pd.read_csv('https://mirror.coggle.club/dataset/heart.csv') X = df.drop(columns=['output']) y = df['output'] # 資料劃分 x_train, x_test, y_train, y_test = train_test_split(X, y, stratify=y) # 模型訓練與計算準確率 clf = RandomForestClassifier(random_state=0) clf.fit(x_train, y_train) clf.score(x_test, y_test)
模型最終在測試集精度為:0.802。
GridSearch是比較基礎的超引數搜尋方法,中文名字網格搜尋。其原理是在計算的過程中遍歷所有的超引數組合,然後搜尋到最優的結果。
如下程式碼所示,我們對4個超引數進行搜尋,搜尋空間為 5 * 3 * 2 * 3 = 90組超引數。對於每組超引數還需要計算5折交叉驗證,則需要訓練450次。
parameters = { 'max_depth': [2,4,5,6,7], 'min_samples_leaf': [1,2,3], 'min_weight_fraction_leaf': [0, 0.1], 'min_impurity_decrease': [0, 0.1, 0.2] } # Fitting 5 folds for each of 90 candidates, totalling 450 fits clf = GridSearchCV( RandomForestClassifier(random_state=0), parameters, refit=True, verbose=1, ) clf.fit(x_train, y_train) clf.best_estimator_.score(x_test, y_test)
模型最終在測試集精度為:0.815。
RandomizedSearch是在一定範圍內進行搜尋,且需要設定搜尋的次數,其預設不會對所有的組合進行搜尋。
n_iter代表超引數組合的個數,預設會設定比所有組合次數少的取值,如下面設定的為10,則只進行50次訓練。
parameters = { 'max_depth': [2,4,5,6,7], 'min_samples_leaf': [1,2,3], 'min_weight_fraction_leaf': [0, 0.1], 'min_impurity_decrease': [0, 0.1, 0.2] } clf = RandomizedSearchCV( RandomForestClassifier(random_state=0), parameters, refit=True, verbose=1, n_iter=10, ) clf.fit(x_train, y_train) clf.best_estimator_.score(x_test, y_test)
模型最終在測試集精度為:0.815。
HalvingGridSearch和GridSearch非常相似,但在迭代的過程中是有引數組合減半的操作。
最開始使用所有的超引數組合,但使用最少的資料,篩選其中最優的超引數,增加資料再進行篩選。
HalvingGridSearch的思路和hyperband的思路非常相似,但是最樸素的實現。先使用少量資料篩選超引數組合,然後使用更多的資料驗證精度。
n_iterations: 3 n_required_iterations: 5 n_possible_iterations: 3 min_resources_: 20 max_resources_: 227 aggressive_elimination: False factor: 3 ---------- iter: 0 n_candidates: 90 n_resources: 20 Fitting 5 folds for each of 90 candidates, totalling 450 fits ---------- iter: 1 n_candidates: 30 n_resources: 60 Fitting 5 folds for each of 30 candidates, totalling 150 fits ---------- iter: 2 n_candidates: 10 n_resources: 180 Fitting 5 folds for each of 10 candidates, totalling 50 fits ----------
模型最終在測試集精度為:0.855。
HalvingRandomSearch和HalvingGridSearch類似,都是逐步增加樣本,減少超引數組合。但每次生成超引數組合,都是隨機篩選的。
n_iterations: 3 n_required_iterations: 3 n_possible_iterations: 3 min_resources_: 20 max_resources_: 227 aggressive_elimination: False factor: 3 ---------- iter: 0 n_candidates: 11 n_resources: 20 Fitting 5 folds for each of 11 candidates, totalling 55 fits ---------- iter: 1 n_candidates: 4 n_resources: 60 Fitting 5 folds for each of 4 candidates, totalling 20 fits ---------- iter: 2 n_candidates: 2 n_resources: 180 Fitting 5 folds for each of 2 candidates, totalling 10 fits
模型最終在測試集精度為:0.828。
HalvingGridSearch和HalvingRandomSearch比較適合在資料量比較大的情況使用,可以提高訓練速度。如果計算資源充足,GridSearch和HalvingGridSearch會得到更好的結果。
後續我們將分享其他的一些高階調參庫的實現,其中也會有資料量改變的思路。如在Optuna中,核心是引數組合的生成和剪枝、訓練的樣本增加等細節。
到此這篇關於四種Python機器學習超引數搜尋方法總結的文章就介紹到這了,更多相關Python超引數搜尋內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45