(Dlaczego) czy modele przebudowane mają zwykle duże współczynniki?


33

Wyobrażam sobie, że im większy współczynnik dla zmiennej, tym większa zdolność modelu do „kołysania się” w tym wymiarze, co zapewnia większą możliwość dopasowania hałasu. Chociaż myślę, że mam rozsądne wyczucie związku między wariancją w modelu a dużymi współczynnikami, nie mam tak dobrego zrozumienia, dlaczego występują one w modelach z dopasowaniem. Czy błędem jest twierdzenie, że są one objawem nadmiernego dopasowania, a kurczenie się współczynnika jest raczej techniką zmniejszania wariancji w modelu? Wydaje się, że regularyzacja poprzez kurczenie się współczynników opiera się na zasadzie, że duże współczynniki są wynikiem zbyt mocnego modelu, ale być może źle interpretuję motywację stojącą za tą techniką.

Moja intuicja, że ​​duże współczynniki są zazwyczaj objawem nadmiernego dopasowania, pochodzi z następującego przykładu:

Powiedzmy, że chcieliśmy dopasować punktów, które wszystkie znajdują się na osi X. Możemy łatwo zbudować wielomian, którego rozwiązaniem są następujące punkty: f ( x ) = ( x - x 1 ) ( x - x 2 ) . . . . ( x - x n - 1 ) ( x - x n ) . Powiedzmy, że nasze punkty wynoszą x = 1 , 2 , 3 , 4nfa(x)=(x-x1)(x-x2))....(x-xn-1)(x-xn)x=1,2),3),4. Ta technika daje wszystkie współczynniki> = 10 (z wyjątkiem jednego współczynnika). W miarę dodawania kolejnych punktów (a tym samym zwiększania stopnia wielomianu) wielkość tych współczynników szybko wzrośnie.

Ten przykład pokazuje, jak obecnie łączę wielkość współczynników modelu z „złożonością” generowanych modeli, ale martwię się, że ten przypadek jest sterylny, aby naprawdę wskazywać na zachowanie w świecie rzeczywistym. Celowo zbudowałem nadmiarowy model (wielomian OLS 10. stopnia dopasowany do danych wygenerowanych z kwadratowego modelu próbkowania) i byłem zaskoczony, widząc w moim modelu głównie małe współczynniki:

set.seed(123)
xv = seq(-5,15,length.out=1e4)
x=sample(xv,20)
gen=function(v){v^2 + 7*rnorm(length(v))}
y=gen(x)
df = data.frame(x,y)

model = lm(y~poly(x,10,raw=T), data=df)
summary(abs(model$coefficients))
#     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
# 0.000001 0.003666 0.172400 1.469000 1.776000 5.957000


data.frame(sort(abs(model$coefficients)))
#                                   model.coefficients
# poly(x, 10, raw = T)10                  7.118668e-07
# poly(x, 10, raw = T)9                   3.816941e-05
# poly(x, 10, raw = T)8                   7.675023e-04
# poly(x, 10, raw = T)7                   6.565424e-03
# poly(x, 10, raw = T)6                   1.070573e-02
# poly(x, 10, raw = T)5                   1.723969e-01
# poly(x, 10, raw = T)3                   6.341401e-01
# poly(x, 10, raw = T)4                   8.007111e-01
# poly(x, 10, raw = T)1                   2.751109e+00
# poly(x, 10, raw = T)2                   5.830923e+00
# (Intercept)                             5.956870e+00

Być może odejście od tego przykładu jest takie, że dwie trzecie współczynników jest mniejsze niż 1, a w odniesieniu do innych współczynników istnieją trzy niezwykle duże współczynniki (a zmienne związane z tymi współczynnikami również są tymi, które są najbliżej związane z prawdziwym modelem próbkowania).

Czy regularyzacja (L2) jest tylko mechanizmem zmniejszającym wariancję w modelu, a tym samym „wygładzającym” krzywą, aby lepiej dopasować przyszłe dane, czy też wykorzystuje heurystykę wywodzącą się z obserwacji, że przefunkcjonowane modele wykazują duże współczynniki? Czy jest to dokładne stwierdzenie, że przeładowane modele mają tendencję do wykazywania dużych współczynników? Jeśli tak, to czy ktoś może wyjaśnić mechanizm tego zjawiska i / lub skierować mnie do literatury?


