L'adattamento eccessivo è così grave che non dovresti scegliere un modello che si adatta troppo, anche se il suo errore di prova è più piccolo? No. Ma dovresti avere una giustificazione per sceglierlo.
Questo comportamento non è limitato a XGBoost. È un filo conduttore tra tutte le tecniche di apprendimento automatico; trovare il giusto compromesso tra underfitting e overfitting. La definizione formale è il compromesso di bias-varianza (Wikipedia) .
Il compromesso della varianza
Quella che segue è una semplificazione del compromesso di bias-varianza, per aiutare a giustificare la scelta del modello.
Diciamo che un modello ha un bias elevato se non è in grado di utilizzare completamente le informazioni nei dati. Fa troppo affidamento su informazioni generali, come il caso più frequente, la media della risposta o poche potenti funzionalità. La distorsione può derivare da ipotesi errate, ad esempio supponendo che le variabili siano normalmente distribuite o che il modello sia lineare.
Diciamo che un modello ha una varianza elevata se utilizza troppe informazioni dai dati. Si basa su informazioni che sono rivelate solo nel set di formazione che gli è stato presentato, che non si generalizza abbastanza bene. In genere, il modello cambia molto se si modifica il set di allenamento, da cui il nome "varianza elevata".
Tali definizioni sono molto simili alle definizioni di underfitting e overfitting. Tuttavia, tali definizioni sono spesso troppo semplificate per essere opposte, come in
- Il modello è inadeguato se sia l'addestramento che l'errore di test sono elevati. Ciò significa che il modello è troppo semplice.
- Il modello è troppo adatto se l'errore del test è superiore all'errore di addestramento. Ciò significa che il modello è troppo complesso.
Tali semplificazioni sono ovviamente utili, in quanto aiutano a scegliere la giusta complessità del modello. Ma trascurano un punto importante, il fatto che (quasi) ogni modello ha sia una componente di bias che una varianza. La descrizione di underfitting / overfitting ti dice che hai troppa distorsione / troppa varianza, ma (quasi) hai sempre entrambe .
Se vuoi maggiori informazioni sul compromesso di bias varianza, sono un sacco di visualizzazione utile e buona risorsa disponibile tramite Google. Ogni libro di testo di apprendimento automatico avrà una sezione sul compromesso della variazione di bias, eccone alcuni
- Un'introduzione all'apprendimento statistico e agli elementi dell'apprendimento statistico (disponibile qui) .
- Pattern Recognition and Machine Learning, di Christopher Bishop.
- Machine Learning: A Probabilistic Perspective, di Kevin Murphy.
Inoltre, un bel post sul blog che mi ha aiutato ad afferrare è Comprensione del pregiudizio di pregiudizio di Scott Fortmann-Roe .
Applicazione al tuo problema
Quindi hai due modelli,
MARTEXGBoostTrain MAE∼ 4.0∼ 0,3Test MAE∼ 4.0∼ 2.4Bassa varianza, maggiore inclinazione ,Varianza più alta, distorsione inferiore ,
e devi sceglierne uno. Per fare ciò, è necessario definire cos'è un modello migliore. I parametri che dovrebbero essere inclusi nelle tue decisioni sono la complessità e le prestazioni del modello.
- Quante "unità" di complessità sei disposto a scambiare con una "unità" di prestazione?
- Una maggiore complessità è associata a una maggiore varianza. Se vuoi che il tuo modello si generalizzi bene su un set di dati un po 'diverso da quello su cui ti sei allenato, dovresti mirare a una minore complessità.
- Se si desidera un modello facilmente comprensibile, è possibile farlo a scapito delle prestazioni riducendo la complessità del modello.
- Se stai cercando le migliori prestazioni su un set di dati che conosci proviene dallo stesso processo generativo del tuo set di addestramento, puoi manipolare la complessità al fine di ottimizzare il tuo errore di test e utilizzarlo come metrica. Questo accade quando il tuo set di allenamento viene campionato casualmente da un set più grande e il tuo modello verrà applicato su questo set. Questo è il caso della maggior parte delle competizioni di Kaggle, per esempio.
L'obiettivo qui non è quello di trovare un modello che "non si adatta troppo". Serve per trovare il modello che presenta il miglior compromesso di bias-varianza. In questo caso, direi che la riduzione della distorsione realizzata dal modello XGBoost è abbastanza buona da giustificare l'aumento della varianza.
Cosa sai fare
Tuttavia, probabilmente puoi fare di meglio sintonizzando gli iperparametri.
Aumentare il numero di round e ridurre il tasso di apprendimento è una possibilità. Qualcosa di "strano" nell'aumento del gradiente è che eseguirlo ben oltre il punto in cui l'errore di allenamento ha raggiunto lo zero sembra migliorare ancora l'errore del test (come discusso qui: è più profondo solo quando il fondale è buono? ). Puoi provare ad allenare il tuo modello un po 'più a lungo nel tuo set di dati dopo aver impostato gli altri parametri,
La profondità degli alberi che coltivi è un ottimo punto di partenza. Devi notare che per ogni unità di profondità, raddoppi il numero di foglie da costruire. Se dovessi coltivare alberi di taglia due invece di taglia 16, ci vorrebbe1 / 214del tempo! Dovresti provare a far crescere alberi più piccoli. Il motivo è che la profondità dell'albero dovrebbe rappresentare il grado di interazione delle caratteristiche . Questo può essere un gergo, ma se le tue caratteristiche hanno un grado di interazione di 3 (approssimativamente: una combinazione di 4 caratteristiche non è più potente di una combinazione di 3 di queste caratteristiche + la quarta), allora crescendo alberi di dimensioni maggiori di 3 è dannoso. Due alberi di profondità tre avranno un potere di generalizzazione maggiore di un albero di profondità quattro. Questo è un concetto piuttosto complicato e non ci entrerò in questo momento, ma puoi controllare questa raccolta di documenti per iniziare. Inoltre, nota che gli alberi profondi portano a una varianza elevata!
L'uso del sottocampionamento, noto come insaccamento , è ottimo per ridurre la varianza. Se i tuoi singoli alberi hanno una varianza elevata, l'insaccamento farà la media degli alberi e la media avrà una varianza inferiore rispetto ai singoli alberi. Se, dopo aver ottimizzato la profondità dei tuoi alberi, riscontri ancora una varianza elevata, prova ad aumentare il sottocampionamento (ovvero riduci la frazione dei dati utilizzati). Anche il sottocampionamento dello spazio delle caratteristiche raggiunge questo obiettivo.