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 , 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?