W pewnym sensie rozumiem, co oznacza „nadmierne dopasowanie”, ale potrzebuję pomocy, aby znaleźć prawdziwy przykład, który dotyczy nadmiernego dopasowania.
W pewnym sensie rozumiem, co oznacza „nadmierne dopasowanie”, ale potrzebuję pomocy, aby znaleźć prawdziwy przykład, który dotyczy nadmiernego dopasowania.
Odpowiedzi:
Oto ładny przykład modeli szeregów czasowych wyborów prezydenckich od xkcd:
Odbyło się tylko 56 wyborów prezydenckich i 43 prezydentów. To nie jest dużo danych do nauczenia się. Kiedy przestrzeń predyktora rozszerza się o takie rzeczy, jak fałszywe zęby i wartość punktowa nazw Scrabble, modelowi dość łatwo jest przejść od dopasowania ogólnych cech danych (sygnału) i zacząć dopasowywać szum. Gdy tak się stanie, dopasowanie danych historycznych może się poprawić, ale model zawiedzie nieszczęśliwie, gdy zostanie wykorzystany do wnioskowania na temat przyszłych wyborów prezydenckich.
Moim ulubionym był przykład Matlaba dotyczący populacji amerykańskiego spisu ludności w czasie:
(Przynajmniej mam szczerą nadzieję, że jest to przykład nadmiernego dopasowania)
http://www.mathworks.com/help/curvefit/examples/polynomial-curve-fitting.html#zmw57dd0e115
Badanie Chen i in. (2013) dopasowuje dwa sześcienne do rzekomej nieciągłości w oczekiwanej długości życia w funkcji szerokości geograficznej.
Chen Y., Ebenstein, A., Greenstone, M. i Li, H. 2013. Dowody dotyczące wpływu trwałego narażenia na zanieczyszczenie powietrza na oczekiwaną długość życia z chińskiej polityki dotyczącej rzeki Huai. Postępowania z National Academy of Sciences 110: 12936–12941. abstrakcyjny
Pomimo swojej publikacji w czasopiśmie wybitnego, itd., Jego milczącej akceptacji przez wybitnych ludzi, itd, chciałbym jeszcze przedstawić to jako dowód prima facie przykład nadmiernej montażu.
Znakiem ostrzegawczym jest niewiarygodność sześciennych. Pośrednie dopasowanie do sześciennego zakłada, że istnieje jakiś powód, dla którego oczekiwana długość życia różni się jako wielomian trzeciego stopnia szerokości geograficznej, w której mieszkasz. Wydaje się to raczej nieprawdopodobne: nie jest łatwo wyobrazić sobie prawdopodobny mechanizm fizyczny, który spowodowałby taki efekt.
Zobacz także następujący post na blogu, aby uzyskać bardziej szczegółową analizę tego artykułu: Dowody na wpływ trwałego stosowania regresji wielomianowej na wnioskowanie przyczynowe (twierdzenie, że ogrzewanie węgla skraca żywotność o 5 lat dla pół miliarda ludzi) .
W artykule Science z 14 marca 2014 r. David Lazer, Ryan Kennedy, Gary King i Alessandro Vespignani zidentyfikowali problemy w Google Flu Trends , które przypisują nadmiernemu dopasowaniu.
Oto, w jaki sposób opowiadają historię, w tym wyjaśniają naturę nadmiernego dopasowania i dlaczego spowodował błąd algorytmu:
W lutym 2013 r. ... Nature podało, że GFT przewiduje ponad dwukrotny udział wizyt lekarskich w przypadku chorób grypopodobnych (ILI) niż w Centrach Kontroli i Zapobiegania Chorób (CDC) ... Stało się tak pomimo faktu, że GFT został zbudowany do przewidywania raportów CDC. ...
Zasadniczo metodologia polegała na znalezieniu najlepszego dopasowania spośród 50 milionów wyszukiwanych haseł, aby pomieścić 1152 punktów danych. Szanse na znalezienie haseł, które pasują do skłonności do grypy, ale są strukturalnie niepowiązane, a więc nie przewidują przyszłości, były dość wysokie. W rzeczywistości programiści GFT informują o wyeliminowaniu sezonowych haseł niezwiązanych z grypą, ale silnie skorelowanych z danymi CDC, takimi jak te dotyczące koszykówki w szkole średniej. To powinno być ostrzeżenie, że duże zbiory danych są zbyt małe w stosunku do niewielkiej liczby przypadków - co jest standardowym problemem w analizie danych. Ta doraźna metoda wyrzucania osobliwych wyszukiwanych haseł zakończyła się niepowodzeniem, gdy GFT całkowicie opuściło niesezonową pandemię grypy A – H1N1 z 2009 roku.
[Podkreślenie dodane.]
Widziałem to zdjęcie kilka tygodni temu i uznałem, że ma ono raczej związek z omawianym pytaniem.
Zamiast liniowego dopasowania sekwencji został on wyposażony w kwartalny wielomian, który miał idealne dopasowanie, ale dał wyraźnie absurdalną odpowiedź.
Dla mnie najlepszym przykładem jest układ Ptolemeusza w astronomii. Ptolemeusz założył, że Ziemia znajduje się w centrum wszechświata, i stworzył wyrafinowany system zagnieżdżonych okrągłych orbit, który dość dobrze tłumaczy ruchy obiektów na niebie. Astronomowie musieli dodawać kółka, aby wyjaśnić odchylenie, aż pewnego dnia stało się tak skomplikowane, że ludzie zaczęli w to wątpić. Wtedy Kopernik wymyślił bardziej realistyczny model.
To najlepszy przykład dla mnie zbytniego dopasowania. Nie można dopasować procesu generowania danych (MZD) do danych. Możesz przewinąć tylko źle określony model. Prawie wszystkie nasze modele w naukach społecznych są błędnie sprecyzowane, więc kluczem jest pamiętać o tym i zachować ich oszczędność. Nie próbuj uchwycić każdego aspektu zestawu danych, ale spróbuj uchwycić najważniejsze funkcje poprzez uproszczenie.
Załóżmy, że masz 100 kropek na wykresie.
Można powiedzieć: hmm, chcę przewidzieć następny.
Tutaj możesz zobaczyć uproszczoną ilustrację tego przykładu:
Im wyższy porządek wielomianowy, tym lepiej będzie pasował do istniejących kropek.
Jednak wielomiany wysokiego rzędu, mimo że wyglądają na lepsze modele kropek, w rzeczywistości ich nie pasują. Modeluje raczej szum niż prawdziwy rozkład danych.
W konsekwencji, jeśli dodasz nową kropkę do wykresu z idealnie dopasowaną krzywą, prawdopodobnie będzie ona bardziej oddalona od krzywej niż w przypadku zastosowania prostszego wielomianu niskiego rzędu.
Analiza, która mogła przyczynić się do katastrofy w Fukushimie, jest przykładem nadmiernego dopasowania. Istnieje dobrze znany związek w nauce o Ziemi, który opisuje prawdopodobieństwo trzęsień ziemi o określonej wielkości, biorąc pod uwagę obserwowaną częstotliwość „mniejszych” trzęsień ziemi. Jest to znane jako relacja Gutenberga-Richtera i zapewnia proste dopasowanie logów przez wiele dziesięcioleci. Analiza ryzyka trzęsienia ziemi w pobliżu reaktora (ten diagram z doskonałej książki Nate Silver „Sygnał i hałas”) pokazuje „załamanie” danych. Zignorowanie załamania prowadzi do oszacowania rocznego ryzyka trzęsienia ziemi o sile 9 jako około 1 na 300 - zdecydowanie coś, na co należy się przygotować. Jednak, przekroczenie linii o podwójnym nachyleniu (jak najwyraźniej zrobiono podczas wstępnej oceny ryzyka dla reaktorów) zmniejsza prognozę ryzyka do około 1 na 13 000 lat. Nie można winić inżynierów za to, że nie zaprojektowali reaktorów tak, aby wytrzymywały tak mało prawdopodobne zdarzenie - ale zdecydowanie należy winić statystyk, którzy przeregulowali (a następnie ekstrapolowali) dane ...
„Agh! Pat odchodzi z firmy. Jak kiedykolwiek znajdziemy zastępcę?”
Oferta pracy:
Poszukiwany: Inżynier elektryk. 42-letnia androgyniczna osoba z dyplomem elektrotechniki, matematyki i hodowli zwierząt. Musi mieć 68 centymetrów wzrostu, brązowe włosy, pieprzyk na lewym oku i podatny na długie wiatry w stosunku do gęsi i niewłaściwe użycie słowa „rada”.
W sensie matematycznym nadmierne dopasowanie często oznacza utworzenie modelu z większą liczbą parametrów niż jest to konieczne, co skutkuje lepszym dopasowaniem do określonego zestawu danych, ale bez przechwytywania odpowiednich szczegółów niezbędnych do dopasowania innych zbiorów danych z danej klasy zainteresowań.
W powyższym przykładzie plakat nie jest w stanie odróżnić istotnych od nieistotnych cech. Wynikowe kwalifikacje prawdopodobnie spełnia tylko jedna osoba, która już wie, że jest odpowiednia do pracy (ale już jej nie chce).
Ten jest wymyślony, ale mam nadzieję, że zilustruje ten przypadek.
Przykład 1
Najpierw zróbmy jakieś losowe dane. Tutaj masz zmiennych, z których każda pochodzi ze standardowego rozkładu normalnego, z przypadków:
set.seed(123)
k <- 100
data <- replicate(k, rnorm(100))
colnames(data) <- make.names(1:k)
data <- as.data.frame(data)
Teraz dopasujmy do niego regresję liniową:
fit <- lm(X1 ~ ., data=data)
A oto podsumowanie pierwszych dziesięciu predyktorów:
> 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
wyniki wyglądają dość dziwnie, ale spójrzmy na to.
To świetnie, dopasowane wartości idealnie pasują do wartości . Błąd wariancji wynosi dosłownie zero. Ale niech nas to nie przekona, sprawdźmy, jaka jest suma bezwzględnych różnic między a dopasowanymi wartościami:
> sum(abs(data$X1-fitted(fit)))
[1] 0
Jest zero, więc fabuły nas nie okłamały: model idealnie pasuje. A jak dokładna jest w klasyfikacji?
> sum(data$X1==fitted(fit))
[1] 100
Otrzymujemy 100 ze 100 dopasowanych wartości, które są identyczne z . Mamy to z całkowicie losowymi liczbami dopasowanymi do innych całkowicie losowych liczb.
Przykład 2
Jeszcze jeden przykład. Uzupełnijmy trochę więcej danych:
data2 <- cbind(1:10, diag(10))
colnames(data2) <- make.names(1:11)
data2 <- as.data.frame(data2)
więc wygląda to tak:
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
i teraz dopasujmy do tego regresję liniową:
fit2 <- lm(X1~., data2)
więc otrzymujemy następujące szacunki:
> 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
jak widać, mamy , tzn. „wyjaśniono wariancję 100%”. Regresja liniowa nie musiała nawet używać 10. predyktora. Z tej regresji widzimy, że można przewidzieć za pomocą funkcji:
więc to:
Jest to dość oczywiste. Możesz myśleć o przykładzie 1 jako podobnym do przykładu 2, ale z dodanym „szumem”. Jeśli masz wystarczająco dużo danych i używasz ich do „przewidywania” czegoś, to czasami jedna „cecha” może cię przekonać, że masz „wzorzec”, który dobrze opisuje zmienną zależną, podczas gdy może to być tylko zbieg okoliczności. W przykładzie 2 tak naprawdę nic się nie przewiduje, ale dokładnie tak samo stało się w przykładzie 1, tylko wartości zmiennych były różne.
Przykłady z życia
Prawdziwym przykładem tego jest przewidywanie ataków terrorystycznych 11 września 2001 r. Poprzez oglądanie „wzorów” w liczbach losowo narysowanych przez komputerowe generatory liczb pseudolosowych przez Global Consciousness Project lub „tajne wiadomości” w „Moby Dick”, które ujawniają fakty o zabójstwach sławnych ludzi (zainspirowany podobnymi ustaleniami w Biblii ).
Wniosek
Jeśli spojrzysz wystarczająco mocno, znajdziesz „wzory” na wszystko. Jednak te wzorce nie pozwolą ci dowiedzieć się niczego o wszechświecie i nie pomogą ci dojść do żadnych ogólnych wniosków. Będą idealnie pasować do twoich danych, ale byłyby bezużyteczne, ponieważ nie będą pasować do niczego innego niż same dane. Nie pozwolą Ci na racjonalne przewidywanie wyników poza próbą, ponieważ zrobiliby to raczej naśladowali niż opisywali dane.
Częstym problemem, który powoduje nadmierne dopasowanie w prawdziwym życiu, jest to, że oprócz terminów dla poprawnie określonego modelu, mogliśmy dodać coś obcego: nieistotne moce (lub inne transformacje) prawidłowych terminów, nieistotne zmienne lub nieistotne interakcje.
Dzieje się tak w przypadku regresji wielokrotnej, jeśli dodasz zmienną, która nie powinna pojawiać się w poprawnie określonym modelu, ale nie chcesz jej upuścić, ponieważ boisz się indukować pominięte odchylenie zmiennej . Oczywiście nie możesz wiedzieć, że niesłusznie go uwzględniłeś, ponieważ nie widzisz całej populacji, tylko próbki, więc nie wiesz na pewno, jaka jest poprawna specyfikacja. (Jak zauważa @Scortchi w komentarzach, może nie istnieć coś takiego jak „poprawna” specyfikacja modelu - w tym sensie celem modelowania jest znalezienie specyfikacji „wystarczająco dobrej”; aby uniknąć nadmiernego dopasowania, należy unikać złożoności modelu więcej niż można uzyskać na podstawie dostępnych danych.) Jeśli chcesz rzeczywistego przykładu nadmiernego dopasowania, dzieje się tak za każdym razemwrzucisz wszystkie potencjalne predyktory do modelu regresji, jeśli którykolwiek z nich faktycznie nie będzie miał związku z odpowiedzią, gdy tylko zostaną uaktywnione skutki innych.
W przypadku tego rodzaju nadmiernego dopasowania dobrą wiadomością jest to, że włączenie tych nieistotnych warunków nie wprowadza stronniczości estymatorów, a w bardzo dużych próbach współczynniki nieistotnych warunków powinny być bliskie zeru. Ale są też złe wieści: ponieważ ograniczone informacje z twojej próbki są teraz wykorzystywane do oszacowania większej liczby parametrów, można to zrobić tylko z mniejszą precyzją - tak więc wzrastają standardowe błędy w rzeczywiście istotnych terminach. Oznacza to również, że prawdopodobnie będą one bardziej oddalone od prawdziwych wartości niż szacunki z poprawnie określonej regresji, co z kolei oznacza, że jeśli otrzyma się nowe wartości zmiennych objaśniających, prognozy z przeregulowanego modelu będą zwykle mniej dokładne niż dla poprawnie określony model.
Oto wykres logarytmu PKB w stosunku do populacji logów dla 50 stanów USA w 2010 roku. Wybrano losową próbkę 10 stanów (podświetloną na czerwono) i dla tej próbki dopasowujemy prosty model liniowy i wielomian stopnia 5. Dla próbki punktów, wielomian ma dodatkowe stopnie swobody, które pozwalają mu „skręcać się” bliżej obserwowanych danych niż prosta. Ale 50 stanów jako całość podlega prawie liniowej zależności, więc predykcyjna wydajność modelu wielomianowego w 40 punktach poza próbą jest bardzo słaba w porównaniu do mniej złożonego modelu, szczególnie przy ekstrapolacji. Wielomian skutecznie dopasowywał część losowej struktury (szumu) próbki, która nie uogólniła się na szerszą populację. Był szczególnie słaby w ekstrapolowaniu poza obserwowany zakres próbki.ta wersja tej odpowiedzi).
Podobne problemy wpływają na regresję względem wielu predyktorów. Przyglądanie się niektórym faktycznym danym jest łatwiejsze dzięki symulacji niż próbkom ze świata rzeczywistego, ponieważ w ten sposób kontrolujesz proces generowania danych (w rzeczywistości widzisz „populację” i prawdziwą relację). W tym R
kodzie prawdziwy model to ale dane są również podawane na temat nieistotnych zmiennych i. Symulację zaprojektowałem tak, aby zmienne predykcyjne były skorelowane, co byłoby częstym zjawiskiem w rzeczywistych danych. Dopasowujemy modele, które są poprawnie określone i wyposażone (w tym nieistotne predyktory i ich interakcje) w jednej części generowanych danych, a następnie porównujemy wydajność predykcyjną w zestawie wstrzymań. Wielokoliniowość predyktorów jeszcze bardziej utrudnia życie modelowi wyposażonemu w zbyt dużo, ponieważ trudniej jest mu rozróżnić efekty , i , ale zauważ, że nie wpływa to na żaden z estymatorów współczynników.
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")
Oto moje wyniki z jednego przebiegu, ale najlepiej uruchomić symulację kilka razy, aby zobaczyć efekt różnych wygenerowanych próbek.
> 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
Te oszacowania współczynników dla modelu przebudowanego są okropne - powinny wynosić około 5 dla przechwytywania, 2 dla i 0 dla reszty. Ale standardowe błędy są również duże. Prawidłowe wartości tych parametrów mieszczą się w każdym przypadku w 95% przedziałach ufności. wynosi 0,8297, co sugeruje, rozsądny dopasowanie.R 2
> 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
Oszacowania współczynników są znacznie lepsze dla poprawnie określonego modelu. Należy jednak zauważyć, że jest niższy i wynosi 0,7961, ponieważ mniej złożony model ma mniejszą elastyczność w dopasowywaniu obserwowanych odpowiedzi. W tym przypadku jest bardziej niebezpieczne niż przydatne !R 2
> with(holdout.df, sum((y - overfitPred)^2)) #SSE
[1] 1271557
> with(holdout.df, sum((y - correctSpecPred)^2))
[1] 1052217
Wyższe w próbce, na której dokonaliśmy regresji, pokazało, w jaki sposób przeregulowany model wytworzył prognozy , które były bliższe obserwowanemu niż poprawnie określony model. Ale to dlatego, że nie pasowało do tych danychY Y(i miał więcej stopni swobody, aby to zrobić, niż zrobił to poprawnie określony model, więc mógł uzyskać „lepsze” dopasowanie). Spójrz na sumę kwadratów błędów dla prognoz dla zestawu wstrzymań, których nie wykorzystaliśmy do oszacowania współczynników regresji, i możemy zobaczyć, o ile gorzej wypadł przeregulowany model. W rzeczywistości właściwie określony model to taki, który daje najlepsze prognozy. Nie powinniśmy opierać naszej oceny wydajności predykcyjnej na wynikach z zestawu danych, które wykorzystaliśmy do oszacowania modeli. Oto wykres błędów z prawidłową specyfikacją modelu, która generuje więcej błędów zbliżonych do 0:
Symulacja wyraźnie reprezentuje wiele istotnych rzeczywistych sytuacji (wyobraź sobie jakąkolwiek rzeczywistą reakcję, która zależy od pojedynczego predyktora i wyobraź sobie włączenie do modelu obcych „predyktorów”), ale ma tę zaletę, że możesz grać z procesem generowania danych , rozmiary próbek, charakter przebudowanego modelu i tak dalej. Jest to najlepszy sposób na zbadanie skutków nadmiernego dopasowania, ponieważ w przypadku zaobserwowanych danych zazwyczaj nie masz dostępu do MZD, a nadal są to „prawdziwe” dane w tym sensie, że możesz je zbadać i wykorzystać. Oto kilka wartościowych pomysłów, z którymi powinieneś eksperymentować:
n <- 1e6
wtedy przeregulowany model ostatecznie oszacuje rozsądne współczynniki (około 5 dla przechwytywania, około 2 dla , około 0 dla wszystkiego innego), a jego wydajność predykcyjna mierzona przez SSE nie tak źle śledzi poprawnie określony model . I odwrotnie, spróbuj dopasować na bardzo małej próbce (pamiętaj, że musisz pozostawić wystarczającą liczbę stopni swobody, aby oszacować wszystkie współczynniki), a zobaczysz, że nadmiernie dopasowany model ma przerażającą wydajność zarówno do szacowania współczynników, jak i przewidywania nowych danych.Sigma
. Pamiętaj tylko, aby zachować dodatnią wartość półokreśloną (co obejmuje symetryczność). Powinieneś przekonać się, że jeśli zmniejszysz wielokoliniowość, model przełożony nie działa tak źle. Pamiętaj jednak, że skorelowane predyktory występują w prawdziwym życiu.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
, pełny model jest wciąż przebudowany, mimo że stanowi lepszą reprezentację populacji podstawowej, a przy powtarzanych symulacjach jego skuteczność predykcyjna w zestawie wstrzymań jest wciąż gorsza. Przy tak ograniczonych danych ważniejsze jest uzyskanie dobrego oszacowania dla współczynnika niż wydawanie informacji na luksus szacowania mniej ważnych współczynników. Ponieważ efekty i są tak trudne do rozpoznania w małej próbce, pełny model skutecznie wykorzystuje elastyczność wynikającą z dodatkowej swobody „dopasowania do hałasu”, co generalnie słabo się uogólnia. Ale znsample <- 1e6
, potrafi dość dobrze oszacować słabsze efekty, a symulacje pokazują, że złożony model ma moc predykcyjną, która przewyższa prostą. To pokazuje, jak „nadmierne dopasowanie” jest kwestią złożoności modelu i dostępnych danych.Kiedy sam próbowałem to zrozumieć, zacząłem myśleć w kategoriach analogii z opisywaniem rzeczywistych obiektów, więc sądzę, że jest to tak „prawdziwy świat”, jak to tylko możliwe, jeśli chcesz zrozumieć ogólną ideę:
Powiedz, że chcesz opisać komuś koncepcję krzesła, aby otrzymali model koncepcyjny, który pozwala przewidzieć, czy znaleziony przez niego nowy obiekt będzie krzesłem. Idziesz do Ikei, dostajesz próbkę krzeseł i zaczynasz opisywać je za pomocą dwóch zmiennych: jest to obiekt z 4 nogami, na którym możesz usiąść. Cóż, to może również opisywać stołek lub łóżko lub wiele innych rzeczy. Twój model jest niedopasowany, tak jakbyś próbował modelować złożoną dystrybucję ze zbyt małą liczbą zmiennych - wiele rzeczy niebędących krzesłami zostanie zidentyfikowanych jako krzesła. Zwiększmy więc liczbę zmiennych, dodajmy na przykład, że obiekt musi mieć back. Teraz masz całkiem akceptowalny model, który opisuje Twój zestaw krzeseł, ale jest na tyle ogólny, że pozwala zidentyfikować nowy przedmiot jako jeden. Twój model opisuje dane i potrafi przewidywać. Załóżmy jednak, że masz zestaw, w którym wszystkie krzesła są czarne lub białe i wykonane z drewna. Postanawiasz uwzględnić te zmienne w swoim modelu i nagle nie zidentyfikuje plastikowego żółtego krzesła jako krzesła. Tak więc, przerobiłeś swój model, uwzględniłeś cechy zestawu danych tak, jakby były one ogólnie cechami krzeseł (jeśli wolisz, zidentyfikowałeś „hałas” jako „sygnał”, interpretując losową zmienność z próbki jako cecha całego „krzesła z prawdziwego świata”). Tak więc albo zwiększasz próbkę i masz nadzieję, że dodasz nowy materiał i kolory, albo zmniejszysz liczbę zmiennych w swoich modelach. t zidentyfikować plastikowe żółte krzesło jako krzesło. Tak więc, przerobiłeś swój model, uwzględniłeś cechy zestawu danych tak, jakby były one ogólnie cechami krzeseł (jeśli wolisz, zidentyfikowałeś „hałas” jako „sygnał”, interpretując losową zmienność z próbki jako cecha całego „krzesła z prawdziwego świata”). Tak więc albo zwiększasz próbkę i masz nadzieję, że dodasz nowy materiał i kolory, albo zmniejszysz liczbę zmiennych w swoich modelach. t zidentyfikować plastikowe żółte krzesło jako krzesło. Tak więc, przerobiłeś swój model, uwzględniłeś cechy zestawu danych tak, jakby były one ogólnie cechami krzeseł (jeśli wolisz, zidentyfikowałeś „hałas” jako „sygnał”, interpretując losową zmienność z próbki jako cecha całego „krzesła z prawdziwego świata”). Tak więc albo zwiększasz próbkę i masz nadzieję, że dodasz nowy materiał i kolory, albo zmniejszysz liczbę zmiennych w swoich modelach.
Może to być uproszczona analogia i załamanie pod dalszą analizą, ale myślę, że to działa jako ogólna konceptualizacja ... Daj mi znać, jeśli jakaś część wymaga wyjaśnienia.
W modelowaniu predykcyjnym chodzi o wykorzystanie dostępnych danych do odkrywania istniejących trendów, które można uogólnić na przyszłe dane. Uwzględniając zmienne w swoim modelu, które mają niewielki, nieistotny wpływ, porzucasz ten pomysł. To, co robisz, polega na rozważeniu określonych trendów w konkretnej próbce, które występują tylko z powodu losowego hałasu zamiast prawdziwego, leżącego u podstaw trendu. Innymi słowy, model ze zbyt wieloma zmiennymi pasuje raczej do szumu niż do wykrycia sygnału.
Oto przesadna ilustracja tego, o czym mówię. Kropki to obserwowane dane, a linia to nasz model. Spójrz na to idealne dopasowanie - co za wspaniały model! Ale czy naprawdę odkryliśmy ten trend, czy po prostu dopasowujemy się do hałasu? Prawdopodobnie to drugie.
Forma nadmiernego dopasowania jest dość powszechna w sporcie, a mianowicie do identyfikowania wzorców wyjaśniających wcześniejsze wyniki za pomocą czynników, które nie mają lub w najlepszym razie niejasne są w stanie przewidzieć przyszłe wyniki. Wspólną cechą tych „wzorów” jest to, że często opierają się one na bardzo niewielu przypadkach, więc czysty przypadek jest prawdopodobnie najbardziej prawdopodobnym wyjaśnieniem wzoru.
Przykłady obejmują takie rzeczy („cytaty” są tworzone przeze mnie, ale często wyglądają podobnie)
Drużyna A wygrała wszystkie mecze X, odkąd trener zaczął nosić swoją magiczną czerwoną kurtkę.
Podobny:
Nie będziemy się golić podczas play-offów, ponieważ pomogło nam to wygrać poprzednie mecze X.
Mniej przesądny, ale także forma nadmiernego dopasowania:
Borussia Dortmund nigdy nie przegrała u siebie z Hiszpanią w Lidze Mistrzów, kiedy przegrała poprzedni mecz wyjazdowy z Bundesligą więcej niż dwoma bramkami, zdobywając przynajmniej raz siebie.
Podobny:
Roger Federer wygrał wszystkie występy w Pucharze Davisa dla europejskich przeciwników, kiedy przynajmniej dotarł do półfinałów tegorocznego Australian Open.
Pierwsze dwa to całkiem oczywiste bzdury (przynajmniej dla mnie). Dwa ostatnie przykłady mogą doskonale sprawdzać się w próbce (tj. W przeszłości), ale z przyjemnością postawiłbym zakład przeciwko przeciwnikowi, który pozwoliłby, aby te „informacje” znacząco wpłynęły na jego szanse na wygraną przez Dortmund z Madrytem 4: 1 w Schalke w poprzednią sobotę lub Federer pokonując Djokovica, nawet jeśli wygrał Australian Open w tym roku.
Oto przykład „prawdziwego świata” nie w tym sensie, że ktoś natknął się na niego w badaniach, ale w tym sensie, że używa codziennych pojęć bez wielu terminów specyficznych dla statystyki. Być może ten sposób powiedzenia będzie bardziej pomocny dla niektórych osób, które szkolą się w innych dziedzinach.
Wyobraź sobie, że masz bazę danych z danymi o pacjentach z rzadką chorobą. Jesteś studentem medycyny i chcesz sprawdzić, czy potrafisz rozpoznać czynniki ryzyka tej choroby. W tym szpitalu odnotowano 8 przypadków choroby i zarejestrowałeś 100 przypadkowych informacji na ich temat: wiek, rasę, kolejność urodzenia, czy mieli odrę jako dziecko, cokolwiek. Zapisałeś również dane dla 8 pacjentów bez tej choroby.
Decydujesz się zastosować następującą heurystykę dla czynników ryzyka: jeśli czynnik przyjmuje daną wartość u więcej niż jednego z twoich chorych pacjentów, ale u 0 twoich kontroli, uznajesz to za czynnik ryzyka. (W rzeczywistości użyłbyś lepszej metody, ale chcę to uprościć). Dowiesz się, że 6 z twoich pacjentów to wegetarianie (ale żadna z kontroli nie jest wegetarianami), 3 ma szwedzkich przodków, a dwóch z nich ma jąkające upośledzenie mowy. Spośród pozostałych 97 czynników nic nie występuje u więcej niż jednego pacjenta, ale nie występuje wśród kontroli.
Wiele lat później ktoś inny interesuje się tą chorobą sierocą i powtarza twoje badania. Ponieważ pracuje w większym szpitalu, który współpracuje z innymi szpitalami w zakresie wymiany danych, może wykorzystać dane o 106 przypadkach, w przeciwieństwie do twoich 8 przypadków. I dowiaduje się, że częstość jąkania jest taka sama w grupie pacjentów i grupie kontrolnej; jąkanie nie jest czynnikiem ryzyka.
Stało się tutaj to, że twoja mała grupa miała 25% jąkających się przypadkowo. Twój heurysta nie miał możliwości dowiedzieć się, czy jest to medycznie istotne, czy nie. Podałeś kryteria, aby zdecydować, kiedy wzorzec w danych będzie wystarczająco „interesujący”, aby można go było uwzględnić w modelu, i według tych kryteriów jąkanie było wystarczająco interesujące.
Twój model został przebudowany, ponieważ omyłkowo zawiera parametr, który nie jest tak naprawdę istotny w prawdziwym świecie. Pasuje do twojej próbki - 8 pacjentów + 8 kontroli - bardzo dobrze, ale nie pasuje do rzeczywistych danych. Kiedy model opisuje twoją próbkę lepiej niż rzeczywistość, nazywa się to nadmiernym dopasowaniem.
Gdybyście wybrali próg 3 z 8 pacjentów mających tę cechę, to by się nie zdarzyło - ale mielibyście większą szansę pominięcia czegoś naprawdę interesującego. Szczególnie w medycynie, gdzie wiele chorób występuje tylko u niewielkiej części osób wykazujących czynnik ryzyka, jest to trudny kompromis. Istnieją metody, aby tego uniknąć (w zasadzie porównaj z drugą próbką i sprawdź, czy moc wyjaśniająca pozostaje taka sama, czy spada), ale jest to temat na inne pytanie.
Oto prawdziwy przykład nadmiernego dopasowania, który pomogłem popełnić, a następnie (bezskutecznie) spróbowałem uniknąć:
Miałem kilka tysięcy niezależnych, dwuwymiarowych szeregów czasowych, każdy z nie więcej niż 50 punktami danych, a projekt modelowania obejmował dopasowanie do każdej z nich autoregresji wektorowej (VAR). Nie podjęto żadnej próby uregulowania wyników obserwacji, oszacowania składników wariancji ani niczego podobnego. Punkty czasowe mierzono w ciągu jednego roku, więc dane podlegały wszelkiego rodzaju efektom sezonowym i cyklicznym, które pojawiały się tylko raz w każdym szeregu czasowym.
Jeden podzbiór danych wykazywał nieprawdopodobnie wysoki stopień przyczynowości Grangera w porównaniu z resztą danych. Kontrole wyrywkowe ujawniły, że dodatnie skoki występowały w tym podzbiorze o jedno lub dwa opóźnienia od siebie, ale z kontekstu jasno wynikało, że oba skoki były powodowane bezpośrednio przez źródło zewnętrzne i że jeden skok nie powodował drugiego. Prognozy poza próbą przy użyciu tych modeli byłyby prawdopodobnie błędne, ponieważ modele były przeregulowane: zamiast „wygładzania” skoków przez uśrednianie ich w pozostałej części danych, mało było obserwacji, że impulsy rzeczywiście napędzają szacunki.
Ogólnie rzecz biorąc, nie sądzę, aby projekt poszedł źle, ale nie wydaje mi się, aby przyniósł wyniki, które byłyby tak przydatne, jak mogłyby być. Jednym z powodów tego jest to, że procedura wielu niezależnych VAR, nawet z jednym lub dwoma opóźnieniami, miała trudności z rozróżnieniem między danymi a szumem, a zatem pasowała do tego drugiego kosztem zapewnienia wglądu w były.
Wielu inteligentnych ludzi w tym wątku --- o wiele bardziej zorientowanych w statystyce niż ja. Ale wciąż nie widzę łatwego do zrozumienia przykładu dla osób świeckich. Przykład prezydencki nie do końca uderzył w rachunek w kategoriach typowego przeuczenia, ponieważ chociaż technicznie jest on niedopasowany w każdym ze swoich dzikich roszczeń, zwykle model nadmiernego dopasowania przebija - WSZYSTKIE - dany hałas, a nie tylko jeden jego element.
Naprawdę podoba mi się wykres w objaśnieniu kompromisu wariancji w Wikipedii: http://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff
(Najniższa tabela jest przykładem nadmiernego dopasowania).
Trudno mi wymyślić przykład z prawdziwego świata, który nie brzmi jak kompletne mumbo-jumbo. Chodzi o to, że dane są częściowo spowodowane mierzalnymi, zrozumiałymi zmiennymi --- częściowo przypadkowym szumem. Próba modelowania tego hałasu jako wzoru daje niedokładność.
Klasycznym przykładem jest modelowanie oparte WYŁĄCZNIE na R ^ 2 w MS Excel (próbujesz dopasować równanie / model dosłownie jak najbliżej danych za pomocą wielomianów, bez względu na to, jak nonsensowne).
Załóżmy, że próbujesz modelować sprzedaż lodów w funkcji temperatury. Masz dane z „prawdziwego świata”. Rysujesz dane i próbujesz zmaksymalizować R ^ 2. Znajdziesz dane rzeczywiste, najbliższe równanie dopasowania nie jest liniowe ani kwadratowe (co miałoby logiczny sens). Jak prawie wszystkie równania, bardziej nonsensowne terminy wielomianowe dodajesz (x ^ 6 -2x ^ 5 + 3x ^ 4 + 30x ^ 3-43.2x ^ 2-29x) - im bardziej pasuje do danych. Jak to rozsądnie wiąże temperaturę ze sprzedażą lodów? Jak wytłumaczysz ten absurdalny wielomian? Prawda jest taka, że to nie jest prawdziwy model. Przekroczyłeś dane.
Bierzesz pod uwagę hałas - który mógł być spowodowany promocjami sprzedaży lub inną zmienną lub „hałasem” jak motyl trzepoczący skrzydłami w kosmosie (coś, co nigdy nie jest przewidywalne) - i próbowałeś modelować to na podstawie temperatury. Zazwyczaj teraz, jeśli twój szum / błąd nie osiąga wartości średniej lub jest automatycznie skorelowany itp., Oznacza to, że jest tam więcej zmiennych --- i wtedy w końcu dochodzi do generalnie losowo rozłożonego hałasu, ale nadal jest to najlepsze, co mogę wyjaśnić.
Moim ulubionym jest „formuła 3964” odkryta przed zawodami piłkarskimi Pucharu Świata w 1998 roku:
Brazylia wygrała mistrzostwa w 1970 i 1994 roku. Zsumuj te 2 liczby, a dostaniesz 3964; Niemcy wygrały w 1974 i 1990 roku, ponownie sumując się do 3964; to samo dotyczy wygranej Argentyny w 1978 i 1986 roku (1978 + 1986 = 3964).
Jest to bardzo zaskakujący fakt, ale wszyscy widzą, że nie jest wskazane opieranie jakichkolwiek przyszłych prognoz na tej zasadzie. I rzeczywiście, reguła ta mówi, że zwycięzcą Pucharu Świata w 1998 roku powinna była być Anglia od 1966 + 1998 = 3964, a Anglia wygrała w 1966. To się nie zdarzyło, a zwycięzcą została Francja.
Trochę intuicyjne, ale może to pomoże. Powiedzmy, że chcesz nauczyć się nowego języka. Jak się uczysz? zamiast uczyć się zasad na kursie, korzystasz z przykładów. W szczególności programy telewizyjne. Więc lubisz programy kryminalne i oglądasz kilka seriali z policjantów. Następnie bierzesz kolejny serial kryminalny i oglądasz serial z tego serialu. Po trzecim programie, który widzisz - wiesz prawie wszystko, nie ma problemu. Nie potrzebujesz angielskich napisów.
Ale podczas następnej wizyty wypróbujesz swój nowo nauczony język na ulicy i zdasz sobie sprawę, że nie możesz rozmawiać o niczym innym niż powiedzieć „oficerze! Ten mężczyzna wziął moją torbę i zastrzelił tę kobietę!”. Podczas gdy „błąd szkolenia” wynosił zero, „błąd testu” jest wysoki z powodu „przeuczenia” języka, studiowania tylko ograniczonego zestawu słów i zakładania, że jest wystarczający.