Overfitting: nessun proiettile d'argento?


21

La mia comprensione è che anche quando si seguono le corrette procedure di convalida incrociata e selezione dei modelli, si verificherà un overfitting se si cerca un modello abbastanza duramente , a meno che non si impongano restrizioni sulla complessità del modello, sul periodo. Inoltre, spesso le persone tentano di apprendere penalità sulla complessità del modello dai dati, il che mina la protezione che possono fornire.

La mia domanda è: quanta verità c'è nell'affermazione sopra?

Sento spesso i professionisti della ML dire: " Nella mia azienda / laboratorio, proviamo sempre ogni modello disponibile (ad es. Da biblioteche come il cursore o lo scikit-learn ) per vedere quale funziona meglio ". Spesso sostengo che questo approccio può facilmente sovrautilizzare, anche se sono seri sulla convalida incrociata e mantengono i set di controllo nel modo che desiderano. Inoltre, più sono difficili da cercare, più è probabile che si adattino troppo. In altre parole, l'ottimizzazione eccessiva è un vero problema e non esistono euristiche che possano aiutarti a combatterla sistematicamente. Sbaglio a pensare in questo modo?


Stai chiedendo di ML in particolare o modelli multivariati in generale?
Rumtscho,

@rumtscho tutto in ML.
Amelio Vazquez-Reina,

1
Grazie @CagdasOzgenc: "maggiore è lo spazio di ricerca (i modelli considerati), minore è il risultato" . Non sono sicuro del livello di astrazione "spazio di ricerca" a cui ti riferisci qui, ma per "tentare abbastanza" intendo ovviamente cercare attraverso un numero sempre maggiore di modelli e quindi aumentare la complessità / spazio di ricerca del "meta-modello" (se lo desideri) che stiamo cercando di adattarci.
Amelio Vazquez-Reina,

Risposte:


8

Non una risposta completa, ma una cosa che la gente trascura in questa discussione è cosa significa Cross-Validation (per esempio), perché la usi e cosa copre?

Il problema che vedo nella ricerca troppo dura è che il CV che le persone fanno è spesso all'interno di un singolo modello. Facile da fare impostando un folds=argomento della procedura di adattamento del modello. Ma quando si passa a più modelli e anche a più procedure per la creazione di più modelli, si aggiungono un altro o due livelli che non sono stati inseriti nel CV.

Quindi dovrebbero usare CV nidificato. E dovrebbero anche usare "Target Shuffling" (ricampionamento / test di permutazione) racchiuso in tutto il loro processo per vedere quanto bene farebbe la loro procedura se interrompessi la relazione tra variabili dipendenti e indipendenti - cioè quanto stai facendo meglio di quello casuale considerando l'intero processo?


1
+1. Fare la selezione del modello con singoli (o troppo pochi) livelli di CV che eseguono una ricerca in griglia (selezione del modello) può sicuramente portare a un overfitting (per chiunque sia interessato, ad esempio questo e le fonti in esso). Avevo letto di "Target Shuffling" (per altri lettori, raccomando questa esposizione ), ma non l'ho mai usato da solo; Mi chiedo se possa anche essere abusato, (ad esempio facendo più test che conducono alla fine a falsi positivi, e quindi di nuovo cercando "abbastanza forte" (?)).
Amelio Vazquez-Reina,

7

Nei miei circa 4 anni di esperienza, ho scoperto che provare tutti i modelli disponibili in caret (o scikit-learn) non porta necessariamente a un overfitting. Ho scoperto che se si dispone di un set di dati sufficientemente ampio (oltre 10.000 righe) e un bilancio delle classi più o meno uniforme (ovvero, nessuno squilibrio di classe come nel rischio di credito o in problemi di marketing), l'overfitting tende ad essere minimo. Vale la pena notare che la mia ricerca della griglia sui parametri di ottimizzazione tende a non superare le 30 permutazioni per modello. All'estremo, se avessi usato 100 o 1.000 permutazioni per modello, probabilmente ti adatteresti.

Il modo in cui hai formulato la tua domanda rende la risposta abbastanza semplice: all'estremo, sì, è probabile che il sovradimensionamento sia se non certo. Non esiste un proiettile d'argento e dubito che qualcuno suggerirebbe diversamente. Tuttavia, esiste ancora uno spettro ragionevolmente ampio in cui il grado di overfitting è abbastanza minimo da essere accettabile. Avere una buona quantità di dati invisibili nel set di controllo della convalida aiuta sicuramente. Avere più set di holdout di convalida invisibili è ancora meglio. Sono abbastanza fortunato da lavorare in un campo in cui ho una grande quantità di nuovi dati che arrivano ogni giorno.

Se mi trovo in una posizione in cui sono bloccato con un set di dati statici con meno di 2.000-3.000 osservazioni (ad es. Dati medici difficili da reperire), generalmente utilizzo solo modelli lineari perché ho visto spesso sovralimentazione con gradiente potenziamento e supporto di macchine vettoriali su set di dati sufficientemente piccoli. D'altra parte, ho parlato con un grande Kaggler (primo 5%) che ha detto che costruisce decine di migliaia di modelli per ogni competizione e poi li raggruppa, usando diverse migliaia di modelli nel suo ensemble finale. Ha detto che questo è stato il motivo principale del suo successo nelle classifiche finali.


