Softwarepaket zur Lösung der linearen Regression der L-Unendlichkeitsnorm

10

Gibt es ein Softwarepaket zur Lösung der linearen Regression mit dem Ziel, die L-Unendlichkeitsnorm zu minimieren?

Fan Zhang
quelle
Nun, jedes lineare Programmierpaket würde funktionieren. Das lässt Ihnen viele Möglichkeiten. :)
Kardinal
1
@Cardinal Wie würden Sie dies als lineares Programm umgestalten? Es ist selbst in trivialen Fällen (wie zwei Datenpunkten und einem Parameter) nicht ersichtlich, wie dies zu tun ist: Es gibt keine Einschränkungen und die Zielfunktion ist nichtlinear.
whuber
Schlüsselbegriff : Chebyshev-Näherung. (Weitere werden folgen. Die Idee ist, eine zusätzliche Variable einzuführen und dann das Ziel in die Einschränkungen
Kardinal
@cardinal Du meinst das hier: mathworld.wolfram.com/ChebyshevApproximationFormula.html Es scheint ziemlich kompliziert zu sein.
Fan Zhang
Nun, es ist ein bisschen verwandt, aber für dieses Problem nicht relevant. Ihr Problem kann mit einer einfachen LP gelöst werden. Sobald ich an einen Computer komme, werde ich eine Antwort posten.
Kardinal

Antworten:

17

Kurze Antwort : Ihr Problem kann als lineares Programm (LP) formuliert werden, sodass Sie Ihren bevorzugten LP-Löser für die Aufgabe auswählen können. Lesen Sie weiter, um zu sehen, wie Sie das Problem als LP schreiben.

Dieses Minimierungsproblem wird oft als Chebyshev-Näherung bezeichnet .

Lassen Sie , mit Zeile bezeichnet mit und . Dann versuchen wir, die Funktion in Bezug auf zu minimieren . Bezeichne den optimalen Wert mit y=(yi)RnXRn×pixiβRpf(β)=yXββ

f=f(β)=inf{f(β):βRp}.

Der Schlüssel zur Neufassung als LP besteht darin, das Problem in epigraphischer Form neu zu schreiben . Es ist nicht schwer, sich davon zu überzeugen, dass tatsächlich

f=inf{t:f(β)t,tR,βRp}.

Unter Verwendung der Definition der Funktion können wir nun die rechte Seite oben als umschreiben und so sehen wir, dass das Minimieren der Norm in einer Regressionseinstellung dem LP wo die Optimierung durchgeführt wird über und bezeichnet einen Vektor von Einsen der Länge . Ich überlasse es dem Leser als (einfache) Übung, die obige LP in Standardform neu zu fassen.f

f=inf{t:tyixiβt,tR,βRp,1in},
minimizetsubject toyXβt1nyXβt1n,
(β,t)1nn

Beziehung zur Version (Total Variation) der linearen Regression1

Es ist interessant festzustellen, dass mit der Norm etwas sehr Ähnliches getan werden kann . Sei . Ähnliche Argumente lassen dann den Schluss zu, dass so dass die entsprechende LP 1g(β)=yXβ1

g=inf{tT1n:tiyixiβti,t=(ti)Rn,βRp,1in},
minimizetT1nsubject toyXβtyXβt.

Beachten Sie hier, dass jetzt ein Vektor der Länge anstelle eines Skalars ist, wie es im Fall Fall war.tn

Die Ähnlichkeit dieser beiden Probleme und die Tatsache, dass beide als LPs besetzt werden können, ist natürlich kein Zufall. Die beiden Normen hängen insofern zusammen, als sie die dualen Normen voneinander sind.

Kardinal
quelle
Wie würden Sie ein Maß für die Genauigkeit der Parameter und / oder Vorhersagen finden? Ich frage wegen der folgenden aktuellen Frage: mathematica.stackexchange.com/questions/214226/… .
JimB
3

Malab kann das mit cvx. um cvx (kostenlos) zu bekommen:

http://cvxr.com/cvx/download/

In cvx würden Sie es so schreiben:

cvx_begin
   variable x(n);
   minimize( norm(A*x-b,Inf) );
cvx_end

(siehe Beispiel Seite 12 des Handbuchs )

Es gibt eine Python-Implementierung von CVX ( hier ), aber die Befehle unterscheiden sich geringfügig ...

user603
quelle
1

Die Antwort von @ cardinal ist gut formuliert und wurde akzeptiert, aber um diesen Thread vollständig zu schließen, biete ich Folgendes an: Die numerischen IMSL-Bibliotheken enthalten eine Routine zum Durchführen einer Regression der L-Unendlichkeitsnorm. Die Routine ist in Fortran, C, Java, C # und Python verfügbar. Ich habe die C- und Python-Versionen verwendet, für die die Methode lnorm_regression heißt, die auch die allgemeine -norm-Regression unterstützt, .Lpp>=1

Beachten Sie, dass dies kommerzielle Bibliotheken sind, die Python-Versionen jedoch (wie in Bier) für den nichtkommerziellen Gebrauch kostenlos sind.

Josh Hemann
quelle
Leider funktioniert der Link nicht mehr. Könnten Sie es aktualisieren?
COOLSerdash