Ich stelle mir vor, je größer ein Koeffizient für eine Variable ist, desto größer ist die Fähigkeit des Modells, in dieser Dimension zu "schwingen", was eine größere Möglichkeit bietet, Rauschen anzupassen. Obwohl ich denke, dass ich ein vernünftiges Gespür für die Beziehung zwischen der Varianz im Modell und großen Koeffizienten habe, weiß ich nicht so genau , warum sie in Überanpassungsmodellen auftreten. Ist es falsch zu sagen, dass sie ein Symptom für eine Überanpassung sind und der Koeffizientenschrumpf eher eine Technik zur Verringerung der Varianz im Modell ist? Die Regularisierung über die Koeffizientenschrumpfung scheint nach dem Prinzip zu funktionieren, dass große Koeffizienten das Ergebnis eines überpassenden Modells sind, aber vielleicht interpretiere ich die Motivation hinter der Technik falsch.
Meine Intuition, dass große Koeffizienten im Allgemeinen ein Symptom für eine Überanpassung sind, ergibt sich aus dem folgenden Beispiel:
Nehmen wir an, wir wollten Punkte einpassen, die alle auf der x-Achse liegen. Wir können leicht ein Polynom konstruieren, dessen Lösungen diese Punkte sind: . Angenommen, unsere Punkte liegen bei . Diese Technik ergibt alle Koeffizienten> = 10 (mit Ausnahme eines Koeffizienten). Wenn wir mehr Punkte hinzufügen (und dadurch den Grad des Polynoms erhöhen), nimmt die Größe dieser Koeffizienten schnell zu.f ( x ) = ( x - x 1 ) ( x - x 2 ) . . . . ( x - x n - 1 ) ( x - x n ) x = 1 , 2 , 3 , 4
In diesem Beispiel verbinde ich derzeit die Größe der Modellkoeffizienten mit der "Komplexität" der generierten Modelle. Ich bin jedoch besorgt, dass dieser Fall zu steril ist, um wirklich ein Hinweis auf das Verhalten in der realen Welt zu sein. Ich habe absichtlich ein überpasstes Modell erstellt (eine polynomiale OLS-Anpassung 10. Grades an Daten, die aus einem quadratischen Stichprobenmodell generiert wurden) und war überrascht, in meinem Modell hauptsächlich kleine Koeffizienten zu sehen:
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
Vielleicht lässt sich aus diesem Beispiel ableiten, dass zwei Drittel der Koeffizienten kleiner als 1 sind und im Verhältnis zu den anderen Koeffizienten drei Koeffizienten ungewöhnlich groß sind (und die mit diesen Koeffizienten verbundenen Variablen zufällig auch die engsten sind) bezogen auf das wahre Stichprobenmodell).
Ist (L2) Regularisierung nur ein Mechanismus, um die Varianz in einem Modell zu verringern und dadurch die Kurve "zu glätten", um sie besser an zukünftige Daten anzupassen, oder nutzt er eine Heuristik, die aus der Beobachtung abgeleitet wurde, dass überfunktionalisierte Modelle tendenziell große Koeffizienten aufweisen? Ist es eine genaue Aussage, dass überausgerüstete Modelle tendenziell große Koeffizienten aufweisen? Wenn ja, kann jemand vielleicht ein wenig den Mechanismus hinter dem Phänomen erklären und / oder mich auf Literatur verweisen?