2015-09-04 21 views
2

我正在嘗試使用multi:softmax目標來訓練xgboost模型,但準確性分數卡住了。如何更改參數以防止xgboost準確性卡住

代碼:

#preparing dataset omitted 
xgb_params = { 
    "objective": "multi:softmax", 
    "eta": 1, 
    "num_class": 62, 
    "max_depth": 10, 
    "nthread": 4, 
    "eval_metric": "merror", 
    "print.every.n": 1, 
    "silent": 1, 
    "early.stop.round": 5 
} 
num_rounds = 5 

mask = np.random.choice([False, True], len(X_train), p=[0.5, 0.5]) 
not_mask = [not i for i in mask] 

dtrain = xgb.DMatrix(X_train[not_mask], label=y[not_mask]) 
dtrain_watch = xgb.DMatrix(X_train[mask], label=y[mask]) 
dtest = xgb.DMatrix(X_test) 
watchlist = [(dtrain_watch, 'eval')] 

gbdt = xgb.train(xgb_params, dtrain, num_rounds, watchlist) 
preds = gbdt.predict(dtest) 

輸出:

[0] eval-merror:0.989950 
[1] eval-merror:0.989950 
[2] eval-merror:0.989950 
[3] eval-merror:0.989950 
[4] eval-merror:0.989950 

我需要什麼樣的參數改變,以反映迭代任何變化EVAL-merror?

編輯:我試圖將eta改爲0.01,0.1,0.3和1,但徒勞無功。

回答

0

我認爲它不是關於參數,而是關於你的數據。

根據新問題,您可以通過採用不同的數據集(例如kaggle)來測試它,並像這樣構建模型,但可能使用不同的"num_class": x

0

您可以使用sklearn GridSearchCV進行參數調整。但如果您沒有時間只是增加early.stop.roundmax_depth及更低版本eta