ランダム フォレストとは異なり、勾配ブースティング ツリーは過学習する可能性があります。したがって ニューラル ネットワークでは、モデルに正則化と早期停止を 検証データセットを渡します。
たとえば、次の図は、トレーニングの損失曲線と精度曲線を示しています。 検証セットと検証セットです曲線が発散していることに注目してください 過学習の度合いが高いことを示唆しています。
<ph type="x-smartling-placeholder"></ph> 図 29:損失とディシジョン ツリーの数 で確認できます。
<ph type="x-smartling-placeholder"></ph> 図 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.
使用方法と制限事項
勾配ブースト ツリーには長所と短所があります。
メリット
- ディシジョン ツリーと同様に、数値とカテゴリをネイティブにサポート 特徴の前処理が不要なことがよくあります。
- 勾配ブーストツリーにはデフォルトのハイパーパラメータがあり、 表示されます。それでも、ハイパーパラメータをチューニングすると、 モデルを改善します
- 勾配ブーストツリー モデルは一般に小規模です(ノード数と 高速に実行できます(多くの場合、1 サンプルあたりわずか 1 ~数マイクロ秒)。
短所
- ディシジョン ツリーは順番にトレーニングする必要があるため、トレーニングが遅くなる可能性がある 大きく影響しますただし、トレーニングの遅れは、トレーニング データの ディシジョン ツリーは小さくなります
- ランダム フォレストと同様に、勾配ブースティング ツリーは内部的な学習や再利用ができない 表現です。各ディシジョン ツリー(および各ディシジョン ツリーの各ブランチ) データセット パターンを再学習する必要があります。一部のデータセットでは、特に 非構造化データ(画像、テキストなど)を使用すると、勾配ブースが 他の方法よりも悪い結果を示す傾向があります。