In un articolo precedente:
hai imparato a riscrivere gli alberi decisionali utilizzando un approccio di Programmazione Differenziabile, come suggerito dal documento NODE. L’idea di questo articolo è quella di sostituire XGBoost con una rete neurale.
Più 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 ad un nodo decisionale:
- Selezione delle funzionalità
- Rilevamento dei rami
Il documento NODE mostra che entrambi possono essere gestiti utilizzando la funzione entmax.
Per riassumere, abbiamo mostrato come creare un albero binario senza utilizzare gli operatori di confronto.
L’articolo precedente si concludeva con domande aperte riguardanti la formazione di un albero decisionale regolarizzato. È tempo di rispondere a queste domande.
Se sei interessato ad un approfondimento sui metodi di potenziamento del gradiente, dai un’occhiata al mio libro:
Innanzitutto, in base a quanto presentato nell’articolo precedente, creiamo una nuova classe Python: SmoothBinaryNode
.
Questa classe codifica il comportamento di un nodo binario regolare. Ci sono due parti fondamentali nel suo codice:
- La selezione delle funzionalità, gestita dalla funzione
_choices
- La valutazione di tali caratteristiche, rispetto ad una determinata soglia, e l’individuazione del percorso da seguire:
left
Oright
. Tutto questo è gestito dai metodileft
Eright
.
Fonte: towardsdatascience.com