랜덤 포리스트와 달리 그래디언트 부스티드 트리는 오버핏할 수 있습니다. 따라서 신경망의 경우 검증 데이터 세트를 사용하여 정규화 및 조기 중지를 적용할 수 있습니다.
예를 들어 다음 그림은 GBT 모델을 학습할 때 학습 세트와 검증 세트의 손실 및 정확도 곡선을 보여줍니다. 곡선이 얼마나 분산되어 있는지 확인해 보세요. 이는 상당한 수준의 오버피팅을 나타냅니다.
그림 29. 손실과 결정 트리 수 비교
그림 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~2µs 정도).
단점
- 결정 트리는 순차적으로 학습해야 하므로 학습 속도가 상당히 느려질 수 있습니다. 그러나 학습 속도가 느려지는 것은 결정 트리가 더 작아지면서 어느 정도 상쇄됩니다.
- 랜덤 포레스트와 마찬가지로, 경사 부스트 트리는 내부 표현을 학습하고 재사용할 수 없습니다. 각 결정 트리 (및 각 결정 트리의 각 브랜치)는 데이터 세트 패턴을 다시 학습해야 합니다. 일부 데이터 세트(특히 비정형 데이터(예: 이미지, 텍스트)가 포함된 데이터 세트)에서는 이로 인해 기울기 부스트 트리가 다른 방법보다 나쁜 결과를 보입니다.