XGBoost - 超引數



本章將討論 XGBoost 演算法所需或常用超引數的子集。這些引數已被選擇以簡化從資料生成模型引數的過程。本章按類別列出了需要配置的必需超引數。這些超引數是可設定的且可選的。

XGBoost 超引數類別

XGBoost 建立者將所有超引數主要分為三大類:

  • 通用引數

  • 提升器引數

  • 學習任務引數

讓我們在下節討論這三類超引數:

通用引數

通用引數定義了 XGBoost 模型的整體功能和工作方式。以下是此類別中的引數列表:

  • booster [預設=gbtree]:此引數主要選擇每次迭代執行的模型型別。它提供 2 個選項 - gbtree:基於樹的模型和 gblinear:線性模型。

  • silent [預設=0]:用於將模型設定為靜默模式。如果啟用並設定為 1,則表示不會列印任何執行訊息。最好保持為 0,因為這些訊息有助於理解模型。

  • nthread [預設為可用執行緒的最大數量]:主要用於並行處理,應輸入系統中的核心數。如果要在所有核心上執行,則不會輸入值,演算法將自動檢測它。

還有兩個引數 XGBoost 會自動設定,因此您無需擔心它們。

提升器引數

由於有兩種型別的提升器,這裡我們只討論樹提升器,因為它比線性提升器使用頻率低,並且效能始終更好。

引數 描述 典型值
eta 類似於學習速率。幫助控制模型在每一步之後的變化程度。 0.01-0.2
min_child_weight 樹節點中所需所有觀測值的最小總權重。 使用交叉驗證進行調優
max_depth 樹的最深級別。控制過擬合(模型過於特定)。 3-10
max_leaf_nodes 樹可以具有的最多葉子(端點)。
gamma 損失需要減少的最小數量才能分割節點。 基於損失函式進行調優
max_delta_step 限制樹的權重可以變化的程度。 通常不需要
subsample 用於生長每棵樹的資料比例。 0.5-1
colsample_bytree 為每棵樹隨機選擇的列(特徵)的比例。 0.5-1
colsample_bylevel 在樹的每一層每個分割處使用的列的比例。 通常不使用
lambda L2 正則化(如嶺迴歸),有助於減少過擬合。 嘗試減少過擬合
alpha L1 正則化(如 Lasso 迴歸),對於具有許多特徵的模型很有用。 適用於高維資料
scale_pos_weight 幫助處理不平衡的資料類別,使模型學習得更快。 > 0(對於不平衡資料)

學習任務引數

學習任務引數定義了最佳化的目標和每一步將選擇的指標。

objective [預設=reg:linear]

用於定義要最小化的損失函式。最常用的值如下:

  • binary:logistic - 指的是二元分類,因為有兩個分類。它返回預期機率而不是實際類別。

  • multi:softmax - 用於多類別分類。它返回預期類別而不是機率。你還需要設定額外的選項 num_class 來告訴模型有多少個唯一的類別。

  • multi:softprob - 此函式與 softmax 類似,它提供資料點可能屬於的每個可能類別的機率,而不僅僅是預測的類別。

eval_metric [根據 objective 預設]

評估指標必須與驗證資料一起使用。預設引數是用於錯誤分類和迴歸的 rmse。

典型值如下:

  • rmse:均方根誤差

  • mae:平均絕對誤差

  • logloss:負對數似然

  • error:二元分類錯誤率(0.5 閾值)

  • merror:多類別分類錯誤率

  • mlogloss:多類別對數損失

  • auc:曲線下面積

seed [預設=0]

這是隨機數種子。它用於生成可重複的結果以及引數調優。

如果您以前從未使用過 Scikit-Learn,則不太可能識別這些引數名稱。但是,Python xgboost 包有一個名為 XGBClassifier 引數的 sklearn 包裝器。它遵循 sklearn 樣式的命名約定。將更改的引數名稱為

  • eta -> learning_rate

  • lambda -> reg_lambda

  • alpha -> reg_alpha

廣告