XGBoost Come il Deep Learning può sostituire il Gradient Boosting e gli Alberi di Decisione – Parte 2 Addestramento

XGBoost, Deep Learning sostituisce Gradient Boosting e Alberi di Decisione - Parte 2 Addestramento

Foto di Simon Wilkes su Unsplash

Un mondo senza if

In un articolo precedente:

XGBoost: Come il Deep Learning può sostituire Gradient Boosting e gli alberi decisionali – Parte 1

In questo articolo, imparerai a riscrivere gli alberi decisionali utilizzando un approccio di programmazione differenziabile, come proposto…

towardsdatascience.com

hai appreso come riscrivere gli alberi decisionali utilizzando un approccio di programmazione differenziabile, come suggerito dal paper NODE. L’idea di questo paper è di sostituire XGBoost con una rete neurale.

Nello specifico, dopo aver spiegato perché il processo di costruzione degli alberi decisionali non è differenziabile, ha introdotto gli strumenti matematici necessari per regolarizzare i due elementi principali associati a un nodo decisionale:

  • Selezione delle caratteristiche
  • Rilevamento del ramo

Il paper NODE mostra che entrambi possono essere gestiti utilizzando la funzione entmax.

In sintesi, abbiamo mostrato come creare un albero binario senza utilizzare operatori di confronto.

L’articolo precedente si è concluso con domande aperte riguardanti l’addestramento di un albero decisionale regolarizzato. È ora di rispondere a queste domande.

Se sei interessato a una disamina approfondita sui metodi di Boosting del Gradiente, dai un’occhiata al mio libro:

Practical Gradient Boosting: Un’analisi approfondita del Boosting del Gradiente in Python

Questo libro sui metodi di Boosting del Gradiente è rivolto a studenti, accademici, ingegneri e data scientist che desiderano…

amzn.to

Un nodo decisionale fluido

Prima di tutto, basandoci su ciò che abbiamo presentato nell’articolo precedente, creiamo una nuova classe Python: SmoothBinaryNode.

Questa classe codifica il comportamento di un nodo binario fluido. Ci sono due parti chiave nel suo codice:

  • La selezione delle caratteristiche, gestita dalla funzione _choices
  • La valutazione di queste caratteristiche, rispetto a una soglia data, e l’identificazione del percorso da seguire: left o right. Tutto questo è gestito dai metodi left e right.