過度配適、正規化和早期停止

與隨機森林不同的是,梯度提升的樹狀圖可以覆蓋。因此,對於類神經網路,您可以使用驗證資料集套用正規化和提前停止作業。

例如,下圖顯示訓練 GBT 模型時訓練和驗證集的損失和準確率曲線。請注意曲線的多樣性,表示高度過度配適。

訓練損失和驗證損失的圖表,以及決策樹的數量。隨著決策樹的數量增加,訓練量逐漸減少。不過,驗證損失只會減少到約 40 個決策樹中。隨著 40 種以上的樹狀結構做出決策,驗證的比率確實會增加。有 400 道決策樹狀圖,訓練損失和驗證損失之間的落差是巨大的。

圖 29. 損失與決策樹狀圖的數量。

 

訓練準確率和驗證準確率的圖表,與決策樹狀圖的數量一致。隨著訓練樹的數量增加,訓練準確率會逐漸增加,在 400 棵決策樹中達到將近 1.0 倍。驗證準確率會在 40 棵決策樹上提高為 0.86 左右,然後再逐漸降到 400 棵樹下決策的 0.83 左右。

圖 30. 準確率與決策樹狀圖的準確率。

 

漸層增強樹狀圖的常見正規參數包括:

  • 樹狀結構的深度上限。
  • 縮減率。
  • 在每個節點上測試的屬性比例。
  • 損失的 L1 和 L2 係數。

請注意,決策樹通常比隨機森林模型小得多。根據預設,TF-DF 中的梯度提升樹狀結構會成長到 6 深度。由於樹木是淺層的,所以每葉葉的最小範例數量幾乎沒有影響,且通常不會調整。

訓練範例數量較少時,需要驗證資料集。因此,在交叉驗證迴圈內訓練梯度增強的樹狀圖是常見的做法,或是在模型不適配時停用停用停止功能。

使用範例

在上一章中,我們利用小型資料集訓練了隨機森林。在這個例子中,我們只會將隨機森林模型替換為漸層式增強樹狀結構模型:

model = tfdf.keras.GradientBoostedTreesModel()

# Part of the training dataset will be used as validation (and removed
# from training).
model.fit(tf_train_dataset)

# The user provides the validation dataset.
model.fit(tf_train_dataset, validation_data=tf_valid_dataset)

# Disable early stopping and the validation dataset. All the examples are
# used for training.
model.fit(
   tf_train_dataset,
   validation_ratio=0.0,
   early_stopping="NONE")
# Note: When "validation_ratio=0", early stopping is automatically disabled,
# so early_stopping="NONE" is redundant here.

使用限制

梯度增強的樹含有一些優缺點。

優點

  • 就像決策樹一樣,它們原生支援數值和類別特徵,而且通常不需要特徵預先處理。
  • 漸層增強型樹狀結構具有預設的超參數,通常可提供卓越結果。但是,調整這些超參數可以大幅改善模型。
  • 梯度增強的樹狀模型通常較小 (節點數量和記憶體內數量) 且執行速度快 (通常只有一或幾個 μs / 範例)。

缺點

  • 決策樹狀結構必須依序訓練,這可能會大幅降低訓練速度。但是,訓練速度減慢的決策樹略有偏移。
  • 如同隨機森林,梯度提升樹狀圖無法學習並重複使用內部表示法。每個決策樹狀結構 (以及每個決策樹狀結構中的每個分支) 都必須重新學習資料集模式。在某些資料集中 (尤其是含有非結構化資料的資料集),例如圖片、文字,這會造成梯度提升樹狀圖顯示的結果比其他方法更差。