Ist die Gratregression in hohen Dimensionen nutzlos (


50

Betrachten Sie ein gutes altes Regressionsproblem mit Prädiktoren und Stichprobengröße . Die übliche Weisheit ist, dass der OLS-Schätzer zu hoch ist und im Allgemeinen von dem Kamm-Regressions-Schätzer übertroffen wird:Es ist Standard, eine Kreuzvalidierung zu verwenden, um einen optimalen Regularisierungsparameter . Hier verwende ich einen 10-fachen Lebenslauf. Klarstellungsaktualisierung: Wenn , verstehe ich unter "OLS-Schätzer" den "Minimum-Norm-OLS-Schätzer", der durchn β = ( X X + λ I ) - 1 X y . λ n < p β OLS = ( X X ) + X y = X + Y .pn

β^=(XX+λI)1Xy.
λn<p
β^OLS=(XX)+Xy=X+y.

Ich habe einen Datensatz mit und . Alle Prädiktoren sind standardisiert, und es gibt einige, die (allein) gute Arbeit bei der Vorhersage von leisten können . Wenn ich zufällig eine kleine Zahl auswähle, z. B. , erhalte ich eine vernünftige CV-Kurve: große Werte von ergeben ein R-Quadrat von Null, kleine Werte von ergeben ein negatives R-Quadrat (weil der Überanpassung) und dazwischen liegt ein Maximum. Für sieht die Kurve ähnlich aus. Für viel größer ist, z. B. , erreiche ich jedoch überhaupt kein Maximum: die Kurvenplateaus, was bedeutet, dass OLS mitp > 1000 y p = 50 < n λ λ p = 100 > n p p = 1000 λ 0 λn=80p>1000yp=50<nλλp=100>npp=1000λ0 so gut wie eine Kammregression mit optimalem .λ

Bildbeschreibung hier eingeben

Wie ist es möglich und was sagt es über meinen Datensatz aus? Fehlt mir etwas Offensichtliches oder ist es tatsächlich kontraintuitiv? Wie kann es einen qualitativen Unterschied zwischen und geben, wenn beide größer als ?p = 1000 np=100p=1000n

Unter welchen Bedingungen passt die Minimal-Norm-OLS-Lösung für nicht ?n<p


Update: Die Kommentare waren etwas ungläubig, daher hier ein reproduzierbares Beispiel mit glmnet. Ich benutze Python, aber R-Benutzer können den Code leicht anpassen.

%matplotlib notebook

import numpy as np
import pylab as plt
import seaborn as sns; sns.set()

import glmnet_python    # from https://web.stanford.edu/~hastie/glmnet_python/
from cvglmnet import cvglmnet; from cvglmnetPlot import cvglmnetPlot

# 80x1112 data table; first column is y, rest is X. All variables are standardized
mydata = np.loadtxt('../q328630.txt')   # file is here https://pastebin.com/raw/p1cCCYBR
y = mydata[:,:1]
X = mydata[:,1:]

# select p here (try 1000 and 100)
p = 1000

# randomly selecting p variables out of 1111
np.random.seed(42)
X = X[:, np.random.permutation(X.shape[1])[:p]]

fit = cvglmnet(x = X.copy(), y = y.copy(), alpha = 0, standardize = False, intr = False, 
               lambdau=np.array([.0001, .001, .01, .1, 1, 10, 100, 1000, 10000, 100000]))
cvglmnetPlot(fit)
plt.gcf().set_size_inches(6,3)
plt.tight_layout()

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben


2
@ DJohnson Kein Scherz. Üblicher 10-facher Lebenslauf, dh jeder Trainingssatz hat n = 72 und jeder Testsatz hat n = 8.
Amöbe sagt Reinstate Monica

2
Das ist alles andere als ein gewöhnlicher Lebenslauf. In Anbetracht dessen, wie kann man so etwas wie ein nachweisbares Ergebnis erwarten?
Mike Hunter

3
@ DJohnson Ich verstehe nicht, warum du sagst, das ist alles andere als gewöhnlich. Das ist der 10-fache Lebenslauf.
Amöbe sagt Reinstate Monica

2
@ Seanv507 Ich verstehe. Nun, ich schlage vor, "Lösung mit Lambda = 0" als "Minimal-Norm-Lösung mit Lambda = 0" zu definieren. Ich vermute, meine Frage kann wie folgt umformuliert werden: Unter welchen Bedingungen wird eine Minimal-Norm-OLS-Lösung mit n <p overfit vs. nicht overfit?
Amöbe sagt Reinstate Monica

3
@amoeba: Danke für diese Frage. Bisher war es äußerst lehrreich und interessant.
usεr11852 sagt Reinstate Monic

Antworten:


23

Eine natürliche Regularisierung erfolgt aufgrund des Vorhandenseins vieler kleiner Komponenten in der theoretischen PCA von . Diese kleinen Komponenten werden implizit verwendet, um das Rauschen unter Verwendung kleiner Koeffizienten anzupassen. Bei Verwendung von OLS mit minimaler Norm passen Sie das Rauschen mit vielen kleinen unabhängigen Komponenten an, und dies hat einen Regularisierungseffekt, der der Ridge-Regularisierung entspricht. Diese Regularisierung ist oft zu stark und kann durch "Anti-Regularisierung", die als negativer Kamm bezeichnet wird, kompensiert werden . In diesem Fall wird das Minimum der MSE-Kurve für negative Werte von angezeigt .λxλ

Mit theoretischer PCA meine ich:

Sei eine multivariate Normalverteilung. Es gibt eine lineare Isometrie wie wobei diagonal ist: Die Komponenten von sind unabhängig. wird einfach durch Diagonalisieren von .f u = f ( x ) ~ N ( 0 , D ) D u D ΣxN(0,Σ)fu=f(x)N(0,D)DuDΣ

Nun kann das Modell geschrieben werden (eine lineare Isometrie erhält das Skalarprodukt). Wenn Sie schreiben , kann das Modell . Außerdemdaher sind Anpassungsmethoden wie Ridge oder Minimum-Norm-OLS vollkommen isomorph: Der Schätzer von ist das Bild von des Schätzers von .y=β.x+ϵy=f(β).f(x)+ϵγ=f(β)y=γ.u+ϵβ=γy=γ.u+ϵfy=β.x+ϵ

Theoretische PCA transformiert nicht unabhängige Prädiktoren in unabhängige Prädiktoren. Es ist nur lose verwandt mit der empirischen PCA, bei der Sie die empirische Kovarianzmatrix verwenden (die sich stark von der theoretischen Matrix mit geringer Stichprobengröße unterscheidet). Die theoretische PCA ist praktisch nicht berechenbar, sondern wird hier nur zur Interpretation des Modells in einem orthogonalen Prädiktorraum verwendet.

Mal sehen, was passiert, wenn wir viele unabhängige Prädiktoren mit kleiner Varianz an ein Modell anhängen:

Satz

Die Ridge-Regularisierung mit dem Koeffizienten ist äquivalent (wenn ) zu:λp

  • Hinzufügen von gefälschten unabhängigen Prädiktoren (zentriert und identisch verteilt) mit jeweils einer Varianzpλp
  • Anpassen des angereicherten Modells mit dem Minimum-Norm-OLS-Schätzer
  • Behalten Sie nur die Parameter für die wahren Prädiktoren bei

(Skizze von) Beweis

Wir werden beweisen, dass die Kostenfunktionen asymptotisch gleich sind. wir das Modell in echte und gefälschte Prädiktoren auf: . Die Kostenfunktion von Ridge (für die wahren Prädiktoren) kann geschrieben werden:y=βx+βx+ϵ

costλ=β2+1λyXβ2

Bei Verwendung der Mindestnorm OLS ist die Antwort perfekt angepasst: Der Fehlerterm ist 0. Die Kostenfunktion handelt nur von der Norm der Parameter. Es kann in die wahren und die falschen Parameter unterteilt werden:

costλ,p=β2+inf{β2Xβ=yXβ}

Im richtigen Ausdruck ist die minimale Normlösung gegeben durch:

β=X+(yXβ)

Jetzt mit SVD für :X

X=UΣV

X+=VΣ+U

Wir sehen, dass die Norm von Wesentlichen von den Singularwerten von abhängt , die die Kehrwerte der Singularwerte von . Die normalisierte Version von ist . Ich habe mir die Literatur angesehen, und singuläre Werte großer Zufallsmatrizen sind bekannt. Für und groß genug sind, werden die minimalen und maximalen Singularwerte angenähert durch (siehe Satz 1.1 ):βX+XXp/λXpnsminsmax

smin(p/λX)p(1n/p)
smax(p/λX)p(1+n/p)

Da für große , gegen 0 tendiert, können wir nur sagen , dass alle Einzelwerte durch angenähert werden . Somit:pn/pp

β1λyXβ

Endlich:

costλ,pβ2+1λyXβ2=costλ

Hinweis : Es spielt keine Rolle, ob Sie die Koeffizienten der gefälschten Prädiktoren in Ihrem Modell beibehalten. Die durch eingeführte Varianz ist . So erhöhen Sie Ihre MSE nur um einen Faktor , der ohnehin gegen 1 tendiert. Irgendwie müssen Sie die gefälschten Prädiktoren nicht anders behandeln als die echten.βxλpβ21pyXβ2npMSE(β)1+n/p

Nun zurück zu @ amoebas Daten. Nach Anwendung der theoretischen PCA auf (angenommen als normal) wird durch eine lineare Isometrie in eine Variable transformiert, deren Komponenten unabhängig und in abnehmender Varianzreihenfolge sortiert sind. Das Problem ist gleichbedeutend mit dem transformierten Problem .xxuy=βx+ϵy=γu+ϵ

Stellen Sie sich nun vor, die Varianz der Komponenten sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

Betrachten Sie viele der letzten Komponenten und nennen Sie die Summe ihrer Varianz . Sie haben jeweils eine Varianz, die ungefähr gleich und sind unabhängig. Sie spielen die Rolle der gefälschten Prädiktoren im Theorem.pλλ/p

Diese Tatsache wird in @ jonnys Modell klarer: Nur die erste Komponente der theoretischen PCA ist mit korreliert (sie ist proportional ) und weist eine enorme Varianz auf. Alle anderen Komponenten (proportional zu ) haben eine vergleichsweise sehr kleine Varianz (schreiben Sie die Kovarianzmatrix und diagonalisieren Sie sie, um dies zu sehen) und spielen die Rolle gefälschter Prädiktoren. Ich habe berechnet, dass die Regularisierung hier (ungefähr) dem vorherigen auf während das wahre . Das schrumpft definitiv. Dies ist daran zu erkennen, dass die endgültige MSE viel größer ist als die ideale MSE. Der Regularisierungseffekt ist zu stark.yx¯xix¯N(0,1p2)γ1γ12=1p

Es ist manchmal möglich, diese natürliche Regularisierung durch Ridge zu verbessern. Zuerst braucht man manchmal im Theorem, das wirklich groß ist (1000, 10000 ...), um es ernsthaft mit Ridge aufzunehmen, und die Endlichkeit von ist wie eine Ungenauigkeit. Es zeigt sich aber auch, dass Ridge eine zusätzliche Regularisierung gegenüber einer natürlich vorhandenen impliziten Regularisierung ist und somit nur einen sehr geringen Effekt haben kann. Manchmal ist diese natürliche Regularisierung bereits zu stark und Ridge ist möglicherweise nicht einmal eine Verbesserung. Darüber hinaus ist es besser, Anti-Regularisierung zu verwenden: Ridge mit negativem Koeffizienten. Dies zeigt MSE für @ jonnys Modell ( ) unter Verwendung von :ppp=1000λR

Bildbeschreibung hier eingeben


2
+1 Sehr schön, danke, dass du das geschrieben hast. Ich denke, es ist wichtig zu klären, dass wenn Sie "Regularisierung" sagen, Sie (dh Kamm) Regularisierung bedeuten . Man würde hoffen , dass lasso oder elastisches Netz besser verhalten kann und in der Tat , das ist , was die Menschen in verwenden Situationen. Niemand verwendet in einer solchen Umgebung reine Grate, und es wird standardmäßig empfohlen, Regularisierungen zu verwenden, die Sparsamkeit erzwingen. Das Verhalten des reinen Bergrückens könnte also nur ein akademisches Interesse haben. Trotzdem ist es ziemlich erstaunlich, dass wir es hier zu entdecken scheinen. Warum ist das nicht bekannt? L2np
Amöbe sagt Reinstate Monica

1
Schlecht hartcodiertes proportional zu . Tut mir leid, dass ich keine Zeit für etwas Richtiges hatte. Mein Hauptaugenmerk lag auf dem Verhalten von min-norm OLS, um zu sehen, dass es sich von Ihrem Beispiel unterscheidet und dass "einige nicht allzu schlechte Regularisierungen" bei 40 Firsts gewaltsam besser waren. λσ2
Benoit Sanchez

3
Ich glaube, ich habe das Rätsel verstanden: Die Ridge-Regularisierung mit dem Koeffizienten entspricht der Min-Norm-OLS, bei der gefälschte Prädiktoren mit der Varianz hinzugefügt werden (asymptotisch für großes ). In Ihren Daten und in Johnys Modell geschieht dies dank der Komponenten mit der geringsten Varianz von PCA, ohne dass etwas unternommen wird. Jetzt brauche ich Zeit, um einen Weg zu finden, dies klar zu erklären ...λpλ/pp
Benoit Sanchez

1
Ich habe einen kleinen Punkt klargestellt: Die Koeffizienten der gefälschten Prädiktoren erhöhen den Fehler nicht sehr (siehe Anmerkung am Ende des Beweises). Dies ist wichtig, da Ihre Daten / Jonnys unweigerlich erhalten bleiben.
Benoit Sanchez

3
Ich habe es mit negativem Ridge versucht. Ich kann es nicht glauben, aber es funktioniert !!! (Und nicht nur auf Jonnys Modell ...)
Benoit Sanchez

16

Vielen Dank an alle für die tolle Diskussion. Der springende Punkt scheint zu sein, dass OLS mit Mindeststandards effektiv eine Schrumpfung ausführt, die der Gratregression ähnelt. Dies scheint immer dann der zu sein, wenn . Ironischerweise kann das Hinzufügen von reinen Rauschvorhersagen sogar als sehr seltsame Form oder Regularisierung verwendet werden.pn


Teil I. Demonstration mit künstlichen Daten und analytischem Lebenslauf

@Jonny (+1) hat sich ein wirklich einfaches künstliches Beispiel ausgedacht, das ich hier etwas anpassen werde. mit Größe und wird so erzeugt, dass alle Variablen mit Einheitsvarianz Gauß'sch sind und die Korrelation zwischen jedem Prädiktor und der Antwort . Ich werde beheben .Xn×pyρρ=.2

Ich werde einen aussagekräftigen Lebenslauf verwenden, da es einen analytischen Ausdruck für den quadratischen Fehler gibt: Es ist als PRESS , "Predicted Sum of Squares" bekannt. wobei die Residuen und ist Hutmatrix in Bezug auf SVD . Dies ermöglicht es, @ Jonnys Ergebnisse zu replizieren, ohne eine Kreuzvalidierung durchzuführen (ich zeichne das Verhältnis von PRESS zu der Summe der Quadrate von ):

PRESS=i(ei1Hii)2,
ei
e=yy^=yHy,
H
H=X(XX+λI)1X=US2S2+λU
X=USVglmnety

Bildbeschreibung hier eingeben

Dieser analytische Ansatz erlaubt es, den Grenzwert bei zu berechnen . Das einfache Einfügen von in die PRESS-Formel funktioniert nicht: Wenn und sind die Residuen alle Null und die Hutmatrix ist die Identitätsmatrix mit Einsen auf der Diagonale, dh die Brüche in PRESS Gleichung sind undefiniert. Aber wenn wir das Limit bei berechnen , dann entspricht es der Minimum-Norm-OLS-Lösung mit .λ0λ=0n<pλ=0λ0λ=0

Der Trick besteht darin, eine Taylor - Erweiterung der Hutmatrix durchzuführen, wenn : Hier habe ich die Gram-Matrix .λ0

H=U11+λ/S2UU(1λ/S2)U=IλUS2U=IλG1.
G=XX=US2U

Wir sind fast fertig:Lambda wurde gestrichen, also haben wir hier den Grenzwert. Ich habe es mit einem großen schwarzen Punkt in der Abbildung oben (auf den Feldern mit ) eingezeichnet und es passt perfekt.

PRESS=i(λ[G1y]iλGii1)2=i([G1y]iGii1)2.
p>n

Update 21. Februar. Die obige Formel ist genau, aber wir können einige Einsichten gewinnen, indem wir weitere Annäherungen vornehmen. Es sieht so aus, als ob in der Diagonale ungefähr gleiche Werte hat, auch wenn sehr ungleiche Werte hat (wahrscheinlich, weil alle Eigenwerte ziemlich gut verwechselt). Also haben wir für jedes das folgende wobei eckige Klammern die Mittelung bezeichnen. Mit dieser Annäherung können wir Folgendes umschreiben:Diese Annäherung ist in der Abbildung oben mit roten, offenen Kreisen dargestellt.G1SUiGii1S2

PRESSS2S2Uy2.

Ob dies größer oder kleiner als hängt von den Singularwerten . In dieser Simulation wird mit dem ersten PC von korreliert, sodass groß und alle anderen Terme klein sind. (In meinen Realdaten wird auch von den führenden PCs gut vorhergesagt.) Wenn nun im Fall die Spalten von ausreichend zufällig sind, sind alle Singularwerte ziemlich nahe beieinander (Zeilen ungefähr) senkrecht). Der "Haupt"y2=Uy2SyXU1yypnXU1ywird mit einem Faktor kleiner als 1 multipliziert. Die Terme gegen Ende werden mit Faktoren größer als 1 multipliziert, aber nicht viel größer. Insgesamt sinkt die Norm. Im Gegensatz dazu gibt es im Fall von einige sehr kleine singuläre Werte. Nach der Inversion werden sie zu großen Faktoren, die die Gesamtnorm erhöhen.pn

