Wenn die Multikollinearität hoch ist, würden die LASSO-Koeffizienten auf 0 schrumpfen?

9

Gegeben , was ist das theoretische Verhalten von LASSO - Koeffizienten und warum?x2=2x1

Würde einer von oder auf oder beide schrumpfen ?x1x20

require(glmnet)
x1 = runif(100, 1, 2)
x2 = 2*x1
x_train = cbind(x1, x2)
y = 100*x1 + 100 + runif(1)
ridge.mod = cv.glmnet(x_train, y, alpha = 1)
coef(ridge.mod)

#3 x 1 sparse Matrix of class "dgCMatrix"
#                       1
#(Intercept) 1.057426e+02
#x1          9.680073e+01
#x2          3.122502e-15
John Hass
quelle
2
Ich bin mir nicht sicher, ob dies eine gute Simulation ist, da beide Koeffizienten tatsächlich Null sind. Es ist etwas interessanter, das Verhalten der Koeffizientenschätzungen zu betrachten, wenn eine echte Beziehung besteht.
Dsaxton
1
Simulation verbessert. Ich biete die Simulation an, weil ich erklären möchte, was meine Frage ist. Ich habe mich nur für theoretische Ergebnisse dieser Frage interessiert.
John Hass
1
Ich denke, das Verhalten wird unvorhersehbar sein, da das Modell nicht identifizierbar ist. Das heißt, wie kann das Modellanpassungsverfahren möglicherweise beispielsweise wissen, dass und statt und ? Es kann nicht, weil entweder "richtig" ist. β 2 = 0 β 1 = 0 β 2 = 50β1=100β2=0β1=0β2=50
Dsaxton
Ich stimme Ihrer Argumentation zu. Gibt es eine mathematische Möglichkeit, dies zu beschreiben?
John Hass
1
Ich denke, Sie meinten y = 100*x1 + 100 + runif(100), sonst erhalten Sie eine einzelne Zufallszahl, die recycelt und einheitlich zu allen anderen Einträgen hinzugefügt wird.
Firebug

Antworten:

8

Beachten Sie, dass

yXβ22+λβ1=yβ1x1β2x222+λ(|β1|+|β2|)=y(β1+2β2)x122+λ(|β1|+|β2|).

Für jeden festen Wert des Koeffizienten gilt die Strafewird minimiert, wenn . Dies liegt daran , die Strafe auf wird zweimal so gewichtet! Um dies in Notation zu setzen,erfüllt für alle . Daher der Lasso-Schätzer | β 1 | +β1+2β2β 1 = 0 β 1 ˜ β = arg min β|β1|+|β2|β1=0β1~ Β 1=0K β

β~=argminβ:β1+2β2=K|β1|+|β2|
β~1=0Kβ 1=0(0,50)(100,0)l1
β^=argminβRpyXβ22+λβ1=argminβRpy(β1+2β2)x122+λ(|β1|+|β2|)=argβminKRminβRp:β1+2β2=KyKx122+λ(|β1|+|β2|)=argβminKR{yKx122+λminβRp:β1+2β2=K{(|β1|+|β2|)}}
erfüllt . Der Grund, warum die Kommentare zu OPs Frage irreführend sind, liegt darin, dass das Modell eine Strafe erhält: dieβ^1=0(0,50)und Koeffizienten ergeben den gleichen Fehler, aber unterschiedliche Norm! Außerdem ist es nicht notwendig, so etwas wie LARs zu betrachten: Dieses Ergebnis folgt unmittelbar aus den ersten Prinzipien.(100,0)1

Wie von Firebug hervorgehoben, ist der Grund, warum Ihre Simulation ein widersprüchliches Ergebnis zeigt, dass glmnetdie Features automatisch auf die Einheitsvarianz skaliert werden. Das heißt, aufgrund der Verwendung von glmnetsind wir effektiv für den Fall, dass . Dort ist der Schätzer nicht mehr eindeutig: und sind beide im min. In der Tat ist für jedes in so dass . ( 100 , 0 ) ( 0 , 100 ) ( a , b ) arg min a , b 0 a + b = 100x1=x2(100,0)(0,100)(a,b)argmina,b0a+b=100

In diesem Fall mit gleichen Merkmalen glmnetwird in genau einer Iteration konvergiert: Der erste Koeffizient wird mit einem weichen Schwellenwert versehen, und der zweite Koeffizient wird mit einem weichen Schwellenwert auf Null gesetzt.

