Calcolare il gain per un albero
Nel video hai visto come la misura di Gini viene usata per creare lo split ideale di un albero. Ora calcolerai il gain per l'albero caricato nel tuo workspace.
Il set di dati contiene 500 casi, di cui 89 in default. Questo porta a un Gini pari a 0.292632 nel nodo radice. Come piccolo promemoria, ricorda che il Gini di un certo nodo = 2 * proporzione di default in questo nodo * proporzione di non-default in questo nodo. Dai un'occhiata al codice per un ripasso.
gini_root <- 2 * (89 / 500) * (411 / 500)
Userai queste misure di Gini per calcolare il gain dei nodi foglia rispetto al nodo radice. Guarda il seguente codice per farti un'idea di come usare le misure di Gini per calcolare il gain di un nodo.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
Calcola il Gini nel nodo sinistro e nel nodo destro, e il gain dei due nodi foglia rispetto al nodo radice. L'oggetto che contiene l'albero è small_tree.
Questo esercizio fa parte del corso
Credit Risk Modeling in R
Istruzioni dell'esercizio
- Il calcolo del Gini del nodo radice è fornito.
- Calcola la misura di Gini per il nodo foglia sinistro.
- Calcola la misura di Gini per il nodo foglia destro.
- Calcola il gain come differenza tra il Gini del nodo radice e le misure di Gini dei nodi foglia pesate.
- Le informazioni sullo split in questo albero si trovano usando
$splitsull'oggetto albero,small_tree. Qui, invece di gain, dovresti guardare alla colonnaimprove.improveè una metrica alternativa del gain, ottenuta semplicemente moltiplicando il gain per il numero di casi nel set di dati. Assicurati che l'oggettoimprove(codice fornito) abbia lo stesso valore dismall_tree$split.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# The Gini-measure of the root node is given below
gini_root <- 2 * 89 / 500 * 411 / 500
# Compute the Gini measure for the left leaf node
gini_ll <-
# Compute the Gini measure for the right leaf node
gini_rl <-
# Compute the gain
gain <- gini_root - 446 / 500 * gini_ll - 54 / 500 * gini_rl
# compare the improve-column in small_tree$splits with our computed gain, multiplied by 500, and assure they are the same
small_tree$splits
improve <- gain * 500