Riduzione di Gini e impurità di Gini dei nodi infantili


15

Sto lavorando alla misura di importanza della funzione Gini per la foresta casuale. Pertanto, devo calcolare la diminuzione di Gini nell'impurità del nodo. Ecco il modo in cui lo faccio, che porta a un conflitto con la definizione, suggerendo che devo sbagliarmi da qualche parte ... :)

Per un albero binario, e date le probabilità dei bambini sinistro e destro, posso calcolare l'impurità di Gini di un nodo n :

io(n)=1-pl2-pr2

E il Gini diminuisce:

Δio(n)=io(n)-plio(nl)-prio(nr)

Quindi, per questo esempio con 110 osservazioni su un nodo:

- node (110)
   - left (100)
      - left_left (60)
      - left_right (40)
   - right (10)
      - right_left (5)
      - right_right (5)

Vorrei calcolare la diminuzione di Gini per il nodo in questo modo:

i(left)=1(60/100)²(40/100)²=0.48i(right)=1(5/10)²(5/10)²=0.50i(node)=1(100/110)²(10/110)²=0.16

Ma seguendo la definizione di Breiman (o questa risposta su CV: Come misurare / classificare "importanza variabile" quando uso CART , ma non ho accesso al libro di riferimento), il criterio di impurità del discendente dovrebbe essere inferiore al genitore nodo:

Importanza di Gini
Ogni volta che viene effettuata una divisione di un nodo sulla variabile m il criterio di impurità gini per i due nodi discendenti è inferiore al nodo principale. Sommare i gini diminuisce per ogni singola variabile su tutti gli alberi della foresta dà un'importanza variabile veloce che è spesso molto coerente con la misura dell'importanza della permutazione.

Perché altrimenti, porta a una diminuzione negativa di Gini ...

Δi(node)=i(node)(100/110)i(left)(10/110)i(right)=0.32

Quindi, se qualcuno potesse dire dove sbaglio, sarei molto grato perché sembra che mi manchi qualcosa di evidente qui ...

Risposte:


16

Semplicemente non hai usato affatto la variabile della classe target. L'impurità di Gini come tutte le altre funzioni di impurità, misura l'impurità degli output dopo una divisione. Quello che hai fatto è misurare qualcosa usando solo la dimensione del campione.

Cerco di ricavare la formula per il tuo caso.

Supponiamo che tu abbia un classificatore binario per semplicità. Indicare con l'attributo test, con l'attributo class con valori .C c + , c -UNCc+,c-

L'indice gini iniziale prima della divisione è dato da dove è la proporzione di punti dati che hanno valore per la classe variabile. P ( A + ) c +

io(UN)=1-P(UN+)2-P(UN-)2
P(UN+)c+

Ora, l'impurità per il nodo sinistro sarebbe dove è la proporzione di punti dati dal sottoinsieme sinistro di che hanno valore nella variabile di classe, ecc. I ( A r ) = 1 - P ( A r + ) 2 - P ( A r - ) 2 P ( A l + ) A

io(UNl)=1-P(UNl+)2-P(UNl-)2
io(UNr)=1-P(UNr+)2-P(UNr-)2
P(UNl+)UNc+

Ora la formula finale per GiniGain sarebbe

solioniosolun'ion(UN)=io(UN)-pleftio(UNl)-prioghtio(UNr)
dove è la proporzione di istanze per il sottoinsieme sinistro, oppure (quante istanze sono in sottoinsieme sinistra diviso per il numero totale di istanze da .pleft#|UNl|#|UNl|+#|UNr|UN

Sento che la mia notazione potrebbe essere migliorata, guarderò più tardi quando avrò più tempo.

Conclusione

L'uso del solo numero di punti dati non è sufficiente, impurità significa quanto una funzione (funzione di test) è in grado di riprodurre la distribuzione di un'altra funzione (funzione di classe). La distribuzione della funzione di test produce il numero che hai usato (come a sinistra, come a destra), ma la distribuzione della funzione di classe non viene utilizzata nelle tue formule.

Modifica successiva: dimostra perché diminuisce

Ora ho notato che mi mancava la parte che dimostra perché l'indice gini sul nodo figlio è sempre inferiore rispetto al nodo padre. Non ho un proove completo o verificato, ma sto pensando che sia una prova valida. Per altre cose interessanti relative all'argomento, è possibile controllare Nota tecnica: alcune proprietà dei criteri di scissione - Leo Breiman . Ora seguirà la mia prova.

Supponiamo che siamo nel caso binario, e tutti i valori in un nodo potrebbe essere completamente descritto da una coppia con il significato di istanze della prima classe, e istanze della seconda classe. Possiamo affermare che nel nodo genitore abbiamo istanze .(un',B)un'B(un',B)

Per trovare la migliore suddivisione ordiniamo le istanze in base a una funzione di test e proviamo tutte le possibili divisioni binarie. Ordinato per una determinata funzione è in realtà una permutazione di istanze, in cui le classi iniziano con un'istanza della prima classe o della seconda classe. Senza perdere la generalità, supponiamo che inizi con un'istanza della prima classe (in caso contrario abbiamo una prova speculare con lo stesso calcolo).

La prima divisione da provare è nelle istanze sinistra e destra . Come viene confrontato l'indice gini per quei possibili candidati per i nodi figlio sinistro e destro con il nodo padre? Ovviamente a sinistra abbiamo . Quindi sul lato sinistro abbiamo un valore dell'indice gini più piccolo. E il nodo giusto?(1,0)(un'-1,B)h(left)=1-(1/1)2-(0/1)2=0

h(pun'rent)=1-(un'un'+B)2-(Bun'+B)2
h(rioght)=1-(un'-1(un'-1)+B)2-(B(un'-1)+B)2

Considerando che è maggiore o uguale a (poiché altrimenti come potremmo separare un'istanza della prima classe nel nodo sinistro?) E dopo la semplificazione è semplice vedere che l'indice gini per il nodo destro ha un valore inferiore rispetto a nodo padre.un'0

Ora la fase finale della dimostrazione è quella di dare un nodo al fatto che, considerando tutti i possibili punti di divisione dettati dai dati che abbiamo, manteniamo quello che ha il più piccolo indice gini aggregato, il che significa che l'ottimale che scegliamo è inferiore o uguale al banale quello che mi è sembrato più piccolo. Il che conclude che alla fine l'indice gini diminuirà.

Come conclusione finale dobbiamo notare anche se varie divisioni possono dare valori più grandi di quel nodo genitore, quello che scegliamo sarà il più piccolo tra loro e anche più piccolo del valore dell'indice gini genitore.

Spero che sia d'aiuto.


Grazie mille, mi hai sbloccato il cervello ... In effetti, dato che ho a che fare con alberi di regressione, l'uso della variabile di classe target è apparso meno ovvio che per un semplice compito di classificazione. Ma ora ha perfettamente senso.
Remi Mélisson,

Ho aggiornato la risposta per contenere le parti mancanti.
rapaio,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.