iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0
AI & Data

跟top kaggler學習如何贏得資料分析競賽 系列 第 22

[Day 22] Hyperparameter tuning / 調校超參數 part I

  • 分享至 

  • xImage
  •  

這一小段主要是說明 Hyperparameter / 超參數

1. Hyperparameter tuning / 調校超參數

2. Hyperparameter optimization / 優化超參數跟相關 Models,libraries


1. Hyperparameter tuning / 調校超參數

如何調校超參數?

  • 不可能去調校所有參數, 所以要找出最最最影響 model 的參數, 把它變成該參數子資料集來調校, 假設剛開始用 xgboost 的人, 當我們嘗試要找出較適合的參數, 這時我們可以參考 Github 或 Kaggle Kernels 都有其他人常使用的參數。
  • 要知道參數的影響可以透過替換該參數後, training process 或 validation 的影響
  • 大部分人會用手工調參, 步驟是 (1) run. (2) examine the logs. (3) change parameters. 然後重複上述1,2,3步驟一直到找到好參數.
  • 超參數優化的自動化工具, 像 hyperopt 也是可以用, 但效果沒手工的快.

調校超參數的 libraries

  • Hyperopt
  • Scikit-optimize
  • Spearmint
  • GPyOpt
  • RoBO
  • SMAC3

example

def xgb_score(param)
    #run XGBoost with parameters'param'
    
def xgb_hyperopt();
 space = {
  'eta' : 0.01,
  'max_depth' :        hp.quniform('max_depth', 10, 30, 1),
  'min_child_weight' : hp.quniform('min_child_weight', 0, 100, 1),
  'subsample' :        hp.quniform('subsample', 0.1, 1.0, 0.1),
  'gamma' :            hp.quniform('gamma', 0.0, 30, 0.5),
  'colsample_bytree' : hp.quniform('colsample_bytree', 0.1, 1.0, 0.1),
  'objective' : 'reg:linear',
  'nthread' : 28,
  'silent' : 1,
  'num_round' : 2500,
  'seed' : 2441,
  'early_stopping_rpund' : 100
        }
        
best = fmin(xgb_score, space, algo=tpe.suggest, max_evals=1000)

參數影響 model 有三種結果 (分組顏色是配合下面舉例)

  1. Underfitting(bad) --> 紅隊參數
  2. Good fit and generalization(good)
  3. Overfitting(bad) --> 綠隊參數

第一種根本不足, 第三種又太過, 下列是找出適中的作法


找出Good fit and generalization(good)

步驟一, 分成紅跟綠兩組 (顏色是舉例)

步驟二, 紅隊參數是牽制住 model 的參數, 綠隊參數則相反

步驟三, 確認紅隊參數的數值改變會讓 overfitting 朝向underfitting

  • Increasing it impedes fitting
  • Increase it to reduce overfitting
  • Decrease to allow model fit easier

步驟四, 確認綠隊參數的數值改變會讓 underfitting 朝向 overfitting

  • Increasing it leads to a better fit(overfit) on train set
  • Increase it, if model underfits
  • Decrease if overfits

[後記]
狄米崔又出現了, 英文變得流利多了, 而且短髮狄米崔蠻有精神的, 我也要打起精神在12點前送出今日發文.


上一篇
[Day 21] Regularization 正規化 - part II
下一篇
[Day 23] Hyperparameter tuning / 調校超參數 part II
系列文
跟top kaggler學習如何贏得資料分析競賽 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言