4
Co dokładnie rozumiesz przez „duży” współczynnik? W końcu, jeśli tylko zmienimy jednostki, w których wyrażamy zmienną zależną (na przykład z parsów na femtometry), możemy sprawić, że współczynniki będą dowolnie duże lub małe.
whuber

1
Nie mam na to dobrej odpowiedzi. Zrozumiałem, że atakowanie „dużych” współczynników było motywującą heurystą stojącą za regularyzacją L2. Ale syntetyczne zwiększenie wielkości współczynników wymagałoby także zmiany stałej regularyzacji, aby skompensować teraz inną wielkość w modelu, prawda? Nie wydaje mi się, żeby pojęcie „duży” było tak dwuznaczne, jak się wydaje, nawet jeśli nie potrafię go dobrze scharakteryzować.
David Marx

@DavidMarx: Nie sądzę, że regularyzacja L2 idzie po „dużych” współczynnikach, prawda? Ma raczej tendencję do przesuwania współczynników, które prawdopodobnie nie były stosunkowo duże do zera, w pewnym sensie zmuszając cię do wyboru, a nie do znalezienia kompromisu między tymi dwoma.
Wayne

@wayne ah, myślę, że miałem to wstecz. Myślałem, że to zmniejszyło większe współczynniki lub proporcjonalnie zmniejszyło wszystkie współczynniki. Byłoby to bardziej sensowne, gdyby regularyzacja L2 wypchnęła zmienne o mniejszych współczynnikach z modelu.
David Marx

1
Po 8 edycjach myślę, że mam już swoją odpowiedź. Do licha.
Hong Ooi,

Odpowiedzi:


15

W kontekście regularyzacji „duży” współczynnik oznacza, że ​​wielkość oszacowania jest większa niż byłaby, gdyby zastosowano ustaloną specyfikację modelu . Jest to wpływ uzyskiwania nie tylko szacunków, ale także specyfikacji modelu z danych.

Zastanów się, co zrobi procedura taka jak regresja krokowa dla danej zmiennej. Jeśli oszacowanie jego współczynnika jest małe w stosunku do błędu standardowego, zostanie usunięte z modelu. Może to być spowodowane faktem, że prawdziwa wartość jest naprawdę niewielka lub po prostu z powodu błędu losowego (lub kombinacji tych dwóch). Jeśli zostanie upuszczony, nie zwracamy już na niego uwagi. Z drugiej strony, jeśli oszacowanie jest duże w stosunku do błędu standardowego, zostanie zachowane. Zwróć uwagę na brak równowagi: nasz ostateczny model odrzuci zmienną, gdy oszacowanie współczynnika jest małe, ale zachowamy ją, gdy oszacowanie będzie duże. Dlatego prawdopodobnie przecenimy jego wartość.

Innymi słowy, nadmierne dopasowanie oznacza, że ​​przeceniasz wpływ danego zestawu predyktorów na odpowiedź. Ale jedynym sposobem na zawyżenie wpływu jest to, że szacowane współczynniki są zbyt duże (i odwrotnie, szacunki dla wykluczonych predyktorów są zbyt małe).

stepβ3)β10

Oto przykład tego, o czym mówię.

repeat.exp <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(step(lm(y ~ x1, data=d), y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10, trace=0))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z <- repeat.exp(M=1000)

# some time later...
rowMeans(abs(z), na.rm=TRUE)

(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    3.162100    6.533642    3.108974    3.204341    3.131208    3.118276    3.217231    3.293691    3.149520    3.073062 

β3)β10

repeat.exp.base <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(lm(y ~ ., data=d))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z2 <- repeat.exp.base(M=1000)

rowMeans(abs(z2))
(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    1.676066    6.400629    1.589061    1.648441    1.584861    1.611819    1.607720    1.656267    1.583362    1.556168 

β1β2)


Jestem trochę zdezorientowany twoim zmodyfikowanym przykładem. Mówisz, że „powinieneś stwierdzić, że wszystkie szacunki współczynników β3 do β10 są systematycznie zbyt duże, w porównaniu z niestosowaniem selekcji zmiennych”, ale wygląda na to, że masz wyższe wartości w pierwszym eksperymencie (z step) niż w drugim eksperymencie („ślepe” dopasowanie wartości). Czy to nie jest sprzeczne z tym, co sugerujesz, że powinno się zdarzyć?
David Marx