Dies erklärt, warum die Simulation insbesondere gefunden . In der Tat ist der zweite Koeffizient unabhängig von der Reihenfolge der Merkmale immer Null.β^2=0

Beweis: Nehmen Sie WLOG an, dass das Feature erfüllt . Der Koordinatenabstieg (der von ) verwendete Algorithmus berechnet für die erste Iteration: gefolgt von wobei . Dann, dax 2 = 1 β ( 1 ) 1 = S λ ( x T y ) βxRnx2=1glmnet

β^1(1)=Sλ(xTy)
T={ - λ  wenn 
β^2(1)=Sλ[xT(yxSλ(xTy))]=Sλ[xTyxTx(xTy+T)]=Sλ[T]=0,
T={λ if xTy>λλ if xTy<λ0 otherwiseβ^2(1)=0Die zweite Iteration des Koordinatenabfalls wiederholt die obigen Berechnungen. Induktiv sehen wir, dass für alle Iterationen und . Daher wird und da das Stoppkriterium sofort erreicht wird.β^j(i)=β^j(i)ij{1,2}glmnetββ^1=β^1(1)β^2=β^2(1)
user795305
quelle
2
glmnetIch bin mir ziemlich sicher, dass die Funktionsskalierung standardmäßig aktiviert ist. So und das gleiche im Modell geworden. x 2x1x2
Firebug
2
Versuchen Sie stattdessen ridge.mod=cv.glmnet(x_train,y,alpha=1, standardize = FALSE); coef(ridge.mod)
Folgendes
2
Das hat es geschafft! Tolles Denken, @Firebug! Nun wird der Koeffizient von tatsächlich als Null geschätzt. Vielen Dank für Ihre Erkenntnisse! x1
user795305
3

Wenn ich Ihren Code erneut ausführe, stelle ich fest, dass der Koeffizient von numerisch nicht von Null zu unterscheiden ist.x2

Um besser zu verstehen, warum LASSO diesen Koeffizienten auf Null setzt, sollten Sie sich die Beziehung zwischen LASSO und LAR (Least Angle Regression) ansehen. LASSO kann als LAR mit einer speziellen Modifikation angesehen werden.

Der Algorithmus von LAR sieht ungefähr so ​​aus: Beginnen Sie mit einem leeren Modell (mit Ausnahme eines Abschnitts). Fügen Sie dann die Prädiktorvariable hinzu, die am meisten mit korreliert , z . B. . Ändern Sie den Koeffizienten dieses Prädiktors , bis der Rest gleichermaßen mit und einer anderen Prädiktorvariablen korreliert ist . Ändern Sie dann die Koeffizienten von und bis ein dritter Prädiktor gleichermaßen mit dem Rest usw. .x j β j y - c - x j β j x j x k x j x k x l y - c - x j βyxjβjycxjβjxjxkxjxkxlycxjβjxkβk

LASSO kann als LAR mit der folgenden Wendung angesehen werden: Sobald der Koeffizient eines Prädiktors in Ihrem Modell (ein "aktiver" Prädiktor) Null erreicht, lassen Sie diesen Prädiktor aus dem Modell fallen. Dies passiert, wenn Sie auf die kollinearen Prädiktoren zurückführen: Beide werden gleichzeitig zum Modell hinzugefügt, und wenn sich ihre Koeffizienten ändern, ändert sich ihre jeweilige Korrelation mit den Residuen proportional, aber einer der Prädiktoren wird gelöscht von der aktiven Menge zuerst, weil sie zuerst Null trifft. Welcher der beiden kollinearen Prädiktoren es sein wird, weiß ich nicht. [EDIT: Wenn Sie die Reihenfolge von und umkehren , können Sie sehen, dass der Koeffizient vonx 1 x 2 x 1yx1x2x1wird auf Null gesetzt. Der glmnet-Algorithmus scheint also einfach zuerst die Koeffizienten auf Null zu setzen, die später in der Entwurfsmatrix geordnet werden.]

Eine Quelle, die diese Dinge ausführlicher erklärt, ist Kapitel 3 in "Die Elemente des statistischen Lernens" von Friedman, Hastie und Tibshirani.

Matthias Schmidtblaicher
quelle