Sto imparando a conoscere gli alberi decisionali e mi sento come se fino ad ora li avessi compresi e la matematica dietro di essi abbastanza bene tranne per una cosa: il rapporto di guadagno.

Da quanto ho capito, il rapporto di guadagno è implementato per punire le caratteristiche che possono assumere MOLTI valori possibili.

Se una caratteristica assume molti valori possibili, diventa plausibile che se dividiamo su quella caratteristica ci possono essere valori che puntano solo a una singola classe, ma semplicemente perché ci sono solo 1 o 2 dati punti con quel valore per quella caratteristica comunque.

In altre parole, lunica ragione per cui avremmo una bassa entropia per la divisione su quella caratteristica è perché la caratteristica potrebbe assumere molti valori, e quindi molti di quei valori puntano specificamente a una singola etichetta . Quindi il nostro algoritmo dellalbero decisionale finirebbe per dividersi su qualcosa come “ID #” e calcolare erroneamente che abbiamo appena avuto un enorme guadagno di informazioni.

Tuttavia, questo sembra solo un problema perché “ID #” è una funzione con cui non dovremmo “dividerci. Voglio dire, se avessimo unaltra funzione che assumesse anche molte possibilità valori, ma ciascuno di quei valori in realtà ha implicato unetichetta per quel datapoint, quindi lapplicazione del rapporto di guadagno non significherebbe che stiamo effettivamente rovinando il nostro albero decisionale punendo quella che era effettivamente una divisione molto buona con tonnellate di guadagno di informazioni?

Non è meglio identificare semplicemente quale caratteristica non avrà nulla a che fare con la nostra etichettatura PRIMA di fornire i dati di addestramento allalgoritmo?

IDK, semplicemente non lo faccio vedi perché il rapporto di guadagno sarebbe davvero utile …

Risposta

Avevo lo stesso dubbio quando stavo facendo il mio Master “Laurea. Prima di tutto, non includi qualcosa di così casuale come” ID “. È qui che entra in gioco la preelaborazione dei dati. Prendiamo un set di dati che ha gli utenti e le loro preferenze di genere di film in base a variabili come sesso, gruppo di età, valutazione, blah, blah. Con laiuto del guadagno di informazioni, dividi in “Gender “(supponendo che abbia il più alto guadagno di informazioni) e ora le variabili” Gruppo di età “e” Valutazione “potrebbero essere altrettanto importanti e con laiuto del rapporto di guadagno, penalizzerà una variabile con valori più distinti che ci aiuteranno a decidere il dividere al livello successivo.

Commenti

  • OKaaaay, Fantastico! Quindi usiamo il rapporto di guadagno solo quando ci troviamo tra la divisione su due diverse possibili caratteristiche ! È per scegliere quello per il quale è più probabile che i dati del test abbiano un valore visto in precedenza, perché questa è latmosfera che stavo ottenendo dallesempio ID, il motivo per cui è una brutta divisione che aveva così alte possibilità di prendere su valori diversi (in questo caso, nessunaltra persona avrà lo stesso ID).
  • Questo ha MOLTO più senso . Ogni spiegazione che ' ho letto utilizza ID e continua a farmi pensare al motivo per cui qualcuno lo ha in un set di dati in primo luogo? !!!! Grazie Danny! Mi ' mi piacerebbe il tuo post ma non ' ho ancora abbastanza reputazione.

Risposta

Il guadagno di informazioni è una delle euristiche che aiuta a selezionare gli attributi per la selezione.

Come sapete gli alberi decisionali un top costruito modo ricorsivo divide et impera. Gli esempi sono suddivisi in modo ricorsivo in base agli attributi selezionati.

Negli algoritmi ID3 usiamo selezionare gli attributi con il maggior guadagno di informazioni.

Sia $ p_i $ la probabilità che una tupla arbitraria in $ D $ appartiene alla classe $ C_i $ . Quindi $ p_i = | C_ {i, d} | / | D | $ Informazioni attese (entropia) necessarie per classificare una tupla in $ D $ $$ Info (D) = – \ sum_ {i = 1} ^ {m} {p_i * \ log (p_i)} $$

Informazioni necessarie (dopo aver utilizzato A per dividere D in porzioni v) per classificare D: $$ Info_A (D) = – \ sum_ {j = 1} ^ {v} {D_j / D * Info_j (D)} $$

Informazioni ottenute ramificando sullattributo A

$$ Gain (A) = Info (D) – Info_A (D) $$

Nellalgoritmo C4.5 dobbiamo dividere la differenza di informazioni per $ SplitInfo (A) $

$$ Gain (A) = (Info (D) – Info_A (D)) / SplitInfo (A) $$

inserisci qui la descrizione dellimmagine

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *