Słownik metodologiczny · Modele regresji

Przeuczenie (overfitting) – gdy model pamięta szum zamiast prawidłowości

Przeuczony model świetnie pasuje do próby, na której go zbudowano, i zawodzi w nowej. Pokazujemy, skąd się bierze, symulację w R i sposoby zapobiegania.

Strona główna / Słownik / Przeuczenie
W skrócie: Przeuczenie oznacza, że model dopasował się do przypadkowego szumu próby. Objaw: wysokie R² w próbie uczącej i słabe przewidywania w nowej. Zapobiegaj mu, ograniczając liczbę predyktorów, unikając automatycznego doboru zmiennych i sprawdzając model walidacją krzyżową.

Co to jest przeuczenie?

Przeuczenie (ang. overfitting) to sytuacja, w której model dopasowuje się nie tylko do prawidłowości w danych, ale też do przypadkowego szumu konkretnej próby. W próbie, na której go zbudowano, wygląda świetnie, a w nowej przewiduje słabo. Babyak (2004) opisuje je jako typowy problem modeli regresyjnych: przy danej liczbie obserwacji złożoność modelu ma górną granicę, a jej przekroczenie daje wyniki, które się nie replikują.

Skąd się bierze

  • Za dużo predyktorów albo parametrów w stosunku do liczby osób (w modelach logistycznych: do liczby zdarzeń).
  • Automatyczny dobór zmiennych, np. metoda krokowa, i wybieranie predyktorów po wstępnych testach.
  • Wiele prób różnych modeli na tych samych danych i raportowanie najlepszego.

Babyak (2004) wymienia też dychotomizację zmiennych ciągłych jako źródło wyników pozornych.

Przykład

Symulowano 500 badań po 40 osób: wynik zależał od jednego predyktora, a 15 kolejnych było czystym szumem; prawdziwe R² w populacji wynosiło .200. Model z jednym predyktorem dawał średnio R² = .217 w próbie uczącej i .161 w nowej próbie. Model z 16 predyktorami dawał .523 w próbie uczącej i −.410 w nowej, czyli przewidywał gorzej niż sama średnia. Przy 400 osobach ten sam model miał .230 i .164, więc większa próba wyraźnie ograniczyła problem.

Jak opisać w pracy

Ze względu na ryzyko przeuczenia ograniczono liczbę predyktorów do zmiennych wskazanych w hipotezach, a trafność predykcyjną modelu oceniono 10-krotną walidacją krzyżową, nie tylko na podstawie R² w próbie uczącej.

Na co uważać

  • R² skorygowane nie mierzy przewidywania. W przykładzie wyniosło średnio .191, blisko populacyjnego .200, a mimo to model w nowej próbie zawodził. Yin i Fan (2001) odróżniają oszacowanie R² w populacji od trafności krzyżowej, którą szacuje się innymi wzorami.
  • Same współczynniki bywają w porządku. Austin i Steyerberg (2015) pokazali, że do oszacowania współczynników regresji liniowej wystarczą około dwie obserwacje na zmienną, ale obciążenie R² wymaga znacznie większej próby.
  • Zapobiegaj, zamiast liczyć na szczęście: mniej predyktorów wybranych z teorii, walidacja krzyżowa i metody z karą, takie jak ridge i LASSO.

Przeuczony model ma zwykle zbyt skrajne przewidywania, co widać w ocenie kalibracji. Więcej o budowie modeli predykcyjnych piszemy we wpisie walidacja krzyżowa, przeuczenie i kalibracja.

Przykład reprodukowalny

Przeuczenie w R

Symulacja porównuje R² w próbie uczącej i w nowej próbie dla modelu z 1 i z 16 predyktorami.

R² w próbie uczącej a w nowej próbie

Dane wejściowe: 500 symulowanych prób po 40 osób i nowe próby po 1000 osób z tej samej populacji.

Co odczytać: średnie R² w próbie uczącej (ucz), w nowej próbie (nowa) i skorygowane R² modelu z 16 predyktorami.

R
symuluj <- function(n) {
  X <- as.data.frame(matrix(rnorm(n * 16), n, 16)); names(X) <- paste0("x", 1:16)
  X$y <- 0.5 * X$x1 + rnorm(n); X
}
r2_nowa <- function(fit, nowa) 1 - sum((nowa$y - predict(fit, nowa))^2) / sum((nowa$y - mean(nowa$y))^2)
set.seed(190)
wyn <- replicate(500, {
  ucz <- symuluj(40); nowa <- symuluj(1000)
  m1 <- lm(y ~ x1, ucz); m16 <- lm(y ~ ., ucz)
  c(ucz_1 = summary(m1)$r.squared,  nowa_1 = r2_nowa(m1, nowa),
    ucz_16 = summary(m16)$r.squared, nowa_16 = r2_nowa(m16, nowa),
    adj_16 = summary(m16)$adj.r.squared)
})
round(rowMeans(wyn), 3)
Wynik w R
  ucz_1  nowa_1  ucz_16 nowa_16  adj_16
  0.217   0.161   0.523  -0.410   0.191 

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/

Najczęstsze pytania

Jak rozpoznać, że model regresji jest przeuczony?

Porównaj dopasowanie w próbie uczącej z wynikiem walidacji krzyżowej lub nowej próby. Duży spadek R², nachylenie kalibracji wyraźnie poniżej 1 i niestabilne współczynniki to typowe sygnały.

Ile predyktorów można wstawić do regresji przy małej próbie?

Nie ma jednej reguły. Liczba zależy od wielkości efektów i celu analizy. Do predykcji wyznacz minimalną liczebność formalnie, zamiast polegać na regułach typu 10 osób na zmienną.

Czy przeuczenie dotyczy też badań, które nie służą predykcji?

Tak. Model dopasowany do szumu daje zawyżone R² i efekty, które się nie replikują, nawet gdy celem jest tylko opis związków.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Austin, P. C., & Steyerberg, E. W. (2015). The number of subjects per variable required in linear regression analyses. Journal of Clinical Epidemiology, 68(6), 627–636. https://doi.org/10.1016/j.jclinepi.2014.12.014 ● Otwarty dostęp
  2. Babyak, M. A. (2004). What you see may not be what you get: A brief, nontechnical introduction to overfitting in regression-type models. Psychosomatic Medicine, 66(3), 411–421. https://doi.org/10.1097/01.psy.0000127692.23278.a9 ● Otwarty dostęp
  3. Yin, P., & Fan, X. (2001). Estimating R² shrinkage in multiple regression: A comparison of different analytical methods. The Journal of Experimental Education, 69(2), 203–224. https://doi.org/10.1080/00220970109600656

Cytowania BibTeX

@article{austin2015number, author={Austin, Peter C. and Steyerberg, Ewout W.}, title={{The number of subjects per variable required in linear regression analyses}}, journal={Journal of Clinical Epidemiology}, year={2015}, volume={68}, number={6}, pages={627--636}, doi={10.1016/j.jclinepi.2014.12.014}}
@article{babyak2004what, author={Babyak, Michael A.}, title={{What you see may not be what you get: A brief, nontechnical introduction to overfitting in regression-type models}}, journal={Psychosomatic Medicine}, year={2004}, volume={66}, number={3}, pages={411--421}, doi={10.1097/01.psy.0000127692.23278.a9}}
@article{yin2001estimating, author={Yin, Ping and Fan, Xitao}, title={{Estimating R² shrinkage in multiple regression: A comparison of different analytical methods}}, journal={The Journal of Experimental Education}, year={2001}, volume={69}, number={2}, pages={203--224}, doi={10.1080/00220970109600656}}
R