[Dieses Argument ist sehr gewellt; Ich hoffe, es kann präzisiert werden.]

Wenn ich zur Überprüfung der Gesundheit die Reihenfolge der singulären Werte bis S = diag(flipud(diag(S)));dahin vertausche, liegt die vorhergesagte MSE auf dem 2. und 3. Panel überall über .1

figure('Position', [100 100 1000 300])
ps = [10, 100, 1000];

for pnum = 1:length(ps)
    rng(42)
    n = 80;
    p = ps(pnum);
    rho = .2;
    y = randn(n,1);
    X = repmat(y, [1 p])*rho + randn(n,p)*sqrt(1-rho^2);

    lambdas = exp(-10:.1:20);
    press = zeros(size(lambdas));
    [U,S,V] = svd(X, 'econ');
    % S = diag(flipud(diag(S)));   % sanity check

    for i = 1:length(lambdas)
        H = U * diag(diag(S).^2./(diag(S).^2 + lambdas(i))) * U';
        e = y - H*y;
        press(i) = sum((e ./ (1-diag(H))).^2);
    end

    subplot(1, length(ps), pnum)
    plot(log(lambdas), press/sum(y.^2))
    hold on
    title(['p = ' num2str(p)])
    plot(xlim, [1 1], 'k--')

    if p > n
        Ginv = U * diag(diag(S).^-2) * U';
        press0 = sum((Ginv*y ./ diag(Ginv)).^2);
        plot(log(lambdas(1)), press0/sum(y.^2), 'ko', 'MarkerFaceColor', [0,0,0]);

        press0approx = sum((diag(diag(S).^-2/mean(diag(S).^-2)) * U' * y).^2);
        plot(log(lambdas(1)), press0approx/sum(y.^2), 'ro');
    end
end

Teil II. Hinzufügen von reinen Rauschvorhersagen als eine Form der Regularisierung

Gute Argumente wurden von @Jonny, @Benoit, @Paul, @Dikran und anderen vorgebracht, dass eine Erhöhung der Anzahl von Prädiktoren die OLS-Lösung mit Mindeststandards verkleinert. Tatsächlich kann jeder neue Prädiktor , sobald , nur die Norm der Minimum-Norm-Lösung verringern. Das Hinzufügen von Prädiktoren drückt also die Norm nach unten, ähnlich wie die Kammregression die Norm benachteiligt.p>n

Kann dies als Regularisierungsstrategie verwendet werden? Wir beginnen mit und und fügen dann als Regularisierungsversuch reine Rauschprädiktoren hinzu . Ich mache LOOCV und vergleiche es mit LOOCV für den Kamm (berechnet wie oben). Beachten Sie, dass ich nach dem Erhalt von für die Prädiktoren diese bei "abschneide", da ich nur an den ursprünglichen Prädiktoren interessiert bin.n=80p=40qβ^p+qp

Bildbeschreibung hier eingeben

ES KLAPPT!!!

Tatsächlich muss man die Beta nicht "abschneiden"; Selbst wenn ich die vollständige Beta und die vollständigen Prädiktoren verwende, kann ich eine gute Leistung erzielen (gestrichelte Linie auf der rechten Nebenhandlung). Ich denke, dies ahmt meine tatsächlichen Daten in der Frage nach: Nur wenige Prädiktoren sagen wirklich voraus , die meisten von ihnen sind reines Rauschen und sie dienen als Regularisierung. In diesem Regime hilft eine zusätzliche Gratregulierung überhaupt nicht.p+qy

rng(42)
n = 80;
p = 40;
rho = .2;
y = randn(n,1);
X = repmat(y, [1 p])*rho + randn(n,p)*sqrt(1-rho^2);

lambdas = exp(-10:.1:20);
press = zeros(size(lambdas));
[U,S,V] = svd(X, 'econ');

for i = 1:length(lambdas)
    H = U * diag(diag(S).^2./(diag(S).^2 + lambdas(i))) * U';
    e = y - H*y;
    press(i) = sum((e ./ (1-diag(H))).^2);
end

figure('Position', [100 100 1000 300])
subplot(121)
plot(log(lambdas), press/sum(y.^2))
hold on
xlabel('Ridge penalty (log)')
plot(xlim, [1 1], 'k--')
title('Ridge regression (n=80, p=40)')
ylim([0 2])

ps = [0 20 40 60 80 100 200 300 400 500 1000];
error = zeros(n, length(ps));
error_trunc = zeros(n, length(ps));
for fold = 1:n
    indtrain = setdiff(1:n, fold);
    for pi = 1:length(ps)
        XX = [X randn(n,ps(pi))];
        if size(XX,2) < size(XX,1)
            beta = XX(indtrain,:) \ y(indtrain,:);
        else
            beta = pinv(XX(indtrain,:)) * y(indtrain,:);
        end
        error(fold, pi) = y(fold) - XX(fold,:) * beta;
        error_trunc(fold, pi) = y(fold) - XX(fold,1:size(X,2)) * beta(1:size(X,2));
    end
end

subplot(122)
hold on
plot(ps, sum(error.^2)/sum(y.^2), 'k.--')
plot(ps, sum(error_trunc.^2)/sum(y.^2), '.-')
legend({'Entire beta', 'Truncated beta'}, 'AutoUpdate','off')
legend boxoff
xlabel('Number of extra predictors')
title('Extra pure noise predictors')
plot(xlim, [1 1], 'k--')
ylim([0 2])

@MartijnWeterings In diesem Experiment beginne ich mit n = 80 und p = 40. Wenn sich die Gesamtzahl der Prädiktoren (p + q) n = 80 nähert, wird das Problem schlecht konditioniert und die OLS-Lösung passt drastisch über. Es gibt eine enorme Spitze im Fehler um q = 40. Sobald p + q> n ist, setzt die "Minimum-Norm" -Einschränkung ein und der Fehler beginnt abzunehmen, aber es dauert einige Zeit, bis er wieder auf den Wert mit q = 0 zurückkehrt. Es passiert um q = 70, dh p + q = 130. Danach nimmt der Fehler noch weiter ab und dieser Teil des Diagramms ähnelt dem Grat-Regressionsdiagramm. Macht das Sinn?
Amöbe sagt Reinstate Monica

@MartijnWeterings Zum 1. Kommentar: Wir sind auf der gleichen Seite. Zum 2. Kommentar: In meiner Frage schneide ich Beta nicht ab, das stimmt. Aber wenn ich Beta in meiner Simulation nicht abschneide (benutze y(fold) - XX(fold,:) * betastatt XX(fold,1:size(X,2)) * beta(1:size(X,2))), ändern sich die Ergebnisse nicht allzu sehr. Ich denke, ich sollte dies zu meiner Antwort hinzufügen. Ich denke, meine ursprünglichen Daten zeigen diese Art von Verhalten.
Amöbe sagt Reinstate Monica

(1/2): Ich arbeite mich immer noch durch alle Kommentare und den Code, um zu verstehen, aber mir fällt ein Gedanke ein: Gibt es eine Beziehung zwischen diesem Phänomen, das wir beobachten, und der Beziehung zwischen Gratregression und zufälligen Effekten?
Ryan Simmons

(2/2): Per Randels Antwort hier ( stats.stackexchange.com/questions/122062/… ) sehen wir ein Schätzäquivalent zwischen Zufallseffekten und Gratregression , wobei Lambda gleich dem Verhältnis der Residuen zur Varianz von ist der zufällige Effekt. Hier sehen wir gemäß der Antwort von Benoit Sanchez, dass die Kammregression gleichbedeutend ist mit der Addition einer willkürlichen Anzahl gefälschter unabhängiger Prädiktoren, wobei jede Varianz einer Funktion von Lambda und der Anzahl von Parametern entspricht. Mir scheint, es gibt eine konzeptionelle Beziehung.
Ryan Simmons

@amoeba es war ein Fehler. Das Hinzufügen eines skalierten Vektors y zu der Matrix X reguliert etwas, ist jedoch nicht dasselbe wie die Gratregression oder die Rauschvektoren. Ich frage mich jedoch, was passiert, wenn wir ein wenig von von jedem x subtrahieren , um jede Variable leicht negativ (oder weniger positiv) mit dem y-Vektor zu korrelieren. Dies, um eine "negative" Regularisierung durchzuführen. Das, um die Regularisierung der 1000 Vektoren rückgängig zu machen (irgendwann kann es zu viel werden, wie Sie sehen, wenn der Peak- / Optimal-Regularisierungskoeffizient jetzt fast außerhalb des Bereichs liegt). y
Sextus Empiricus

15

Hier ist eine künstliche Situation, in der dies auftritt. Angenommen, jede Prädiktorvariable ist eine Kopie der Zielvariablen, auf die ein hohes Maß an Gaußschem Rauschen angewendet wird. Das bestmögliche Modell ist ein Durchschnitt aller Prädiktorvariablen.

library(glmnet)
set.seed(1846)
noise <- 10
N <- 80
num.vars <- 100
target <- runif(N,-1,1)
training.data <- matrix(nrow = N, ncol = num.vars)
for(i in 1:num.vars){
  training.data[,i] <- target + rnorm(N,0,noise)
}
plot(cv.glmnet(training.data, target, alpha = 0,
               lambda = exp(seq(-10, 10, by = 0.1))))

MSE für verschiedene Lambda mit 100 Prädiktoren

100 Variablen verhalten sich "normal": Ein gewisser positiver Lambda-Wert minimiert den Fehler außerhalb der Stichprobe.

Erhöhen Sie aber die Anzahl der Variablen im obigen Code auf 1000, und hier ist der neue MSE-Pfad. (Ich habe mich um log (Lambda) = -100 erweitert, um mich selbst zu überzeugen.

MSE für verschiedene Lambda mit 1000 Prädiktoren

Was ich denke, passiert gerade

Wenn viele Parameter mit geringer Regularisierung angepasst werden, werden die Koeffizienten mit hoher Varianz zufällig um ihren wahren Wert verteilt.

Wenn die Anzahl der Prädiktoren sehr groß wird, tendiert der "durchschnittliche Fehler" gegen Null, und es wird besser, die Koeffizienten einfach fallen zu lassen, wo sie können, und alles zusammenzufassen, als sie gegen 0 vorzuspannen.

Ich bin sicher, dass diese Situation, in der die wahre Vorhersage ein Durchschnitt aller Prädiktoren ist, nicht das einzige Mal ist, aber ich weiß nicht, wie ich anfangen soll, die größte notwendige Bedingung hier zu bestimmen.

BEARBEITEN:

Das "flache" Verhalten für sehr niedriges Lambda wird immer vorkommen, da die Lösung zur Minimum-Norm-OLS-Lösung konvergiert. In ähnlicher Weise ist die Kurve für ein sehr hohes Lambda flach, wenn die Lösung gegen 0 konvergiert. Es gibt kein Minimum, wenn eine dieser beiden Lösungen optimal ist.

Warum ist die Minimum-Norm-OLS-Lösung in diesem Fall (vergleichbar) gut? Ich denke, es hängt mit dem folgenden Verhalten zusammen, das ich als sehr kontraintuitiv empfand, aber das Nachdenken macht sehr viel Sinn.

max.beta.random <- function(num.vars){
  num.vars <- round(num.vars)
  set.seed(1846)
  noise <- 10
  N <- 80
  target <- runif(N,-1,1)
  training.data <- matrix(nrow = N, ncol = num.vars)

  for(i in 1:num.vars){
    training.data[,i] <- rnorm(N,0,noise)
  }
  udv <- svd(training.data)

  U <- udv$u
  S <- diag(udv$d)
  V <- udv$v

  beta.hat <- V %*% solve(S) %*% t(U) %*% target

  max(abs(beta.hat))
}


curve(Vectorize(max.beta.random)(x), from = 10, to = 1000, n = 50,
      xlab = "Number of Predictors", y = "Max Magnitude of Coefficients")

abline(v = 80)

Darstellung der maximalen Größe von Koeffizienten mit zunehmender Anzahl von Prädiktoren

Mit zufällig erzeugten Prädiktoren, die nichts mit der Antwort zu tun haben, werden die Koeffizienten mit zunehmendem p größer, aber sobald p viel größer als N ist, schrumpfen sie gegen Null. Dies passiert auch in meinem Beispiel. Daher müssen die unregelmäßigen Lösungen für diese Probleme nicht verkleinert werden, da sie bereits sehr klein sind!

Dies geschieht aus einem trivialen Grund. kann genau als lineare Kombination von Spalten von ausgedrückt werden . ist der Minimum-Norm-Koeffizientenvektor. Wenn mehr Spalten hinzugefügt werden, muss die Norm von abnehmen oder konstant bleiben, da eine mögliche lineare Kombination darin besteht, die vorherigen Koeffizienten gleich zu halten und die neuen Koeffizienten auf .yXβ^β^0


1
(+1). Das Phänomen scheint also aufzutreten, wenn Prädiktoren korreliert werden. Es bedeutet formal nicht, dass die Fehlerkurve kein Minimum für positives , noch dass die Grenze bei 0 nicht groß ist. Es bedeutet nur, dass die Kurve dazu neigt, flach zu werden, und dass der Schwellenwert für wie klein muss, damit die Regularisierung aufhört zu arbeiten, für großes gegen 0 tendiert . Hier geht dieser Schwellenwert über die rechnerische Grenze hinaus, aber die Antwort von Firebug legt nahe, dass er möglicherweise immer existiert. λλp
Benoit Sanchez

1
Warum brauchst du glmnetin deinem Update? Wenn Sie nur eine Minimal-Norm-OLS-Lösung benötigen, gibt es eine direkte Formel (siehe die zweite Formel in meiner Frage), und wenn man die SVD von berechnet, wird diese Formel einfach . Es gibt wahrscheinlich auch eine Funktion in R, die diese Lösung berechnet, aber ich kenne R nicht wirklich :)X=USVβ^=VS1Uy
Amöbe sagt Reinstate Monica

2
Weiter darüber nachzudenken ist überhaupt nicht überraschend. kann genau als lineare Kombination von Vektoren in ausgedrückt werden . ist der Vektor der Koeffizienten mit der kleinsten Norm. Wenn Sie einen Vektor hinzufügen, muss die Norm von kleiner oder gleich groß sein, da Sie die alten Koeffizienten beibehalten und die neuen auf Null setzen können. yXβ^β^
Jonny Lomond

3
Jonnys Beispiel ist gut, weil es bereits analysiert wurde: siehe James-Stein-Schätzer . Wenn wir den Mittelwert eines festen Vektors mit Dimension 3 oder höher schätzen , können wir die einfache Mittelwertbildung immer verbessern, indem wir gegen Null tendieren. Ich frage mich, ob die Verbesserung in diesem Fall möglicherweise zu gering ist, um beobachtet zu werden. θ
Paul

3
Es ist allgemein bekannt, dass die Ridge-Regression dem Hinzufügen von zusätzlichen "gefälschten" Samples zum Datensatz entspricht, wobei jedes Sample einen -Wert in einem Feature und ansonsten Nullen aufweist und alle entsprechenden Antworten Null sind. (Es ist trivial, die RR-Kostenfunktion in dieser Form umzuschreiben.) Ich frage mich jetzt, ob es eine Möglichkeit gibt, zusätzliche Funktionen (z. B. reines Rauschen?) Hinzuzufügen, die ähnliche Auswirkungen haben würden. Natürlich bedeutet das Hinzufügen zusätzlicher Features, dass seine Dimensionalität erhöht, aber man kann seine Werte nur bei den "ursprünglichen" Prädiktoren betrachten. @ Paulpλβ^
Amöbe sagt Reinstate Monica

6

Daher habe ich beschlossen, eine verschachtelte Kreuzvalidierung mit dem Spezialpaket mlrin R durchzuführen, um zu sehen, was tatsächlich vom Modellierungsansatz kommt.

Code (die Ausführung auf einem normalen Notebook dauert einige Minuten)

library(mlr)
daf = read.csv("https://pastebin.com/raw/p1cCCYBR", sep = " ", header = FALSE)

tsk = list(
  tsk1110 = makeRegrTask(id = "tsk1110", data = daf, target = colnames(daf)[1]),
  tsk500 = makeRegrTask(id = "tsk500", data = daf[, c(1,sample(ncol(daf)-1, 500)+1)], target = colnames(daf)[1]),
  tsk100 = makeRegrTask(id = "tsk100", data = daf[, c(1,sample(ncol(daf)-1, 100)+1)], target = colnames(daf)[1]),
  tsk50 = makeRegrTask(id = "tsk50", data = daf[, c(1,sample(ncol(daf)-1, 50)+1)], target = colnames(daf)[1]),
  tsk10 = makeRegrTask(id = "tsk10", data = daf[, c(1,sample(ncol(daf)-1, 10)+1)], target = colnames(daf)[1])
)

rdesc = makeResampleDesc("CV", iters = 10)
msrs = list(mse, rsq)
configureMlr(on.par.without.desc = "quiet")
bm3 = benchmark(learners = list(
    makeLearner("regr.cvglmnet", alpha = 0, lambda = c(0, exp(seq(-10, 10, length.out = 150))),
    makeLearner("regr.glmnet", alpha = 0, lambda = c(0, exp(seq(-10, 10, length.out = 150))), s = 151)
    ), tasks = tsk, resamplings = rdesc, measures = msrs)

Ergebnisse

getBMRAggrPerformances(bm3, as.df = TRUE)
#   task.id    learner.id mse.test.mean rsq.test.mean
#1    tsk10 regr.cvglmnet     1.0308055  -0.224534550
#2    tsk10   regr.glmnet     1.3685799  -0.669473387
#3   tsk100 regr.cvglmnet     0.7996823   0.031731316
#4   tsk100   regr.glmnet     1.3092522  -0.656879104
#5  tsk1110 regr.cvglmnet     0.8236786   0.009315037
#6  tsk1110   regr.glmnet     0.6866745   0.117540454
#7    tsk50 regr.cvglmnet     1.0348319  -0.188568886
#8    tsk50   regr.glmnet     2.5468091  -2.423461744
#9   tsk500 regr.cvglmnet     0.7210185   0.173851634
#10  tsk500   regr.glmnet     0.6171841   0.296530437

Sie machen im Grunde das Gleiche für alle Aufgaben.

Was ist also mit den optimalen Lambdas?

sapply(lapply(getBMRModels(bm3, task.ids = "tsk1110")[[1]][[1]], "[[", 2), "[[", "lambda.min")
# [1] 4.539993e-05 4.539993e-05 2.442908e-01 1.398738e+00 4.539993e-05
# [6] 0.000000e+00 4.539993e-05 3.195187e-01 2.793841e-01 4.539993e-05

Beachten Sie, dass die Lambdas bereits transformiert sind. Einige haben sogar das minimale Lambda .λ=0

Ich habe ein bisschen mehr herumgespielt glmnetund festgestellt, dass weder dort das minimale Lambda gepflückt wird. Prüfen:

BEARBEITEN:

Nach Kommentaren von amoeba wurde klar, dass der Regularisierungspfad ein wichtiger Schritt bei der glmnetSchätzung ist, sodass der Code ihn jetzt widerspiegelt. Auf diese Weise verschwanden die meisten Unstimmigkeiten.

cvfit = cv.glmnet(x = x, y = y, alpha = 0, lambda = exp(seq(-10, 10, length.out = 150)))
plot(cvfit)

Bildbeschreibung hier eingeben

Fazit

verbessert also im Grunde die Passform ( edit: aber nicht viel! ).λ>0

Wie ist es möglich und was sagt es über meinen Datensatz aus? Fehlt mir etwas Offensichtliches oder ist es tatsächlich kontraintuitiv?

Wir sind wahrscheinlich näher an der wahren Verteilung der Dateneinstellung auf einen kleinen Wert größer als Null. Es gibt jedoch nichts, was der Intuition widerspricht.λ

Bearbeiten: Denken Sie jedoch daran, dass beim Aufrufen des Ridge-Regularisierungspfads vorherige Parameterschätzungen verwendet werden glmnet, die sich jedoch meines Fachwissens entziehen. Wenn wir einen wirklich niedrigen lambdaWert für die Isolation festlegen , wird dies wahrscheinlich die Leistung beeinträchtigen.

EDIT: Die Lambda-Auswahl sagt etwas mehr über Ihre Daten aus. Wenn größere Lambdas die Leistung verringern, gibt es in Ihrem Modell bevorzugte, dh größere Koeffizienten, da bei großen Lambdas alle Koeffizienten gegen Null schrumpfen. Obwohl bedeutet, dass die effektiven Freiheitsgrade in Ihrem Modell kleiner sind als die scheinbaren Freiheitsgrade, .λ0p

Wie kann es einen qualitativen Unterschied zwischen p = 100 und p = 1000 geben, wenn beide größer als n sind?

p=1000 enthält immer mindestens dieselbe Information oder sogar mehr als .p=100


Bemerkungen

Es scheint, dass Sie ein winziges Minimum für ein Lambda ungleich Null bekommen (ich schaue auf Ihre Figur), aber die Kurve links davon ist immer noch sehr, sehr flach. Meine Hauptfrage bleibt also, warum λ → 0 nicht merklich überpasst. Ich sehe hier noch keine Antwort. Erwarten Sie, dass dies ein allgemeines Phänomen ist? Dh für alle Daten mit n≪p ist Lambda = 0 [fast] so gut wie optimales Lambda? Oder ist es etwas Besonderes an diesen Daten? Wenn Sie oben in den Kommentaren nachsehen, werden Sie feststellen, dass viele Leute mir nicht einmal geglaubt haben, dass es möglich ist.

Ich denke, dass Sie die Validierungsleistung mit der Testleistung in Einklang bringen, und ein solcher Vergleich ist nicht gerechtfertigt.

Bearbeiten: Beachten Sie jedoch, dass sich lambdadie Leistung des gesamten Regularisierungspfads nicht verschlechtert , wenn wir nach dem Ausführen auf 0 setzen. Daher ist der Regularisierungspfad der Schlüssel, um zu verstehen, was vor sich geht!

Außerdem verstehe ich Ihre letzte Zeile nicht ganz. Sehen Sie sich die Ausgabe von cv.glmnet für p = 100 an. Es wird eine ganz andere Form haben. Was beeinflusst diese Form (Asymptote links vs. keine Asymptote), wenn p = 100 oder p = 1000 ist?

Vergleichen wir die Regularisierungspfade für beide:

fit1000 = glmnet(x, y, alpha = 0, lambda = exp(seq(-10,10, length.out = 1001)))
fit100 = glmnet(x[, sample(1000, 100)], y, alpha = 0, lambda = exp(seq(-10,10, length.out = 1001)))
plot(fit1000, "lambda")

Bildbeschreibung hier eingeben

x11()
plot(fit100, "lambda")

Bildbeschreibung hier eingeben

Es wird deutlich, dass bei Erhöhung von größere Koeffizienten liefert , obwohl es links von beiden Kurven kleinere Koeffizienten für den asymptotisch-OLS-Kamm hat. Im Grunde genommen passt links im Diagramm über, und das erklärt wahrscheinlich den Unterschied im Verhalten zwischen ihnen.p=1000λp=100

Es ist schwieriger für , eine Überanpassung vorzunehmen, da Ridge die Koeffizienten zwar auf Null verkleinert, sie jedoch niemals Null erreichen. Dies bedeutet, dass die Vorhersagekraft des Modells auf viele weitere Komponenten aufgeteilt wird, was die Vorhersage um den Mittelwert erleichtert, anstatt vom Rauschen mitgerissen zu werden.p=1000


+1 Danke, dass du diese Experimente gemacht hast! Es scheint, dass Sie ein winziges Minimum für ein Lambda ungleich Null bekommen (ich schaue auf Ihre Figur), aber die Kurve links davon ist immer noch sehr, sehr flach. Meine Hauptfrage bleibt also, warum nicht merklich überpasst. Ich sehe hier noch keine Antwort. Erwarten Sie, dass dies ein allgemeines Phänomen ist? Dh für alle Daten mit ist Lambda = 0 [fast] so gut wie optimales Lambda? Oder ist es etwas Besonderes an diesen Daten? Wenn Sie oben in den Kommentaren nachsehen, werden Sie feststellen, dass viele Leute mir nicht einmal geglaubt haben, dass es möglich ist. λ0np
Amöbe sagt Reinstate Monica

Außerdem verstehe ich Ihre letzte Zeile nicht ganz. Schauen Sie sich die cv.glmnetAusgabe für p = 100 an. Es wird eine ganz andere Form haben. Was beeinflusst diese Form (Asymptote links vs. keine Asymptote), wenn p = 100 oder p = 1000 ist?
Amöbe sagt Reinstate Monica

Wissen Sie, ob oder (in der Terminologie) mlrauswählt ? lambda.minlambda.1secv.glmnet
Amöbe sagt Reinstate Monica

@amoeba lambda.min. Es gibt auch einen regr.cvglmnetLerner, mit dem man wahrscheinlich andere Regeln auswählen kann.
Firebug

Vielen Dank. Um ehrlich zu sein, verstehe ich die Ausgabe Ihres 1e-100-Benchmarks nicht. ZB für p = 1100 ergibt sich MSE = 1,45. Aber hier gibt es keine Hyperparametereinstellung in der inneren Schleife, so dass man im Grunde überhaupt keine innere CV-Schleife benötigt. Das bedeutet, dass das Ergebnis mit dem nicht verschachtelten CV bei Lambda = 1e-100 identisch sein sollte. Wir sehen aber auf der ersten Abbildung, dass die MSE dort bei 0,7 liegt. Das ergibt für mich keinen Sinn.
Amöbe sagt Reinstate Monica

5

Wie kann (minimale Norm) OLS nicht überanpassen?

Zusamenfassend:

Es ist wahrscheinlicher, dass experimentelle Parameter, die mit den (unbekannten) Parametern im wahren Modell korrelieren, mit hohen Werten in einer Minimal-Norm-OLS-Anpassungsprozedur geschätzt werden. Das liegt daran, dass sie dem 'Modell + Rauschen' entsprechen, während die anderen Parameter nur dem 'Rauschen' entsprechen (daher passen sie einem größeren Teil des Modells mit einem niedrigeren Wert des Koeffizienten und haben mit größerer Wahrscheinlichkeit einen hohen Wert) in der minimalen Norm OLS).

Dieser Effekt reduziert das Ausmaß der Überanpassung bei einem OLS-Anpassungsverfahren mit minimaler Norm. Der Effekt ist ausgeprägter, wenn mehr Parameter verfügbar sind, da es dann wahrscheinlicher wird, dass ein größerer Teil des „wahren Modells“ in die Schätzung einbezogen wird.

Längerer Teil:
(Ich bin nicht sicher, was ich hier platzieren soll, da mir das Problem nicht ganz klar ist, oder ich weiß nicht, mit welcher Genauigkeit eine Antwort die Frage beantworten muss.)

Nachfolgend finden Sie ein Beispiel, das einfach aufgebaut werden kann und das Problem veranschaulicht. Der Effekt ist nicht so seltsam und Beispiele sind einfach zu machen.

  • Ich habe sin-Funktionen (weil sie senkrecht sind) als Variablen genommenp=200
  • erstellt ein Zufallsmodell mit Messungen. n=50
    • Das Modell ist nur mit der Variablen konstruiert , sodass 190 der 200 Variablen die Möglichkeit bieten, eine Überanpassung zu generieren.tm=10
    • Modellkoeffizienten werden zufällig bestimmt

In diesem Beispielsfall stellen wir fest, dass eine gewisse Überanpassung vorliegt, die Koeffizienten der Parameter, die zum wahren Modell gehören, jedoch einen höheren Wert haben. Somit kann das R ^ 2 einen positiven Wert haben.

Das folgende Bild (und der Code, mit dem es generiert wird) zeigen, dass die Überanpassung begrenzt ist. Die Punkte, die sich auf das Schätzmodell von 200 Parametern beziehen. Die roten Punkte beziehen sich auf die Parameter, die auch im „wahren Modell“ vorhanden sind, und wir sehen, dass sie einen höheren Wert haben. Es gibt also ein gewisses Maß an Annäherung an das reale Modell und das Erhalten des R ^ 2 über 0.

  • Beachten Sie, dass ich ein Modell mit orthogonalen Variablen (den Sinusfunktionen) verwendet habe. Wenn Parameter korreliert sind, können sie im Modell mit relativ hohem Koeffizienten auftreten und in der Minimalnorm OLS stärker benachteiligt werden.
  • Beachten Sie, dass die 'orthogonalen Variablen' bei Betrachtung der Daten nicht orthogonal sind. Das innere Produkt von ist nur dann Null, wenn wir den gesamten Raum von und nicht, wenn wir nur wenige Stichproben . Die Folge ist, dass auch bei Null Rauschen eine Überanpassung auftritt (und der R ^ 2-Wert neben dem Rauschen von vielen Faktoren abzuhängen scheint. Natürlich gibt es die Beziehung und , aber auch wichtig ist, wie viele Variablen vorhanden sind im wahren Modell und wie viele davon im passenden Modell).sin(ax)sin(bx)xxnp

Beispiel für eine Reduzierung der Überanpassung

library(MASS)

par(mar=c(5.1, 4.1, 9.1, 4.1), xpd=TRUE)

p <- 200       
l <- 24000
n <- 50
tm <- 10

# generate i sinus vectors as possible parameters
t <- c(1:l)
xm <- sapply(c(0:(p-1)), FUN = function(x) sin(x*t/l*2*pi))

# generate random model by selecting only tm parameters
sel <- sample(1:p, tm)
coef <- rnorm(tm, 2, 0.5)

# generate random data xv and yv with n samples
xv <- sample(t, n)
yv <- xm[xv, sel] %*% coef + rnorm(n, 0, 0.1)

# generate model
M <- ginv(t(xm[xv,]) %*% xm[xv,])

Bsol <- M %*% t(xm[xv,]) %*% yv
ysol <- xm[xv,] %*% Bsol

# plotting comparision of model with true model
plot(1:p, Bsol, ylim=c(min(Bsol,coef),max(Bsol,coef)))
points(sel, Bsol[sel], col=1, bg=2, pch=21)
points(sel,coef,pch=3,col=2)

title("comparing overfitted model (circles) with true model (crosses)",line=5)
legend(0,max(coef,Bsol)+0.55,c("all 100 estimated coefficients","the 10 estimated coefficients corresponding to true model","true coefficient values"),pch=c(21,21,3),pt.bg=c(0,2,0),col=c(1,1,2))

Truncated Beta-Technik in Bezug auf die Gratregression

Ich habe den Python-Code von Amoeba in R umgewandelt und die beiden Graphen miteinander kombiniert. Für jede minimale Norm-OLS-Schätzung mit hinzugefügten Rauschvariablen stimme ich mit einer Ridge-Regressionsschätzung mit derselben (ungefähren) Norm für den ; überein .l2β

  • Anscheinend funktioniert das Modell mit abgeschnittenem Rauschen ähnlich (es wird nur ein bisschen langsamer und möglicherweise ein bisschen öfter weniger gut berechnet).
  • Ohne die Kürzung ist der Effekt jedoch viel weniger stark.
  • Diese Entsprechung zwischen dem Hinzufügen von Parametern und der Kammstrafe ist nicht unbedingt der stärkste Mechanismus für das Fehlen einer Überanpassung. Dies ist insbesondere in der 1000p-Kurve (im Bild der Frage) zu sehen, die auf fast 0,3 geht, während die anderen Kurven mit unterschiedlichem p dieses Niveau nicht erreichen, unabhängig davon, was der Ridge-Regressionsparameter ist. In diesem praktischen Fall sind die zusätzlichen Parameter nicht mit einer Verschiebung des Firstparameters identisch (und das liegt vermutlich daran, dass die zusätzlichen Parameter ein besseres, vollständigeres Modell ergeben).

  • Die Geräuschparameter reduzieren einerseits die Norm (genau wie die Gratregression), führen aber auch zu zusätzlichem Geräusch. Benoit Sanchez zeigt, dass im Grenzfall durch Hinzufügen vieler verschiedener Rauschparameter mit geringerer Abweichung letztendlich die Ridge-Regression erreicht wird (die wachsende Anzahl von Rauschparametern hebt sich gegenseitig auf). Gleichzeitig sind jedoch viel mehr Berechnungen erforderlich (wenn wir die Abweichung des Rauschens erhöhen, um weniger Parameter zu verwenden und die Berechnung zu beschleunigen, wird der Unterschied größer).

Rho = 0,2 Vergleich des abgeschnittenen Rauschens mit der Gratregression

Rho = 0,4 Vergleich des abgeschnittenen Rauschens mit der Gratregression

Rho = 0,2 erhöht die Varianz der Rauschparameter auf 2 Vergleich des abgeschnittenen Rauschens mit der Gratregression

Codebeispiel

# prepare the data
set.seed(42)
n = 80
p = 40
rho = .2
y = rnorm(n,0,1)
X = matrix(rep(y,p), ncol = p)*rho + rnorm(n*p,0,1)*(1-rho^2)

# range of variables to add
ps = c(0, 5, 10, 15, 20, 40, 45, 50, 55, 60, 70, 80, 100, 125, 150, 175, 200, 300, 400, 500, 1000)
#ps = c(0, 5, 10, 15, 20, 40, 60, 80, 100, 150, 200, 300) #,500,1000)

# variables to store output (the sse)
error   = matrix(0,nrow=n, ncol=length(ps))
error_t = matrix(0,nrow=n, ncol=length(ps))
error_s = matrix(0,nrow=n, ncol=length(ps))

# adding a progression bar
pb <- txtProgressBar(min = 0, max = n, style = 3)

# training set by leaving out measurement 1, repeat n times 
for (fold in 1:n) {
    indtrain = c(1:n)[-fold]

    # ridge regression
    beta_s <- glmnet(X[indtrain,],y[indtrain],alpha=0,lambda = 10^c(seq(-4,2,by=0.01)))$beta
    # calculate l2-norm to compare with adding variables
    l2_bs <- colSums(beta_s^2)

    for (pi in 1:length(ps)) {
        XX = cbind(X, matrix(rnorm(n*ps[pi],0,1), nrow=80))
        XXt = XX[indtrain,]

        if (p+ps[pi] < n) {
            beta = solve(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
        }
        else {
            beta = ginv(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
        }

        # pickout comparable ridge regression with the same l2 norm      
        l2_b <- sum(beta[1:p]^2)
        beta_shrink <- beta_s[,which.min((l2_b-l2_bs)^2)] 

        # compute errors
        error[fold, pi] = y[fold] - XX[fold,1:p] %*% beta[1:p]
        error_t[fold, pi] = y[fold] - XX[fold,] %*% beta[]
        error_s[fold, pi] = y[fold] - XX[fold,1:p] %*% beta_shrink[]
    }
    setTxtProgressBar(pb, fold) # update progression bar
}

# plotting
plot(ps,colSums(error^2)/sum(y^2) , 
     ylim = c(0,2),
     xlab ="Number of extra predictors",
     ylab ="relative sum of squared error")
lines(ps,colSums(error^2)/sum(y^2))
points(ps,colSums(error_t^2)/sum(y^2),col=2)
lines(ps,colSums(error_t^2)/sum(y^2),col=2)
points(ps,colSums(error_s^2)/sum(y^2),col=4)
lines(ps,colSums(error_s^2)/sum(y^2),col=4)

title('Extra pure noise predictors')

legend(200,2,c("complete model with p + extra predictors",
               "truncated model with p + extra predictors",
               "ridge regression with similar l2-norm",
               "idealized model uniform beta with 1/p/rho"),
       pch=c(1,1,1,NA), col=c(2,1,4,1),lt=c(1,1,1,2))

# idealized model (if we put all beta to 1/rho/p we should theoretically have a reasonable good model)
error_op <- rep(0,n)
for (fold in 1:n) {
  beta = rep(1/rho/p,p)
    error_op[fold] = y[fold] - X[fold,] %*% beta
}
id <- sum(error_op^2)/sum(y^2)
lines(range(ps),rep(id,2),lty=2)

1
(+1) Danke. Ich halte das intuitive Argument am Anfang Ihrer Antwort für sinnvoll.
Amöbe sagt Reinstate Monica

1

Wenn Sie mit linearen Operatoren vertraut sind, ist meine Antwort möglicherweise der direkteste Weg, um das Phänomen zu verstehen: Warum scheitert die Normregression nicht sofort? Der Grund ist, dass Ihr Problem ( ) das schlecht gestellte inverse Problem ist und Pseudo-Inverse eine der Möglichkeiten ist, es zu lösen. Regularisierung ist jedoch eine Verbesserung.np

Dieses Papier ist wahrscheinlich die kompakteste und relevanteste Erklärung: Lorenzo Rosasco et al., Learning, Regularization und Ill-Posed Inverse Problems . Sie richten Ihr Regressionsproblem als Lernproblem ein (siehe Gleichung 3), wobei die Anzahl der Parameter die Anzahl der Beobachtungen übersteigt: wobei ein linearer Operator im Hilbert-Raum und - verrauschte Daten sind.

Ax=gδ,
Agδ

Offensichtlich ist dies ein schlecht gestelltes inverses Problem. Sie können es also mit SVD oder Moore-Penrose-Invers lösen, was in der Tat die Lösung mit der geringsten Norm darstellt. Daher sollte es nicht überraschen, dass Ihre Lösung mit der geringsten Norm nicht sofort versagt.

Wenn Sie sich jedoch an das Papier halten, können Sie feststellen, dass die Gratregression eine Verbesserung gegenüber dem oben Gesagten darstellt. Die Verbesserung ist wirklich ein besseres Verhalten des Schätzers, da die Moore-Penrose-Lösung nicht unbedingt beschränkt ist.

AKTUALISIEREN

Mir wurde klar, dass ich nicht klar machte, dass schlecht gestellte Probleme zu Überanpassung führen. Hier ist das Zitat aus der Zeitung Gábor A, Banga JR. Robuste und effiziente Parameterschätzung in dynamischen Modellen biologischer Systeme . BMC Systembiologie. 2015; 9: 74. doi: 10.1186 / s12918-015-0219-2:

Die schlechte Konditionierung dieser Probleme resultiert typischerweise aus (i) Modellen mit einer großen Anzahl von Parametern (Überparametrisierung), (ii) mangelnden experimentellen Daten und (iii) signifikanten Messfehlern [19, 40]. Infolgedessen erhalten wir häufig eine Überanpassung derartiger kinetischer Modelle, dh kalibrierter Modelle mit angemessener Anpassung an die verfügbaren Daten, aber geringer Generalisierungsfähigkeit (niedriger Vorhersagewert).

Mein Argument kann also wie folgt lauten:

  • schlecht gestellte Probleme führen zu Überanpassung
  • (n <p) ist ein extrem schlecht gestelltes inverses Problem
  • Moore-Penrose-Psudo-Inverse (oder andere Tools wie SVD), die Sie in der Frage als , lösen ein schlecht gestelltes ProblemX+
  • Daher ist eine Überanpassung zumindest teilweise möglich, und es sollte nicht überraschen, dass sie im Gegensatz zu einer regulären OLS nicht vollständig ausfällt

Auch hier ist die Regularisierung eine noch robustere Lösung.


1
(+1) Danke, aber ich verstehe nicht ganz, wie wichtig dieses Papier ist. Ich werde es mir morgen genauer ansehen. Wo genau heißt es, dass die OLS-Lösung mit der Mindestnorm nicht überarbeitet wird oder dass die Mindestnorm als Regularisierung angesehen werden kann?
Amöbe sagt Reinstate Monica

1
Lassen Sie uns diskutieren, wann Sie die Zeitung lesen. Sie sagen nicht, dass Psudo-Inverse Regularisierung ist. Was sie sagen ist, dass es die Lösung für das schlecht gestellte Problem ist. Was ich sage, ist, dass Überanpassung auf die schlechte Einstellung des Problems zurückzuführen ist. Wenn Sie also das letztere ansprechen, kümmern Sie sich um das erstere, wenn auch nicht so gut wie um Regularisierung.
Aksakal

1
Ich denke, das Rätselhafte ist nicht, dass die Lösung der Mindestnorm nicht zu einer gewissen Verbesserung der Überanpassung führt, sondern dass das Hinzufügen von mehr Regularisierung die Dinge nicht weiter verbessert. Auch, warum die Lösung der Mindestnorm effektiver ist, wenn die Anzahl der Features größer wird. Meine Intuition ist, dass Probleme mit mehr Parametern mehr Regularisierung erfordern (alle Dinge sind ansonsten gleich) und nicht weniger. Dies ist ein wirklich interessantes Problem und kann eine Erklärung dafür sein, warum z. B. selbst unregelmäßige neuronale Netze nicht so gut passen, wie Sie es vielleicht erwarten.
Dikran Marsupial

1
@Dikran Tatsächlich können andere Formen oder Regularisierungen die Leistung verbessern: Ich kann z. B. die Leistung (im Vergleich zum Minimum-Norm-OLS) mit Hauptkomponentenregression oder mit elastischem Netz verbessern. Es ist nur so, dass die Gratregulierung unbrauchbar wird. Die Analogie zu neuronalen Netzen ist ein faszinierender Gedanke, der mir nicht in den Sinn gekommen ist. Was ich tat , obwohl etwa vor kurzem denken, ist , dass kein Wunder , dass niemand versteht , warum knifflige vertieftes Lernen Dinge wie Batch - Normalisierung wirklich Arbeit, da auch lineare Ridge - Regression von Statistiken 101 kann so verwirrend :-)
Amöbe sagt wieder einzusetzen Monica

2
Dies ist nicht die Hauptfrage, aber ich denke, dass diese ansonsten exzellente Reihe von Fragen, Antworten und Kommentaren davon abgehalten wurde, eine Kreuzvalidierung einzuführen. Für diese Diskussion wäre es viel einfacher, den linearen Populationsprädiktor aus den s zu berechnen , die zum Simulieren der Daten verwendet wurden, und die MSE eines Schätzers des linearen Prädiktors zu berechnen. Und ich habe einen Fall gesehen, in dem ich für keinen optimalen korrigierten AIC für die Ridge-Regression (R- Paketfunktion ) finden konnte. Aber ich muss das mit dem wahren linearen Prädiktor als Goldstandard wiederholen. βn<<prmsols
Frank Harrell
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.