Również ty i inni tutaj zasugerowaliście, żebym ujednolicił zmienne w moim przykładzie. Rozumiem uzasadnienie, ale nie znam dobrego sposobu na zrobienie tego. Czy powinienem ulepszyć moje przykładowe dane, aby zawierały kolumny dla każdej potęgi X i znormalizować te wartości? Czy jest sposób na standaryzację zmiennych bezpośrednio w formule modelu, do której dzwonię poly(chyba nie)?
David Marx

? Otrzymujesz większe bezwzględne odchylenia przy zastosowaniu krokowym, w porównaniu do niestosowania krokowego. Nie jestem pewien, o co pytasz. Jeśli chodzi o standaryzację: nie jest konieczne, jeśli robisz to tak, jak napisałem, tj. Porównując podejście stopniowe i bezstopniowe. Każda zmienna jest porównywana z jednego leczenia do drugiego, a nie z innymi zmiennymi.
Hong Ooi,

6

Jedna bardzo prosta odpowiedź bez zagłębiania się w szczegóły: w przypadku nadmiernego dopasowania estymatory parametrów mają tendencję do uzyskiwania dużych odchyleń, a przy dużych odchyleniach duże wartości są dokładnie tym, czego można się spodziewać!


Jeśli dobrze cię rozumiem, to wyjaśnia, dlaczego model przewiduje „duże” wartości, a nie dlaczego model składa się z „dużych” współczynników.
David Marx,

Nie, to źle! Przynajmniej niektóre indywidualne estymatory współczynników będą miały duże wariancje, więc oszacowane wartości tych współczynników będą zwykle duże. (oczywiście, nawet w przypadku nadmiernego dopasowania, niektóre współczynniki mogą być stabilne, ale nie wszystkie). Ponadto, aby zachować właściwość przewidywania bezstronności, będą występować pewne duże ujemne kowariancje między niezależnymi estymatorami współczynników.
kjetil b halvorsen

1
To jednak nie w pełni odpowiada na pytanie. Gdyby to był tylko problem dużych odchyleń, wtedy otrzymywałbyś małe oszacowania równie często jak duże (nieformalnie). Problem polega na tym, że zakładamy, że małe oszacowania (w stosunku do błędów standardowych) są „nieistotne” i usuwamy te zmienne z modelu. W rezultacie jedynymi pozostałymi szacunkami będą te duże.
Hong Ooi

0

David. Myślę, że problem z twoim przykładem polega na tym, że nie znormalizowałeś swoich danych (tj. X ^ 10 >> X.

Więc David ma rację, że bardziej zmniejsza większe współczynniki (więc możesz uzyskać wiele małych współczynników, podczas gdy regularyzacja L1 może dać ci jeden duży, a reszta zero)

więc w zasadzie jest kapsułkowanie, że małe zmiany powinny mieć małe skutki (i oczywiście wracamy do kwestii tego, jak małe jest małe - normalizacja danych itp.). Ale kluczową sprawą są wyższe wymiary, w których ma miejsce korelacja: wyobraź sobie, że masz dwie zmienne x, y, które są wysoce skorelowane (obie znormalizowane do wariancji 1), wtedy ich różnica będzie niewielka = „szum” - w związku z tym karanie dużych wag spowoduje zapobiegają dopasowaniu się do tego szumu (i uzyskaniu bardzo dużych, prawie eliminujących współczynników dla y i x).

Przykład nadal obowiązuje dla dowolnej relacji liniowej (y = mx)

sprawdź regresję grzbietu


1
David, dlaczego nie powtórzysz przykładu normalizującego wszystkie zmienne x, x ^ 2, ..., x ^ n do średniej zero i odchylenia standardowego 1, a następnie zobaczysz wyniki, które uzyskasz ... nie jest bardzo zaskakujące, że twoje współczynniki są małe, gdy zmienne wejściowe są duże
seanv507

0

przeładowanie demo

Ten obraz pochodzi z mojej notatki z kursu DL Andrew Ng, proszę daj mi znać, jeśli masz pytanie


1
Czy mógłbyś wyjaśnić, dlaczego według ciebie ta uwaga na temat regularyzacji sieci neuronowej odpowiada na pytanie o rozmiary współczynników i nadmierne dopasowanie?
whuber

wszystkie 3 są powiązane nadmiernym dopasowaniem jest właśnie tym, co próbuje zapobiec regularyzacji i próbuje ukarać wysoki współczynnik z powyższego powodu
Pradi KL
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.