Gibt es ein Softwarepaket zur Lösung der linearen Regression mit dem Ziel, die L-Unendlichkeitsnorm zu minimieren?
regression
Fan Zhang
quelle
quelle
Antworten:
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 mity=(yi)∈Rn X∈Rn×p i xi β∈Rp f(β)=∥y−Xβ∥∞ β
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
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
Beziehung zur Version (Total Variation) der linearen Regressionℓ1
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ℓ1 g(β)=∥y−Xβ∥1
Beachten Sie hier, dass jetzt ein Vektor der Länge anstelle eines Skalars ist, wie es im Fall Fall war.t n ℓ∞
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.
quelle
Malab kann das mit cvx. um cvx (kostenlos) zu bekommen:
http://cvxr.com/cvx/download/
In cvx würden Sie es so schreiben:
(siehe Beispiel Seite 12 des Handbuchs )
Es gibt eine Python-Implementierung von CVX ( hier ), aber die Befehle unterscheiden sich geringfügig ...
quelle
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, .Lp p>=1
Beachten Sie, dass dies kommerzielle Bibliotheken sind, die Python-Versionen jedoch (wie in Bier) für den nichtkommerziellen Gebrauch kostenlos sind.
quelle