1. 程式人生 > >Xgboost的引數解釋

Xgboost的引數解釋

XGBoost 引數

在執行XGBoost程式之前,必須設定三種類型的引數:通用型別引數(general parameters)、booster引數和學習任務引數(task parameters)。
一般型別引數general parameters –引數決定在提升的過程中用哪種booster,常見的booster有樹模型和線性模型。
Booster引數-該引數的設定依賴於我們選擇哪一種booster模型。
學習任務引數task parameters-引數的設定決定著哪一種學習場景,例如,迴歸任務會使用不同的引數來控制著排序任務。
命令列引數-一般和xgboost的CL版本相關。

Booster引數:


1. eta[預設是0.3] 和GBM中的learning rate引數類似。通過減少每一步的權重,可以提高模型的魯棒性。典型值0.01-0.2
2. min_child_weight[預設是1] 決定最小葉子節點樣本權重和。當它的值較大時,可以避免模型學習到區域性的特殊樣本。但如果這個值過高,會導致欠擬合。這個引數需要用cv來調整
3. max_depth [預設是6] 樹的最大深度,這個值也是用來避免過擬合的3-10
4. max_leaf_nodes 樹上最大的節點或葉子的數量,可以代替max_depth的作用,應為如果生成的是二叉樹,一個深度為n的樹最多生成2n個葉子,如果定義了這個引數max_depth會被忽略
5. gamma[預設是0] 在節點分裂時,只有在分裂後損失函式的值下降了,才會分裂這個節點。Gamma指定了節點分裂所需的最小損失函式下降值。這個引數值越大,演算法越保守。
6. max_delta_step[預設是0] 這引數限制每顆樹權重改變的最大步長。如果是0意味著沒有約束。如果是正值那麼這個演算法會更保守,通常不需要設定。
7. subsample[預設是1] 這個引數控制對於每棵樹,隨機取樣的比例。減小這個引數的值演算法會更加保守,避免過擬合。但是這個值設定的過小,它可能會導致欠擬合。典型值:0.5-1
8. colsample_bytree[預設是1] 用來控制每顆樹隨機取樣的列數的佔比每一列是一個特徵0.5-1
9. colsample_bylevel[預設是1] 用來控制的每一級的每一次分裂,對列數的取樣的佔比。
10. lambda[預設是1] 權重的L2正則化項
11. alpha[預設是1] 權重的L1正則化項
12. scale_pos_weight[預設是1] 各類樣本十分不平衡時,把這個引數設定為一個正數,可以使演算法更快收斂。

通用引數:
1. booster[預設是gbtree]
選擇每次迭代的模型,有兩種選擇:gbtree基於樹的模型、gbliner線性模型
2. silent[預設是0]
當這個引數值為1的時候,靜默模式開啟,不會輸出任何資訊。一般這個引數保持預設的0,這樣可以幫我們更好的理解模型。
3. nthread[預設值為最大可能的執行緒數]
這個引數用來進行多執行緒控制,應當輸入系統的核數,如果你希望使用cpu全部的核,就不要輸入這個引數,演算法會自動檢測。

學習目標引數:
1. objective[預設是reg:linear]
這個引數定義需要被最小化的損失函式。最常用的值有:binary:logistic二分類的邏輯迴歸,返回預測的概率非類別。multi:softmax使用softmax的多分類器,返回預測的類別。在這種情況下,你還要多設定一個引數:num_class類別數目。
2. eval_metric[預設值取決於objective引數的取之]
對於有效資料的度量方法。對於迴歸問題,預設值是rmse,對於分類問題,預設是error。典型值有:rmse均方根誤差;mae平均絕對誤差;logloss負對數似然函式值;error二分類錯誤率;merror多分類錯誤率;mlogloss多分類損失函式;auc曲線下面積。
3. seed[預設是0]
隨機數的種子,設定它可以復現隨機資料的結果,也可以用於調整引數。