(Warum) neigen überausgerüstete Modelle dazu, große Koeffizienten zu haben?


33

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 , 4nf(x)=(x-x1)(x-x2)....(x-xn-1)(x-xn)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?


4
Was genau meinst du mit einem "großen" Koeffizienten? Wenn wir nur die Einheiten ändern, in denen wir die abhängige Variable ausdrücken (z. B. von Parsec zu Femtometer), können wir die Koeffizienten schließlich beliebig groß oder klein machen.
Whuber

1
Ich habe keine gute Antwort darauf. Mein Verständnis war, dass das Angreifen von "großen" Koeffizienten eine motivierende Heuristik hinter der L2-Regularisierung war. Um die Größe der Koeffizienten synthetisch zu erhöhen, müsste jedoch auch die Regularisierungskonstante geändert werden, um die unterschiedliche Größe im Modell zu kompensieren, nicht wahr? Ich denke nicht, dass der Begriff "groß" hier so vieldeutig ist, wie Sie es scheinen lassen, auch wenn ich ihn nicht sehr gut charakterisieren kann.
David Marx

@DavidMarx: Ich glaube nicht, dass die L2-Regularisierung nach "großen" Koeffizienten geht, oder? Vielmehr tendiert es dazu, Koeffizienten, die wahrscheinlich nicht vergleichsweise groß waren, auf Null zu bringen, und zwingt Sie in gewissem Sinne dazu, einen Kompromiss zwischen beiden zu suchen, anstatt einen zu finden.
Wayne

@wayne ah, ich glaube ich hatte es verkehrt herum. Ich hatte gedacht, dass es die größeren Koeffizienten schrumpft oder alle Koeffizienten proportional schrumpft. Das wäre sinnvoller, wenn die L2-Regularisierung die Variablen mit kleineren Koeffizienten aus dem Modell verdrängen würde.
David Marx

1
Nach 8 Änderungen glaube ich, dass ich meine Antwort unten habe. Meine Güte.
Hong Ooi

Antworten:


15

Im Regularisierungskontext bedeutet ein "großer" Koeffizient, dass die Größe der Schätzung größer ist als es gewesen wäre, wenn eine feste Modellspezifikation verwendet worden wäre. Es ist die Auswirkung, nicht nur die Schätzungen, sondern auch die Modellspezifikation aus den Daten zu erhalten.

Überlegen Sie, wie eine schrittweise Regression für eine bestimmte Variable funktioniert. Wenn die Schätzung seines Koeffizienten im Verhältnis zum Standardfehler klein ist, wird er aus dem Modell entfernt. Dies kann daran liegen, dass der wahre Wert wirklich klein ist, oder einfach an einem zufälligen Fehler (oder einer Kombination aus beiden). Wenn es fallen gelassen wird, achten wir nicht mehr darauf. Wenn andererseits die Schätzung relativ zu ihrem Standardfehler groß ist, wird sie beibehalten. Beachten Sie das Ungleichgewicht: Unser endgültiges Modell weist eine Variable zurück, wenn die Koeffizientenschätzung klein ist, wir behalten sie jedoch bei, wenn die Schätzung groß ist. Daher werden wir wahrscheinlich seinen Wert überschätzen.

Anders ausgedrückt bedeutet Überanpassung, dass Sie die Auswirkung eines bestimmten Satzes von Prädiktoren auf die Reaktion überbewerten. Die einzige Möglichkeit, die Auswirkungen zu überschätzen, besteht darin, dass die geschätzten Koeffizienten zu groß sind (und umgekehrt sind die Schätzungen für Ihre ausgeschlossenen Prädiktoren zu klein).

Sie sollten in Ihr Experiment ein variables Auswahlverfahren einbeziehen, z step. B. eine schrittweise Regression über . Wiederholen Sie dann Ihren Versuch mehrmals mit verschiedenen Zufallsstichproben und speichern Sie die Schätzungen. Sie sollten feststellen, dass alle Schätzungen der Koeffizienten bis systematisch zu groß sind, als dass die Variablenauswahl nicht verwendet wird. Regularisierungsverfahren zielen darauf ab, dieses Problem zu beheben oder zu mindern.β 10β3β10

Hier ist ein Beispiel dafür, wovon ich spreche.

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 

Vergleichen Sie dies mit dem, was passiert, wenn Sie keine Variablenauswahl verwenden und einfach alles blind anpassen. Während die Schätzungen von bis immer noch fehlerhaft sind , ist die durchschnittliche Abweichung viel geringer.β 10β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 

Sowohl die L1- als auch die L2-Regularisierung gehen implizit davon aus, dass alle Variablen und damit die Koeffizienten in den gleichen Maßeinheiten vorliegen, dh eine Änderung der Einheit in entspricht einer Änderung der Einheit in . Daher ist es der übliche Schritt, Ihre Variablen zu standardisieren, bevor Sie eine dieser Techniken anwenden.β 2β1β2