1
Sì. Ho lavorato con dati che hanno avuto osservazioni in milioni. Indipendentemente dalla convalida che ho provato (kfold, bootstrap e persino semplice holdout), i modelli presentavano poche variazioni. Man mano che i tuoi dati aumentano, meno attenzione devi prendere su come convalidare.
Ricardo Cruz,

In altre parole, nessun modello ha abbastanza gradi di libertà per "memorizzare" milioni di osservazioni.
Ricardo Cruz,

5

Molto dipende dalla scala. Vorrei poter contare su più di 2.000-3.000 casi come ha fatto @RyanZotti; Raramente ho 1/10 di così tanti. Questa è una grande differenza di prospettiva tra le persone che apprendono automaticamente i "big data" e quelle che lavorano in campi come la biomedicina, il che potrebbe spiegare alcune delle diverse prospettive che troverete su questo sito.

Presenterò una spiegazione euristica della mia opinione su questo problema. Il problema di base nell'adattamento eccessivo, come descritto nella pagina di Wikipedia , è la relazione tra il numero di casi e il numero di parametri che si sta valutando. Quindi inizia con l'idea approssimativa che se hai modelli M che stai scegliendo tra i parametri p per modello, stai valutando qualcosa sull'ordine dei parametri Mp in totale.

In caso di pericolo di overfitting ci sono due modi generali per tornare a un modello più generalizzabile: ridurre il numero di parametri o penalizzarli in qualche modo.

Con insiemi di dati sufficientemente grandi potresti non avvicinarti mai troppo al sovradimensionamento. Se hai 20.000 casi e 20 modelli diversi con 100 parametri per modello, potresti non avere problemi anche senza penalità poiché hai ancora 10 casi per parametro efficace. Non provare questa strategia di modellazione con solo 200 casi.

La media del modello potrebbe essere considerata una forma di penalizzazione. Nell'esempio del Kaggler citato da @RyanZotti, il numero di casi è presumibilmente enorme e ciascuno dei modelli "diverse migliaia" nell'ensemble finale contribuisce individualmente solo una piccola parte del modello finale. Qualsiasi overfitting specifico per un particolare modello che contribuisce non avrà una grande influenza sul risultato finale e il numero estremamente elevato di casi in una competizione Kaggler riduce ulteriormente il pericolo di overfitting.

Quindi, come per molti problemi qui, l'unica risposta ragionevole è: "Dipende". In questo caso, dipende dalla relazione tra il numero di casi e il numero effettivo di parametri esaminati, insieme a quanta penalizzazione viene applicata.


2

Penso che questa sia un'ottima domanda. Voglio sempre osservare la curva a "U" negli esperimenti di validazione incrociata con dati reali. Tuttavia, la mia esperienza con i dati del mondo reale (~ 5 anni nelle transazioni con carta di credito e dati relativi all'istruzione) non mi dice che un adattamento eccessivo possa facilmente avvenire in enormi quantità (miliardi di righe) di dati del mondo reale .

Vedo spesso che puoi metterti alla prova nel modo migliore per adattarti al set di allenamento, ma non puoi fare troppo (ad esempio, ridurre la perdita a 0), perché il set di allenamento è davvero grande e contiene molte informazioni e rumore.

Allo stesso tempo, puoi provare il modello più complicato (senza alcuna regolarizzazione) sui dati di test, e sembra bene e persino meglio di alcuni con la regolarizzazione.

Infine, penso che le mie dichiarazioni possano essere vere solo a condizione che tu abbia miliardi di punti dati durante l'addestramento. Intuitivamente, i dati sono molto complessi rispetto al modello, quindi non ti adatterai. Per miliardi di righe di dati, anche se stai utilizzando un modello con migliaia di parametri, va bene. Allo stesso tempo, non puoi permetterti il ​​calcolo per la costruzione di un modello con milioni di parametri gratuiti.

Secondo me questo è anche il motivo per cui la rete neurale e l'apprendimento profondo sono diventati popolari in questi giorni. Rispetto a miliardi di immagini in Internet, qualsiasi modello a cui puoi permetterti di allenarti non è sufficiente per adattarsi troppo.


1

Concordo con @ ryan-zotti sul fatto che la ricerca abbastanza difficile non porta necessariamente a un overfitting - o almeno non a un importo in modo da chiamarlo overfitting. Vorrei provare a esprimere il mio punto di vista su questo:

Box una volta disse:

Ricorda che tutti i modelli sono sbagliati; la domanda pratica è quanto devono essere sbagliati per non essere utili.

(Essere perfetti richiederebbe tutti i dati, che a loro volta eliminerebbero la necessità di un modello).

1

Perché: alla fine avremo sempre un errore di modello / sovra / sotto-adattamento - è la capacità di rilevare / misurare questo errore nel nostro interesse per fare scelte ragionevoli che contano.


1

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.