Ao contrário das florestas aleatórias, as árvores otimizadas com gradiente podem overfitting. Portanto, quanto a redes neurais, é possível aplicar a regularização e a parada antecipada usando um conjunto de dados de validação.
Por exemplo, as figuras a seguir mostram curvas de perda e acurácia para conjuntos de treinamento e validação ao treinar um modelo de GBT. Observe o grau de divergência das curvas, o que sugere um alto grau de overfitting.
Figura 29. Perda x número de árvores de decisão.
Figura 30. Acurácia x número de árvores de decisão.
Os parâmetros mais comuns de regularização para árvores otimizadas com gradiente incluem:
- É a profundidade máxima da árvore.
- A taxa de redução.
- A proporção de atributos testados em cada nó.
- Coeficiente L1 e L2 na perda.
Observe que as árvores de decisão geralmente ficam muito mais superficiais do que os modelos aleatórios de floresta. Por padrão, as árvores de árvores otimizadas com gradiente no TF-DF apresentam a profundidade 6. Como as árvores são rasas, o número mínimo de exemplos por folha tem pouco impacto e geralmente não é ajustado.
A necessidade de um conjunto de dados de validação é um problema quando o número de exemplos de treinamento é pequeno. Portanto, é comum treinar árvores otimizadas com gradiente dentro de um loop de validação cruzada ou desativar a parada antecipada quando o modelo não tem overfitting.
Exemplo de uso
No capítulo anterior, treinamos uma floresta aleatória com um conjunto de dados pequeno. Neste exemplo, simplesmente substituiremos o modelo aleatório de floresta por um modelo de árvores otimizadas com gradiente:
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.
Uso e limitações
As árvores otimizadas com gradiente têm alguns prós e contras.
Vantagens
- Assim como as árvores de decisão, elas são nativamente compatíveis com atributos numéricos e categóricos e, em geral, não precisam de pré-processamento de atributos.
- As árvores otimizadas com gradiente têm hiperparâmetros padrão que geram bons resultados. No entanto, ajustar esses hiperparâmetros pode melhorar significativamente o modelo.
- Os modelos de árvores otimizadas com gradiente geralmente são pequenos (em número de nós e na memória) e rápidos para execução (geralmente apenas um ou alguns μs / exemplos).
Desvantagens
- As árvores de decisão precisam ser treinadas em sequência, o que pode atrasar consideravelmente o treinamento. No entanto, a lentidão do treinamento é um pouco deslocada porque as árvores de decisão estão menores.
- Assim como as florestas aleatórias, as árvores otimizadas com gradiente não podem aprender e reutilizar representações internas. Cada árvore de decisão (e cada ramificação de cada árvore de decisão) precisa reaprender o padrão do conjunto de dados. Em alguns conjuntos de dados, principalmente em conjuntos de dados com dados não estruturados (por exemplo, imagens, texto), as árvores aprimoradas por gradiente têm resultados mais fracos do que outros métodos.