Ihr modifiziertes Beispiel verwirrt mich ein wenig. Sie sagen: "Sie sollten feststellen, dass alle Schätzungen der Koeffizienten β3 bis β10 im Vergleich zur Nichtverwendung der Variablenauswahl systematisch zu groß sind", aber es scheint, dass Sie in Ihrem ersten Experiment (mit step) größere Werte erhalten haben als in Ihrem zweiten Experiment ("blind" passende Werte). Ist das nicht im Widerspruch zu dem, was Sie vorgeschlagen haben?
David Marx

Außerdem haben Sie und andere hier vorgeschlagen, die Variablen in meinem Beispiel zu standardisieren. Ich sehe die Argumentation, aber ich kenne keinen guten Weg, das zu tun. Sollte ich meine Beispieldaten um Spalten für jede Potenz von X erweitern und diese Werte standardisieren? Oder gibt es eine Möglichkeit, die Variablen direkt in meiner Modellformel zu standardisieren, wo ich sie aufrufe poly(ich vermute nicht)?
David Marx

? Bei schrittweiser Verwendung treten größere absolute Abweichungen auf als bei nicht schrittweiser Verwendung. Nicht sicher, was Sie fragen. Was die Standardisierung betrifft, ist es unnötig, wenn Sie dies tun, wie ich es geschrieben habe, dh einen Vergleich zwischen dem schrittweisen und dem nicht-schrittweisen Ansatz durchführen. Jede Variable wird von einer Behandlung zur anderen verglichen und nicht mit den anderen Variablen.
Hong Ooi

6

Eine sehr einfache Antwort, ohne auf Ihre Details zu achten: Bei Überanpassung neigen die Parameterschätzer dazu, große Abweichungen zu erhalten, und bei großen Abweichungen sind große Werte genau das, was Sie erwarten sollten!


Wenn ich Sie richtig verstehe, erklärt dies, warum das Modell "große" Werte vorhersagt und nicht, warum das Modell aus "großen" Koeffizienten besteht.
David Marx

Nein, das ist falsch! Zumindest einige der einzelnen Koeffizientenschätzer weisen große Abweichungen auf, so dass die geschätzten Werte dieser Koeffizienten dazu neigen, groß zu sein. (Selbst bei Überanpassung können einige Koeffizienten stabil sein, aber nicht alle). Um die Unparteilichkeitseigenschaft der Vorhersage beizubehalten, werden zwischen unabhängigen Koeffizientenschätzern tendenziell einige große negative Kovarianzen bestehen.
kjetil b halvorsen

1
Dies beantwortet die Frage jedoch nicht vollständig. Wenn es sich nur um große Abweichungen handelte, würden Sie (informell gesehen) genauso oft kleine Schätzungen erhalten wie große. Das Problem ist, wenn wir dann annehmen, dass kleine Schätzungen (im Verhältnis zu ihren Standardfehlern) "unwichtig" sind und diese Variablen aus dem Modell streichen. Infolgedessen bleiben nur die großen Schätzungen übrig.
Hong Ooi

0

David. Ich denke, das Problem mit Ihrem Beispiel ist, dass Sie Ihre Daten nicht normalisiert haben (dh X ^ 10 >> X.

David hat also Recht, dass er größere Koeffizienten stärker verkleinert (so dass Sie am Ende viele kleine Koeffizienten haben, während die L1-Regularisierung möglicherweise einen großen und den Rest null ergibt).

Im Grunde genommen ist es eine Kapselung, dass kleine Änderungen kleine Auswirkungen haben sollten (und wir kommen natürlich auf die Frage zurück, wie klein klein ist - Normalisierung Ihrer Daten usw.). Der Schlüssel liegt jedoch in höheren Dimensionen, in denen die Korrelation ins Spiel kommt: Stellen Sie sich vor, Sie haben zwei Variablen x, y, die stark korreliert sind (beide normalisiert auf Varianz 1), dann ist ihre Differenz klein = "Rauschen" - was große Gewichte benachteiligt Verhindern Sie, dass Sie sich an dieses Rauschen anpassen (und sehr große, fast auslöschende Koeffizienten für y und x erhalten).

Das Beispiel gilt weiterhin für jede lineare Beziehung (y = mx)

Ridge Regression nachschlagen


1
David, warum nicht wiederholen Sie das Beispiel, indem Sie alle Variablen x, x ^ 2, ..., x ^ n auf den Mittelwert Null und die Standardabweichung 1 normieren und dann die Ergebnisse sehen, die Sie erhalten ... es ist nicht sehr überraschend, dass Sie Koeffizienten sind klein, wenn Ihre Eingabevariablen groß sind
Seanv507

0

Überanpassung Demo

Dieses Bild stammt aus meiner Notiz von Andrew Ngs DL-Kurs. Bitte lassen Sie mich wissen, wenn Sie Fragen haben


1
Können Sie erklären, warum dieser Hinweis zur Neuronalen Netzwerk-Regularisierung Ihrer Meinung nach die Frage nach Koeffizientengrößen und Überanpassung beantwortet?
Whuber

Alle 3 sind miteinander verbunden Überanpassung ist genau das, was Regularisierung zu verhindern versucht, und es versucht, hohen Koeffizienten aus dem oben genannten Grund zu bestrafen
Pradi KL
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.