1. 程式人生 > >決策樹引數調優建議

決策樹引數調優建議

建議一:

三個最重要的引數為:樹的數目、樹的深度和學習率。建議引數調整策略為:
– 採用預設引數配置試試
– 如果系統過擬合了,降低學習率
– 如果系統欠擬合,加大學習率

建議二:

– n_estimators和learning_rate:固定n_estimators為100(數目不大,因為樹的深度較大,每棵樹比較複雜),然後調整learning_rate
– 樹的深度max_depth:從6開始,然後逐步加大
– min_child_weight : 1 ⁄ sqrt rare_events ,其中rare_events 為稀有事件的數目
– 列取樣colsample_bytree/ colsample_bylevel:在[0.3, 0.5]之間進行網格搜尋
– 行取樣subsample:固定為1
– gamma: 固定為0.0

建議三:

• 1. 選擇較高的學習率(learning rate),並選擇對應於此學習率的理想的樹的數量
– 學習率以工具包預設值為0.1。
– XGBoost直接引用函式“cv”可以在每一次迭代中使用交叉驗證,並返回理想的樹數量(因為交叉驗證很慢,所以可以import兩種XGBoost;直接引用xgboost(用“cv”函式調整樹的數目)和XGBClassifier —xgboost的sklearn包(用GridSearchCV調整其他引數 )。
• 2. 對於給定的學習率和樹數量,進行樹引數調優( max_depth,min_child_weight, gamma, subsample, colsample_bytree, colsample_bylevel )
• 3. xgboost的正則化引數(lambda, alpha)的調優
• 4. 降低學習率,確定樹的數目引數

通常操作步驟

1、採用預設引數,此時learning_rate =0.1(較大), 觀察n_estimators的合適範圍

2、max_depth 和 min_child_weight 引數調整,我們先大範圍地粗調引數(步長為2),再小範圍微調

3、再次調整n_estimators

可選步驟:

1、gamma引數調整– 通常預設值(0)表現還不錯,如計算資源允許,可以調整(略)

2、行列取樣引數: subsample和colsample_bytree
– 這兩個引數可分別對樣本和特徵進行取樣,從而增加模型的魯棒性
– 現在[0.3-1.0]之間調整,粗調時步長0.1
– 微調時步長為0.05(略)

3、正則引數調整: reg_alpha(L2)和reg_lambda(L0)

– reg_alpha = [ 0.1, 1] # L1, default = 0
– reg_lambda = [0.5, 1, 2]
# L2, default = 1
– Best: -0.458950 using {'reg_alpha': 1, 'reg_lambda': 0.5)

reg_lambda似乎越小越好(葉子結點的分數),reg_alpha似乎越大越好(葉子結點數目)
如計算資源允許,可進一步增大reg_alpha,減小reg_lambda

4、降低學習率,調整樹的數目