In un certo senso capisco cosa significhi "overfitting", ma ho bisogno di aiuto su come elaborare un esempio del mondo reale che si applica al overfitting.
In un certo senso capisco cosa significhi "overfitting", ma ho bisogno di aiuto su come elaborare un esempio del mondo reale che si applica al overfitting.
Risposte:
Ecco un bell'esempio di modelli di serie storiche delle elezioni presidenziali di xkcd:
Ci sono state solo 56 elezioni presidenziali e 43 presidenti. Non ci sono molti dati da cui imparare. Quando lo spazio del predittore si espande per includere elementi come avere i denti falsi e il valore in punti Scrabble dei nomi, è abbastanza facile per il modello passare dall'adattare le caratteristiche generalizzabili dei dati (il segnale) e iniziare a far corrispondere il rumore. Quando ciò accade, l'adattamento ai dati storici può migliorare, ma il modello fallirà miseramente quando verrà utilizzato per fare inferenze sulle future elezioni presidenziali.
Il mio preferito era l'esempio Matlab della popolazione del censimento degli Stati Uniti rispetto al tempo:
(Almeno spero sinceramente che questo sia un esempio di overfitting)
http://www.mathworks.com/help/curvefit/examples/polynomial-curve-fitting.html#zmw57dd0e115
Lo studio di Chen et al. (2013) adatta due cubi a una presunta discontinuità nell'aspettativa di vita in funzione della latitudine.
Chen Y., Ebenstein, A., Greenstone, M. e Li, H. 2013. Prove sull'impatto dell'esposizione prolungata all'inquinamento atmosferico sull'aspettativa di vita dalla politica cinese del fiume Huai. Atti della National Academy of Sciences 110: 12936–12941. astratto
Nonostante la sua pubblicazione su una rivista eccezionale, ecc., La sua tacita approvazione da parte di illustri personaggi, ecc., Lo presenterei ancora come un esempio prima facie di eccesso di adattamento.
Un segno rivelatore è l'implausibilità dei cubi. Il montaggio di un cubo presuppone implicitamente che vi sia una ragione per cui l'aspettativa di vita varierebbe come un polinomio di terzo grado della latitudine in cui vivi. Sembra piuttosto non plausibile: non è facile immaginare un meccanismo fisico plausibile che provocherebbe un tale effetto.
Vedi anche il seguente post sul blog per un'analisi più dettagliata di questo articolo: prove sull'impatto dell'uso prolungato della regressione polinomiale sull'inferenza causale (un'affermazione secondo cui il riscaldamento del carbone sta riducendo la durata della vita di 5 anni per mezzo miliardo di persone) .
In un articolo di Science del 14 marzo 2014 , David Lazer, Ryan Kennedy, Gary King e Alessandro Vespignani hanno identificato i problemi di Google Trend influenzali che attribuiscono a un eccesso di adattamento.
Ecco come raccontano la storia, inclusa la loro spiegazione della natura del sovradimensionamento e perché ha causato il fallimento dell'algoritmo:
Nel febbraio 2013, ... Nature ha riferito che GFT prevedeva più del doppio della percentuale di visite mediche per malattia simil-influenzale (ILI) rispetto ai Centers for Disease Control and Prevention (CDC) .... Ciò è accaduto nonostante il fatto che GFT fosse stato progettato per prevedere i rapporti CDC. ...
In sostanza, la metodologia era quella di trovare le migliori corrispondenze tra 50 milioni di termini di ricerca per adattarsi a 1152 punti dati. Le probabilità di trovare termini di ricerca che corrispondano alla propensione dell'influenza ma che non sono strutturalmente indipendenti, e quindi non prevedono il futuro, erano piuttosto elevate. Gli sviluppatori di GFT, infatti, riportano di eliminare i termini di ricerca stagionali non correlati all'influenza ma fortemente correlati ai dati del CDC, come quelli riguardanti il basket delle scuole superiori. Questo avrebbe dovuto essere un avvertimento del fatto che i big data stavano superando il numero esiguo di casi, una preoccupazione standard nell'analisi dei dati. Questo metodo ad hoc per scartare termini di ricerca particolari fallì quando GFT perse completamente la pandemia di influenza A-H1N1 non stagionale del 2009.
[Enfasi aggiunta.]
Ho visto questa immagine alcune settimane fa e ho pensato che fosse piuttosto rilevante per la domanda in corso.
Invece di adattarsi linearmente alla sequenza, è stato dotato di un polinomio quartico, che si adattava perfettamente, ma ha dato una risposta chiaramente ridicola.
Per me il miglior esempio è il sistema tolemaico in astronomia. Tolomeo ipotizzò che la Terra fosse al centro dell'universo e creò un sofisticato sistema di orbite circolari annidate, che spiegherebbe abbastanza bene i movimenti di oggetti sul cielo. Gli astronomi hanno dovuto continuare ad aggiungere cerchi per spiegare la deviazione, fino a quando un giorno è diventato così contorto che la gente ha iniziato a dubitarne. Fu allora che Copernico inventò un modello più realistico.
Questo è il miglior esempio di adattamento a me. Non è possibile aggiungere ai dati il processo di generazione dei dati (DGP). È possibile equipaggiare solo in modo eccessivo il modello non specificato. Quasi tutti i nostri modelli nelle scienze sociali sono erroneamente specificati, quindi la chiave è ricordare questo e mantenerli parsimoniosi. Non cercare di cogliere ogni aspetto del set di dati, ma provare a catturare le funzionalità essenziali attraverso la semplificazione.
Supponiamo che tu abbia 100 punti su un grafico.
Potresti dire: hmm, voglio prevedere il prossimo.
Qui puoi vedere un'illustrazione semplificata per questo esempio:
Più alto è l'ordine polinomiale, migliore si adatterà ai punti esistenti.
Tuttavia, i polinomi di alto ordine, nonostante sembrino modelli migliori per i punti, li stanno effettivamente adattando. Modella il rumore anziché la vera distribuzione dei dati.
Di conseguenza, se aggiungi un nuovo punto al grafico con la curva che si adatta perfettamente, probabilmente sarà più lontano dalla curva rispetto a se utilizzassi un polinomio di ordine inferiore più semplice.
L'analisi che potrebbe aver contribuito al disastro di Fukushima è un esempio di overfitting. Esiste una relazione ben nota in Scienze della Terra che descrive la probabilità di terremoti di una certa dimensione, data la frequenza osservata di terremoti "minori". Questo è noto come il rapporto Gutenberg-Richter e fornisce un registro lineare per molti decenni. L'analisi del rischio sismico nelle vicinanze del reattore (questo diagramma dell'eccellente libro di Nate Silver "Il segnale e il rumore") mostra un "nodo" nei dati. Ignorare il nodo porta a una stima del rischio annualizzato di un terremoto di magnitudo 9 come circa 1 su 300 - sicuramente qualcosa per cui prepararsi. Però, il sovradimensionamento di una doppia linea di pendenza (come apparentemente è stato fatto durante la valutazione del rischio iniziale per i reattori) riduce la previsione del rischio a circa 1 su 13.000 anni. Non si può criticare gli ingegneri per non aver progettato i reattori per resistere a un evento così improbabile - ma si dovrebbe sicuramente criticare gli statistici che hanno sovralimentato (e quindi estrapolato) i dati ...
"Agh! Pat sta lasciando l'azienda. Come potremo mai trovare un sostituto?"
Offerta di lavoro:
Ricercato: ingegnere elettrico. Androgino di 42 anni, laureato in ingegneria elettrica, matematica e zootecnia. Deve essere alto 68 pollici con i capelli castani, una talpa sopra l'occhio sinistro e incline a diatribi a vento lungo contro le oche e l'uso improprio della parola "consiglio".
In senso matematico, il sovradimensionamento si riferisce spesso alla creazione di un modello con più parametri di quelli necessari, risultando in una migliore adattamento per un set di dati specifico, ma senza acquisire dettagli rilevanti necessari per adattarsi ad altri set di dati della classe di interesse.
Nell'esempio sopra, il poster non è in grado di differenziare le caratteristiche rilevanti da quelle irrilevanti. Le qualifiche risultanti sono probabilmente soddisfatte solo da una persona che già sanno che è giusto per il lavoro (ma non lo vuole più).
Questo è inventato, ma spero che illustrerà il caso.
Esempio 1
set.seed(123)
k <- 100
data <- replicate(k, rnorm(100))
colnames(data) <- make.names(1:k)
data <- as.data.frame(data)
Ora, inseriamo una regressione lineare ad esso:
fit <- lm(X1 ~ ., data=data)
Ed ecco un riepilogo per i primi dieci predittori:
> summary(fit)
Call:
lm(formula = X1 ~ ., data = data)
Residuals:
ALL 100 residuals are 0: no residual degrees of freedom!
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.502e-01 NA NA NA
X2 3.153e-02 NA NA NA
X3 -6.200e-01 NA NA NA
X4 7.087e-01 NA NA NA
X5 4.392e-01 NA NA NA
X6 2.979e-01 NA NA NA
X7 -9.092e-02 NA NA NA
X8 -5.783e-01 NA NA NA
X9 5.965e-01 NA NA NA
X10 -8.289e-01 NA NA NA
...
Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: NaN
F-statistic: NaN on 99 and 0 DF, p-value: NA
i risultati sembrano piuttosto strani, ma tracciamolo.
> sum(abs(data$X1-fitted(fit)))
[1] 0
È zero, quindi le trame non ci mentivano: il modello si adatta perfettamente. E quanto è preciso in classifica?
> sum(data$X1==fitted(fit))
[1] 100
Esempio 2
Un altro esempio. Consente di recuperare alcuni altri dati:
data2 <- cbind(1:10, diag(10))
colnames(data2) <- make.names(1:11)
data2 <- as.data.frame(data2)
quindi sembra così:
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
1 1 1 0 0 0 0 0 0 0 0 0
2 2 0 1 0 0 0 0 0 0 0 0
3 3 0 0 1 0 0 0 0 0 0 0
4 4 0 0 0 1 0 0 0 0 0 0
5 5 0 0 0 0 1 0 0 0 0 0
6 6 0 0 0 0 0 1 0 0 0 0
7 7 0 0 0 0 0 0 1 0 0 0
8 8 0 0 0 0 0 0 0 1 0 0
9 9 0 0 0 0 0 0 0 0 1 0
10 10 0 0 0 0 0 0 0 0 0 1
e ora consente una regressione lineare a questo:
fit2 <- lm(X1~., data2)
quindi otteniamo le seguenti stime:
> summary(fit2)
Call:
lm(formula = X1 ~ ., data = data2)
Residuals:
ALL 10 residuals are 0: no residual degrees of freedom!
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 10 NA NA NA
X2 -9 NA NA NA
X3 -8 NA NA NA
X4 -7 NA NA NA
X5 -6 NA NA NA
X6 -5 NA NA NA
X7 -4 NA NA NA
X8 -3 NA NA NA
X9 -2 NA NA NA
X10 -1 NA NA NA
X11 NA NA NA NA
Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: NaN
F-statistic: NaN on 9 and 0 DF, p-value: NA
È piuttosto autoesplicativo. Puoi pensare all'esempio 1 come simile all'esempio 2 ma con qualche "rumore" aggiunto. Se disponi di dati abbastanza grandi e li usi per "prevedere" qualcosa, a volte una singola "caratteristica" può convincerti che hai un "modello" che descrive bene la tua variabile dipendente, mentre potrebbe essere solo una coincidenza. In Esempio 2 nulla è davvero previsto, ma esattamente lo stesso è avvenuto in Esempio 1 solo i valori delle variabili erano diverse.
Esempi di vita reale
L'esempio di vita reale per questo è la previsione di attacchi terroristici l'11 settembre 2001 osservando "schemi" in numeri estratti casualmente da generatori di numeri pseudocasuali computerizzati dal Global Consciousness Project o "messaggi segreti" in "Moby Dick" che rivelano fatti sugli omicidi di personaggi famosi (ispirato a risultati simili nella Bibbia ).
Conclusione
Se guardi abbastanza duramente, troverai "schemi" per qualsiasi cosa. Tuttavia, questi schemi non ti permetteranno di imparare nulla sull'universo e non ti aiuteranno a raggiungere conclusioni generali. Si adatteranno perfettamente ai tuoi dati, ma sarebbero inutili poiché non si adattano a nient'altro che ai dati stessi. Non ti permetteranno di fare previsioni ragionevoli al di fuori del campione, perché ciò che farebbero è che preferirebbero imitare piuttosto che descrivere i dati.
Un problema comune che si traduce in un overfitting nella vita reale è che oltre ai termini per un modello correttamente specificato, potremmo aver aggiunto qualcosa di estraneo: poteri irrilevanti (o altre trasformazioni) dei termini corretti, variabili irrilevanti o interazioni irrilevanti.
Ciò si verifica nella regressione multipla se si aggiunge una variabile che non deve apparire nel modello correttamente specificato ma non si desidera eliminarla perché si ha paura di indurre una distorsione da variabile omessa . Certo, non hai modo di sapere di averlo incluso erroneamente, dal momento che non puoi vedere l'intera popolazione, solo il tuo campione, quindi non puoi sapere con certezza quale sia la specifica corretta. (Come sottolinea @Scortchi nei commenti, potrebbe non esserci una specifica del modello "corretta" - in tal senso, l'obiettivo della modellazione è trovare una specifica "abbastanza buona"; per evitare un overfitting è necessario evitare una complessità del modello maggiore di quello che può essere sostenuto dai dati disponibili.) Se vuoi un esempio reale di overfitting, questo accade ogni voltasi gettano tutti i potenziali predittori in un modello di regressione, nel caso in cui qualcuno di essi non avesse effettivamente alcuna relazione con la risposta una volta che gli effetti degli altri sono stati parzialmente eliminati.
Con questo tipo di overfitting, la buona notizia è che l'inclusione di questi termini irrilevanti non introduce distorsioni degli stimatori e, in campioni molto grandi, i coefficienti dei termini irrilevanti dovrebbero essere vicini allo zero. Ma ci sono anche brutte notizie: poiché le informazioni limitate del tuo campione vengono ora utilizzate per stimare più parametri, può farlo solo con meno precisione, quindi aumentano gli errori standard sui termini realmente pertinenti. Ciò significa anche che è probabile che siano più lontani dai valori reali rispetto alle stime di una regressione specificata correttamente, il che a sua volta significa che se dati nuovi valori delle variabili esplicative, le previsioni dal modello sovradimensionato tenderanno ad essere meno accurate rispetto a il modello correttamente specificato.
Ecco un grafico del PIL di tronchi rispetto alla popolazione di tronchi per 50 stati degli Stati Uniti nel 2010. È stato selezionato un campione casuale di 10 stati (evidenziato in rosso) e per quel campione si adatta un modello lineare semplice e un polinomio di grado 5. Per il campione punti, il polinomio ha ulteriori gradi di libertà che gli consentono di "spostarsi" più vicino ai dati osservati rispetto alla linea retta. Ma i 50 stati nel loro insieme obbediscono a una relazione quasi lineare, quindi le prestazioni predittive del modello polinomiale sui 40 punti fuori campione sono molto scarse rispetto al modello meno complesso, in particolare durante l'estrapolazione. Il polinomio stava effettivamente adattando parte della struttura casuale (rumore) del campione, che non si generalizzava alla popolazione più ampia. È stato particolarmente scarso nell'estrapolare oltre l'intervallo osservato del campione.questa revisione di questa risposta.)
R
require(MASS) #for multivariate normal simulation
nsample <- 25 #sample to regress
nholdout <- 1e6 #to check model predictions
Sigma <- matrix(c(1, 0.5, 0.4, 0.5, 1, 0.3, 0.4, 0.3, 1), nrow=3)
df <- as.data.frame(mvrnorm(n=(nsample+nholdout), mu=c(5,5,5), Sigma=Sigma))
colnames(df) <- c("x1", "x2", "x3")
df$y <- 5 + 2 * df$x1 + rnorm(n=nrow(df)) #y = 5 + *x1 + e
holdout.df <- df[1:nholdout,]
regress.df <- df[(nholdout+1):(nholdout+nsample),]
overfit.lm <- lm(y ~ x1*x2*x3, regress.df)
correctspec.lm <- lm(y ~ x1, regress.df)
summary(overfit.lm)
summary(correctspec.lm)
holdout.df$overfitPred <- predict.lm(overfit.lm, newdata=holdout.df)
holdout.df$correctSpecPred <- predict.lm(correctspec.lm, newdata=holdout.df)
with(holdout.df, sum((y - overfitPred)^2)) #SSE
with(holdout.df, sum((y - correctSpecPred)^2))
require(ggplot2)
errors.df <- data.frame(
Model = rep(c("Overfitted", "Correctly specified"), each=nholdout),
Error = with(holdout.df, c(y - overfitPred, y - correctSpecPred)))
ggplot(errors.df, aes(x=Error, color=Model)) + geom_density(size=1) +
theme(legend.position="bottom")
Ecco i miei risultati da una corsa, ma è meglio eseguire la simulazione più volte per vedere l'effetto di diversi campioni generati.
> summary(overfit.lm)
Call:
lm(formula = y ~ x1 * x2 * x3, data = regress.df)
Residuals:
Min 1Q Median 3Q Max
-2.22294 -0.63142 -0.09491 0.51983 2.24193
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 18.85992 65.00775 0.290 0.775
x1 -2.40912 11.90433 -0.202 0.842
x2 -2.13777 12.48892 -0.171 0.866
x3 -1.13941 12.94670 -0.088 0.931
x1:x2 0.78280 2.25867 0.347 0.733
x1:x3 0.53616 2.30834 0.232 0.819
x2:x3 0.08019 2.49028 0.032 0.975
x1:x2:x3 -0.08584 0.43891 -0.196 0.847
Residual standard error: 1.101 on 17 degrees of freedom
Multiple R-squared: 0.8297, Adjusted R-squared: 0.7596
F-statistic: 11.84 on 7 and 17 DF, p-value: 1.942e-05
> summary(correctspec.lm)
Call:
lm(formula = y ~ x1, data = regress.df)
Residuals:
Min 1Q Median 3Q Max
-2.4951 -0.4112 -0.2000 0.7876 2.1706
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.7844 1.1272 4.244 0.000306 ***
x1 1.9974 0.2108 9.476 2.09e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.036 on 23 degrees of freedom
Multiple R-squared: 0.7961, Adjusted R-squared: 0.7872
F-statistic: 89.8 on 1 and 23 DF, p-value: 2.089e-09
> with(holdout.df, sum((y - overfitPred)^2)) #SSE
[1] 1271557
> with(holdout.df, sum((y - correctSpecPred)^2))
[1] 1052217
(e aveva più gradi di libertà per farlo rispetto al modello correttamente specificato, quindi poteva produrre un adattamento "migliore"). Guarda la somma degli errori quadrati per le previsioni sul set di controllo, che non abbiamo usato per stimare i coefficienti di regressione e possiamo vedere quanto peggio ha eseguito il modello con overfitting. In realtà il modello correttamente specificato è quello che fa le migliori previsioni. Non dovremmo basare la nostra valutazione delle prestazioni predittive sui risultati dell'insieme di dati che abbiamo usato per stimare i modelli. Ecco un diagramma di densità degli errori, con la specifica del modello corretta che produce più errori vicini allo 0:
La simulazione rappresenta chiaramente molte situazioni rilevanti nella vita reale (immagina qualsiasi risposta nella vita reale che dipende da un singolo predittore e immagina di includere nel modello "predittori" estranei) ma ha il vantaggio che puoi giocare con il processo di generazione dei dati , le dimensioni del campione, la natura del modello sovradimensionato e così via. Questo è il modo migliore per esaminare gli effetti dell'eccessivo adattamento poiché per i dati osservati generalmente non si ha accesso al DGP, ed è comunque "reale" nel senso che è possibile esaminarlo e utilizzarlo. Ecco alcune idee utili che dovresti sperimentare:
n <- 1e6
Sigma
. Ricorda solo di mantenerlo semi-definito positivo (che include l'essere simmetrico). Dovresti scoprire se riduci la multicollinearità, il modello sovradimensionato non funziona così male. Ma tieni presente che i predittori correlati si verificano nella vita reale.df$y <- 5 + 2*df$x1 + rnorm(n=nrow(df))
df$y <- 5 + 2 * df$x1 + 0.1*df$x2 + 0.1*df$x3 + rnorm(n=nrow(df))
nsample <- 25
nsample <- 1e6
, può stimare abbastanza bene gli effetti più deboli e le simulazioni mostrano che il modello complesso ha un potere predittivo che supera quello semplice. Questo dimostra come il "sovradimensionamento" sia un problema sia della complessità del modello che dei dati disponibili.Quando stavo cercando di capirlo da solo, ho iniziato a pensare in termini di analogie con la descrizione di oggetti reali, quindi immagino che sia il "mondo reale" che puoi ottenere, se vuoi capire l'idea generale:
Supponi di voler descrivere a qualcuno il concetto di sedia, in modo che ottengano un modello concettuale che consenta loro di prevedere se un nuovo oggetto che trovano è una sedia. Vai su Ikea e prendi un campione di sedie, e inizi a descriverle usando due variabili: è un oggetto con 4 gambe dove puoi sederti. Bene, questo può anche descrivere uno sgabello o un letto o molte altre cose. Il tuo modello è inadeguato, proprio come se dovessi provare a modellare una distribuzione complessa con troppe poche variabili: molte cose senza sedia saranno identificate come sedie. Quindi, aumentiamo il numero di variabili, aggiungiamo che l'oggetto deve avere un dorso, per esempio. Ora hai un modello abbastanza accettabile che descrive il tuo set di sedie, ma è abbastanza generale da consentire a un nuovo oggetto di essere identificato come uno. Il modello descrive i dati ed è in grado di fare previsioni. Tuttavia, supponiamo che tu abbia un set in cui tutte le sedie sono bianche o nere e fatte di legno. Decidi di includere quelle variabili nel tuo modello e improvvisamente non identificherà una sedia di plastica gialla come una sedia. Quindi, hai sovralimentato il tuo modello, hai incluso le caratteristiche del tuo set di dati come se fossero caratteristiche delle sedie in generale, (se preferisci, hai identificato il "rumore" come "segnale", interpretando la variazione casuale del tuo campione come una caratteristica di tutte le "sedie del mondo reale"). Quindi, aumenti il tuo campione e speri di includere un po 'di nuovo materiale e colori, o diminuisci il numero di variabili nei tuoi modelli. t identificare una sedia di plastica gialla come una sedia. Quindi, hai sovralimentato il tuo modello, hai incluso le caratteristiche del tuo set di dati come se fossero caratteristiche delle sedie in generale, (se preferisci, hai identificato il "rumore" come "segnale", interpretando la variazione casuale del tuo campione come una caratteristica di tutte le "sedie del mondo reale"). Quindi, aumenti il tuo campione e speri di includere un po 'di nuovo materiale e colori, o diminuisci il numero di variabili nei tuoi modelli. t identificare una sedia di plastica gialla come una sedia. Quindi, hai sovralimentato il tuo modello, hai incluso le caratteristiche del tuo set di dati come se fossero caratteristiche delle sedie in generale, (se preferisci, hai identificato il "rumore" come "segnale", interpretando la variazione casuale del tuo campione come una caratteristica di tutte le "sedie del mondo reale"). Quindi, aumenti il tuo campione e speri di includere un po 'di nuovo materiale e colori, o diminuisci il numero di variabili nei tuoi modelli.
Questa potrebbe essere un'analogia semplicistica e una rottura sotto ulteriore esame, ma penso che funzioni come una concettualizzazione generale ... Fammi sapere se qualche parte necessita di chiarimenti.
Nella modellazione predittiva, l'idea è quella di utilizzare i dati a portata di mano per scoprire le tendenze esistenti e che possono essere generalizzate ai dati futuri. Includendo nel tuo modello variabili che hanno effetti minori e non significativi, stai abbandonando questa idea. Quello che stai facendo è considerare le tendenze specifiche nel tuo campione specifico che sono lì solo a causa del rumore casuale invece di una vera tendenza sottostante. In altre parole, un modello con troppe variabili si adatta al rumore anziché scoprire il segnale.
Ecco un'illustrazione esagerata di ciò di cui sto parlando. Qui i punti sono i dati osservati e la linea è il nostro modello. Guarda che si adatta perfettamente - che modello eccezionale! Ma abbiamo davvero scoperto la tendenza o ci stiamo semplicemente adattando al rumore? Probabilmente quest'ultimo.
Una forma di overfitting è abbastanza comune negli sport, vale a dire identificare schemi per spiegare i risultati passati con fattori che non hanno o, nella migliore delle ipotesi, un potere vago per prevedere i risultati futuri. Una caratteristica comune di questi "schemi" è che spesso si basano su pochissimi casi, quindi la pura possibilità è probabilmente la spiegazione più plausibile per lo schema.
Gli esempi includono cose come (le "virgolette" sono fatte da me, ma spesso sembrano simili)
La squadra A ha vinto tutte le partite X da quando l'allenatore ha iniziato a indossare la sua magica giacca rossa.
Simile:
Non ci raderemo durante i playoff, perché questo ci ha aiutato a vincere le partite X passate.
Meno superstizioso, ma anche una forma di overfitting:
Il Borussia Dortmund non ha mai perso una partita in casa della Champions League contro un avversario spagnolo quando ha perso la precedente trasferta della Bundesliga per più di due gol, avendo segnato almeno una volta se stessi.
Simile:
Roger Federer ha vinto tutte le sue presenze in Coppa Davis agli avversari europei quando aveva raggiunto almeno le semifinali negli Australian Open di quell'anno.
I primi due sono un'assurdità abbastanza ovvia (almeno per me). Gli ultimi due esempi potrebbero valere perfettamente nel campione (vale a dire, in passato), ma sarei molto felice di scommettere contro un avversario che lascerebbe che queste "informazioni" influenzino sostanzialmente le sue probabilità per il Dortmund che batte il Madrid se ha perso 4: 1 allo Schalke il sabato precedente o Federer che batte Djokovic, anche se ha vinto l'Australian Open quell'anno.
Ecco un esempio di "mondo reale" non nel senso che qualcuno lo ha incontrato nella ricerca, ma nel senso che usa concetti quotidiani senza molti termini specifici delle statistiche. Forse questo modo di dire sarà più utile per alcune persone la cui formazione è in altri campi.
Immagina di avere un database con dati su pazienti con una malattia rara. Sei uno studente laureato in medicina e vuoi vedere se riesci a riconoscere i fattori di rischio per questa malattia. Ci sono stati 8 casi di malattia in questo ospedale e hai registrato 100 informazioni casuali su di loro: età, razza, ordine di nascita, hanno avuto il morbillo da bambino, qualunque cosa. Hai anche registrato i dati per 8 pazienti senza questa malattia.
Decidi di utilizzare la seguente euristica per i fattori di rischio: se un fattore assume un determinato valore in più di uno dei tuoi pazienti malati, ma in 0 dei tuoi controlli, lo considererai un fattore di rischio. (Nella vita reale, useresti un metodo migliore, ma voglio mantenerlo semplice). Scoprirai che 6 dei tuoi pazienti sono vegetariani (ma nessuno dei controlli è vegetariano), 3 hanno antenati svedesi e due di loro hanno una balbuzie nel linguaggio. Tra gli altri 97 fattori, non vi è nulla che si verifichi in più di un paziente, ma non è presente tra i controlli.
Anni dopo, qualcun altro si interessa a questa malattia orfana e replica la tua ricerca. Poiché lavora in un ospedale più grande, che ha una cooperazione di condivisione dei dati con altri ospedali, può utilizzare i dati relativi a 106 casi, a differenza dei tuoi 8 casi. E scopre che la prevalenza di balbuzienti è la stessa nel gruppo di pazienti e nel gruppo di controllo; la balbuzie non è un fattore di rischio.
Quello che è successo qui è che il tuo piccolo gruppo aveva il 25% di balbuzienti per caso. Il tuo euristico non ha avuto modo di sapere se questo è clinicamente rilevante o meno. Gli hai dato i criteri per decidere quando consideri un modello nei dati "interessante" abbastanza da essere incluso nel modello e, secondo questi criteri, la balbuzie era abbastanza interessante.
Il tuo modello è stato sovraccaricato, perché includeva erroneamente un parametro che non è realmente rilevante nel mondo reale. Si adatta perfettamente al tuo campione - gli 8 pazienti + 8 controlli - molto bene, ma non si adatta ai dati del mondo reale. Quando un modello descrive il tuo campione meglio di quanto descriva la realtà, si chiama sovralimentato.
Se avessi scelto una soglia di 3 su 8 pazienti con una caratteristica, non sarebbe successo - ma avresti avuto maggiori possibilità di perdere qualcosa di veramente interessante. Soprattutto in medicina, dove molte malattie si verificano solo in una piccola parte delle persone che presentano un fattore di rischio, è un compromesso difficile da fare. E ci sono metodi per evitarlo (fondamentalmente, confrontalo con un secondo campione e vedi se il potere esplicativo rimane lo stesso o cade), ma questo è un argomento per un'altra domanda.
Ecco un esempio reale di overfitting che ho aiutato a perpetrare e poi ho cercato (senza successo) di evitare:
Avevo diverse migliaia di serie temporali indipendenti e bivariate, ognuna con non più di 50 punti dati, e il progetto di modellazione prevedeva l'adattamento di una autoregressione vettoriale (VAR) a ciascuna. Non è stato fatto alcun tentativo di regolarizzare attraverso osservazioni, stimare componenti di varianza o qualcosa del genere. I punti temporali sono stati misurati nel corso di un solo anno, quindi i dati erano soggetti a tutti i tipi di effetti stagionali e ciclici che sono apparsi solo una volta in ogni serie temporale.
Un sottoinsieme dei dati mostrava un tasso incredibilmente alto di causalità di Granger rispetto al resto dei dati. I controlli a campione hanno rivelato che in questo sottoinsieme si stavano verificando picchi positivi uno o due in ritardo, ma era chiaro dal contesto che entrambi i picchi erano causati direttamente da una fonte esterna e che un picco non causava l'altro. Le previsioni fuori campione che utilizzano questi modelli probabilmente sarebbero piuttosto sbagliate, perché i modelli erano troppo adatti: invece di "appianare" i picchi facendo una media nel resto dei dati, c'erano poche osservazioni sufficienti che i picchi stessero effettivamente guidando le stime.
Nel complesso, non penso che il progetto sia andato male, ma non credo che abbia prodotto risultati che fossero quasi utili quanto avrebbero potuto essere. Parte del motivo è che la procedura VAR a molti indipendenti, anche con solo uno o due ritardi, stava facendo fatica a distinguere tra dati e rumore, e quindi si adattava a quest'ultimo a spese di fornire informazioni sul ex.
Molte persone intelligenti in questo thread --- molte più esperte di statistiche di me. Ma non vedo ancora un esempio di facile comprensione per l'esempio dei laici. L'esempio presidenziale non è del tutto in linea con il tipico overfitting, perché mentre è tecnicamente overfitting in ognuna delle sue affermazioni selvagge, di solito un modello overfitting si adatta - TUTTO - il rumore dato, non solo un elemento di esso.
Mi piace molto il grafico nella spiegazione del trade-biance varianza in wikipedia: http://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff
(Il grafico più in basso è l'esempio del sovradimensionamento).
Mi viene difficile pensare a un esempio del mondo reale che non suona come un mumbo-jumbo completo. L'idea è che i dati sono in parte causati da variabili misurabili e comprensibili, in parte rumore casuale. Tentare di modellare questo rumore come un modello ti dà inesattezze.
Un esempio classico è la modellazione SOLAMENTE basata su R ^ 2 in MS Excel (stai tentando di adattare un'equazione / modello il più vicino possibile ai dati usando i polinomi, non importa quanto assurdi).
Supponiamo che tu stia cercando di modellare le vendite di gelati in funzione della temperatura. Hai i dati del "mondo reale". Tracci i dati e provi a massimizzare R ^ 2. Troverai utilizzando i dati del mondo reale, l'equazione di adattamento più vicina non è lineare o quadratica (il che avrebbe senso logico). Come quasi tutte le equazioni, i termini polinomiali più insensati aggiunti (x ^ 6 -2x ^ 5 + 3x ^ 4 + 30x ^ 3-43.2x ^ 2-29x) - più si avvicina ai dati. In che modo questo collega sensibilmente la temperatura alle vendite di gelati? Come spiegheresti questo ridicolo polinomio? La verità è che non è il vero modello. Hai sovralimentato i dati.
Stai prendendo in considerazione il rumore - che potrebbe essere stato dovuto a promozioni di vendita o ad altre variabili o "rumori" come una farfalla che sbatte le ali nel cosmo (qualcosa di mai prevedibile) --- e hai tentato di modellarlo in base alla temperatura. Ora di solito se il tuo rumore / errore non è nella media pari a zero o è auto-correlato, ecc., Significa che ci sono più variabili là fuori --- e poi alla fine arrivi al rumore generalmente distribuito in modo casuale, ma comunque è il migliore che posso spiegalo.
La mia preferita è la "formula 3964" scoperta prima della competizione di calcio della Coppa del Mondo nel 1998:
Il Brasile ha vinto i campionati nel 1970 e 1994. Riassumi questi 2 numeri e otterrai 3964; La Germania vinse nel 1974 e 1990, aggiungendo nuovamente 3964; la stessa cosa con l'Argentina che vince nel 1978 e nel 1986 (1978 + 1986 = 3964).
Questo è un fatto molto sorprendente, ma tutti possono vedere che non è consigliabile basare alcuna previsione futura su quella regola. E in effetti, la regola prevede che il vincitore della Coppa del Mondo nel 1998 avrebbe dovuto essere l'Inghilterra dal 1966 + 1998 = 3964 e l'Inghilterra vinse nel 1966. Ciò non accadde e il vincitore fu la Francia.
Un po 'intuitivo, ma forse ti aiuterà. Diciamo che vuoi imparare qualche nuova lingua. Come impari? invece di imparare le regole in un corso, usi degli esempi. In particolare, programmi TV. Quindi ti piacciono gli spettacoli polizieschi e guardi alcune serie di alcuni spettacoli polizieschi. Quindi, prendi un altro spettacolo criminale e guardi alcune serie da quello. Al terzo spettacolo che vedi - sai quasi tutto, nessun problema. Non hai bisogno dei sottotitoli in inglese.
Ma poi provi la tua lingua appena appresa per strada alla tua prossima visita e ti rendi conto che non puoi parlare di nient'altro che dire "agente! Quell'uomo ha preso la mia borsa e ha sparato a quella signora!". Mentre il tuo "errore di allenamento" era zero, il tuo "errore di prova" è elevato, a causa del "sovradimensionamento" della lingua, studiando solo un sottoinsieme limitato di parole e assumendone abbastanza.