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?
źródło
Odpowiedzi:
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
Oto przykład tego, o czym mówię.
źródło
step
) niż w drugim eksperymencie („ślepe” dopasowanie wartości). Czy to nie jest sprzeczne z tym, co sugerujesz, że powinno się zdarzyć?poly
(chyba nie)?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ć!
źródło
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
źródło
Ten obraz pochodzi z mojej notatki z kursu DL Andrew Ng, proszę daj mi znać, jeśli masz pytanie
źródło