A differenza delle foreste casuali, gli alberi con gradienti intensi possono sovraccaricare. Pertanto, per quanto riguarda le reti neurali, puoi applicare la regolarizzazione e l'interruzione anticipata utilizzando un set di dati di convalida.
Ad esempio, le seguenti figure mostrano le curve di perdita e accuratezza per gli insiemi di addestramento e convalida durante l'addestramento di un modello GBT. Noterai quanto sono divergenti le curve, il che suggerisce un alto livello di overfitting.
Figura 29. Perdita o numero di alberi decisionale.
Figura 30. Precisione e numero di alberi decisionale.
I parametri di regolazione più comuni per gli alberi con intensità di gradiente includono:
- La profondità massima dell'albero.
- L'aliquota del ritiro.
- Il rapporto tra gli attributi testati per ciascun nodo.
- Coordinamento L1 e L2 della perdita.
Tenete presente che gli alberi decisionale in genere crescono molto meno rispetto ai modelli forestali casuali. Per impostazione predefinita, gli alberi con incrementi in gradiente in TF-DF vengono cresciuti fino a 6. Poiché gli alberi sono poco superficiali, il numero minimo di esempi per foglia ha un impatto minimo e in genere non è ottimizzato.
La necessità di un set di dati di convalida è un problema quando il numero di esempi di addestramento è basso. Pertanto, è normale addestrare alberi con gradiente graduato all'interno di un ciclo di convalida incrociata o disabilitare l'interruzione anticipata quando è noto che il modello non si sovraccarica.
Esempio di utilizzo
Nel capitolo precedente abbiamo addestrato una foresta casuale su un piccolo set di dati. In questo esempio, sostituiremo semplicemente il modello della foresta casuale con un modello di alberi con gradiente potenziato:
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.
Utilizzo e limitazioni
Gli alberi con sfumatura sfumata hanno alcuni pro e contro.
Pro
- Analogamente agli alberi decisionale, supportano in modo nativo le funzionalità numeriche e di categoria e spesso non richiedono la pre-elaborazione delle funzionalità.
- Gli alberi potenziati sfumati hanno iperparametri predefiniti che spesso forniscono ottimi risultati. Tuttavia, ottimizzare questi iperparametri può migliorare notevolmente il modello.
- I modelli ad albero con aumento graduato sono in genere piccoli (in numero di nodi e in memoria) e veloci da eseguire (spesso solo uno o pochi μs / esempi).
Contro
- Gli alberi decisionale devono essere addestrati in sequenza, il che può rallentare notevolmente l'addestramento. Tuttavia, il rallentamento dell'addestramento è leggermente compensato dagli alberi da decisione più piccoli.
- Al pari delle foreste casuali, gli alberi con gradiente non possono imparare e riutilizzare le rappresentazioni interne. Ogni albero decisionale (e ciascun ramo di ogni albero decisionale) deve imparare di nuovo il pattern del set di dati. In alcuni set di dati, in particolare quelli con dati non strutturati (ad esempio, immagini e testo), questo provoca la visualizzazione di risultati più scarsi di altri rami graduali.