XGBoost Tree "interruzione di funzionalità iniziale"
Sono abbastanza nuovo nell'apprendimento dell'algoritmo XGBoost e avevo una domanda su come l'algoritmo sa su quale caratteristica rompere l'albero per primo.
Ecco la mia comprensione (e per favore correggimi se sbaglio):
Ogni albero inizia come una singola foglia e tutti i residui vanno a quella foglia. Quindi calcoliamo il punteggio di somiglianza e proviamo a suddividerlo tra alcune caratteristiche. Ad esempio, supponiamo di avere solo una caratteristica: l'altezza. Potremmo dividere il residuo se il suo rispettivo valore x fosse diciamo altezza>$180cm$ o altezza < $180cm$. Quindi procedete a calcolare i punteggi di somiglianza e il guadagno per le nuove foglie e proseguite giù per il nostro albero.
La mia domanda è ora dire che avevamo due o più caratteristiche come altezza, età, peso, istruzione, ecc. Come fa l'algoritmo a sapere dove rompere i residui iniziali? Lo calcola su tutte le possibili caratteristiche e trova il miglior guadagno? Posso immaginare che set di dati di grandi dimensioni esaminino tutte le funzionalità, quindi spezzarlo a una certa soglia e confrontare deve richiedere molto tempo.
O inizia da qualche caratteristica casuale e si fa strada verso il basso come una foresta casuale? So che c'è un parametro all'interno dell'algoritmo che ti permette di impostare la percentuale di caratteristiche per albero, quindi aggiungo alla mia domanda una volta che specifichiamo questa percentuale come sceglie le caratteristiche e, cosa più importante, una volta selezionate quelle caratteristiche come fa a sapere quali uno da cogliere per rompere la foglia iniziale dei residui.
Modifica: ho provato a leggere il documento in cui l'algoritmo è stato pubblicato per la prima volta, ma l'ho trovato un po 'troppo difficile da concettualizzare e capire.
Risposte
Ogni albero inizia come una singola foglia e tutti i residui vanno a quella foglia. Quindi calcoliamo il punteggio di somiglianza e proviamo a suddividerlo tra alcune caratteristiche. Ad esempio, diciamo che avevamo solo una caratteristica: l'altezza. Potremmo dividere il residuo se il suo rispettivo valore x fosse diciamo altezza> 180 ° o altezza <180 °. Quindi procedete a calcolare i punteggi di somiglianza e il guadagno per le nuove foglie e proseguite giù per il nostro albero
- Qui sembra che tu stia descrivendo solo un albero decisionale. Guarda questo tutorial per capirlo un po 'di più
La mia domanda è ora che avevamo due o più caratteristiche come altezza, età, peso, istruzione, ecc. Come fa l'algoritmo a sapere dove rompere i residui iniziali? Lo calcola su tutte le possibili caratteristiche e trova il miglior guadagno? Posso immaginare che set di dati di grandi dimensioni esaminino tutte le funzionalità, quindi spezzarlo a una certa soglia e confrontare deve richiedere molto tempo.
- Ancora una volta stai parlando dell'albero decisionale e della sua complessità, ma sì, per set di dati di grandi dimensioni è eccessivamente costoso. Per evitare ciò vengono utilizzate diverse strategie, come il campionamento, la selezione delle caratteristiche o la quantizzazione
O inizia da qualche caratteristica casuale e si fa strada verso il basso come una foresta casuale? So che c'è un parametro all'interno dell'algoritmo che ti permette di impostare la percentuale di caratteristiche per albero, quindi aggiungo alla mia domanda una volta che specifichiamo questa percentuale come sceglie le caratteristiche e, cosa più importante, una volta selezionate quelle caratteristiche come fa a sapere quali uno da cogliere per rompere la foglia iniziale dei residui.
- La foresta casuale seleziona le caratteristiche casuali per divisione dell'albero. Gli alberi sono diventati avidi, quindi cerca tutte le spaccature possibili e sceglie il meglio. Se la carta originale era troppo difficile, prova a seguire questo tutorial sulla foresta casuale