Lösen eines Gleichungssystems mit spärlichen Daten


11

Ich versuche, einen Satz von Gleichungen zu lösen, der 40 unabhängige Variablen (x1, ..., x40) und eine abhängige Variable (y) enthält. Die Gesamtzahl der Gleichungen (Anzahl der Zeilen) beträgt ~ 300, und ich möchte nach dem Satz von 40 Koeffizienten suchen, der den gesamten quadratischen Fehlersummen zwischen y und dem vorhergesagten Wert minimiert.

Mein Problem ist, dass die Matrix sehr dünn ist und ich nicht weiß, wie ich das Gleichungssystem mit spärlichen Daten am besten lösen kann. Ein Beispiel für den Datensatz ist unten dargestellt:

   y    x1  x2 x3 x4 x5 x6 ... x40
87169   14  0  1  0  0  2  ... 0 
46449   0   0  4  0  1  4  ... 12
846449  0   0  0  0  0  3  ... 0
....

Ich verwende derzeit einen genetischen Algorithmus, um dies zu lösen, und die Ergebnisse werden mit einem Faktor von ungefähr zwei Unterschieden zwischen beobachtet und erwartet veröffentlicht.

Kann jemand verschiedene Methoden oder Techniken vorschlagen, die in der Lage sind, einen Satz von Gleichungen mit spärlichen Daten zu lösen.


2
Tippfehler im Titel: spare => sparse.
Aleksandr Blekh

Antworten:


11

Wenn ich Sie richtig verstehe, ist dies der Fall einer multiplen linearen Regression mit spärlichen Daten ( spärliche Regression ). Unter der Annahme, dass Sie die folgenden Ressourcen nützlich finden.

1) NCSU- Vorlesungsfolien zur spärlichen Regression mit Überblick über Algorithmen, Notizen, Formeln, Grafiken und Literaturhinweise: http://www.stat.ncsu.edu/people/zhou/courses/st810/notes/lect23sparse.pdf

2) RÖkosystem bietet viele Pakete , die für spärliche Regressionsanalysen nützlich sind, einschließlich:

3) Ein Blog-Beitrag mit einem Beispiel für eine Lösung mit geringer Regression , basierend auf SparseM: http://aleph-nought.blogspot.com/2012/03/multiple-linear-regression-with-sparse.html

4) Ein Blog-Beitrag zur Verwendung spärlicher Matrizen in R , der eine Einführung zur Verwendung von glmnet: http://www.johnmyleswhite.com/notebook/2011/10/31/using-sparse-matrices-in-r enthält

5) Weitere Beispiele und einige Diskussionen zu diesem Thema finden Sie auf StackOverflow : /programming/3169371/large-scale-regression-in-r-with-a-sparse-feature-matrix

UPDATE (basierend auf Ihrem Kommentar):

Wenn Sie versuchen, ein LP-Problem mit Einschränkungen zu lösen, ist dieses theoretische Dokument möglicherweise hilfreich: http://web.stanford.edu/group/SOL/papers/gmsw84.pdf .

Überprüfen Sie auch das R-Paket limSolve : http://cran.r-project.org/web/packages/limSolve . Überprüfen Sie im Allgemeinen die Pakete in der CRAN-Aufgabenansicht "Optimierung und mathematische Programmierung" : http://cran.r-project.org/web/views/Optimization.html .

Lesen Sie abschließend das Buch "Verwenden von R für die numerische Analyse in Wissenschaft und Technik" (von Victor A. Bloomfield). Es enthält einen Abschnitt zum Lösen von Gleichungssystemen, dargestellt durch spärliche Matrizen (Abschnitt 5.7, Seiten 99-104), der Beispiele enthält, die auf einigen der oben genannten Pakete basieren: http://books.google.com/books? id = 9ph_AwAAQBAJ & pg = PA99 & LPG = PA99 & dq = r + limsolve + sparse + Matrix & source = bl & OTS = PHDE8nXljQ & sig = sPi4n5Wk0M02ywkubq7R7KD_b04 & hl = en & sa = X & ei = FZjiU-ioIcjmsATGkYDAAg & ved = 0CDUQ6AEwAw # v = OnePage & q = r% 20limsolve% 20sparse% 20matrix & f = false .


3
Vielen Dank für die tolle Antwort! Ich zögere, das Problem als spärliche Regression zu klassifizieren, da ich nicht wirklich versuche, zu modellieren und vorherzusagen, sondern nach einer Reihe von Koeffizienten zu suchen. Der Grund, warum ich genetische Algorithmen verwende, ist, dass ich auch Einschränkungen für die Gleichung anwenden kann. Wenn keine anderen Antworten eingehen, werde ich dies jedoch gerne akzeptieren.
Mike1886

1
@ mike1886: Es war mir ein Vergnügen! Ich habe meine Antwort basierend auf Ihrem Kommentar aktualisiert. Ich hoffe es hilft.
Aleksandr Blekh

7

Aleksandrs Antwort ist völlig richtig.

Die Art und Weise, wie die Frage gestellt wird, impliziert jedoch, dass dies eine einfache gewöhnliche Regressionsfrage der kleinsten Quadrate ist: Minimierung der Summe der quadratischen Residuen zwischen einer abhängigen Variablen und einer linearen Kombination von Prädiktoren.

Obwohl Ihre Entwurfsmatrix möglicherweise viele Nullen enthält, ist Ihr System als solches nicht übermäßig groß: 300 Beobachtungen mit 40 Prädiktoren sind nicht mehr als mittelgroß. Sie können eine solche Regression mit R ausführen, ohne besondere Anstrengungen für spärliche Daten zu unternehmen. Verwenden Sie einfach den lm()Befehl (für "lineares Modell"). Verwenden Sie ?lmdiese Option , um die Hilfeseite anzuzeigen. Beachten Sie außerdem, dass lmIhrer Entwurfsmatrix (dem Achsenabschnitt) standardmäßig eine konstante Spalte mit Einsen hinzugefügt wird. Fügen Sie -1auf der rechten Seite Ihrer Formel ein ein, um dies zu unterdrücken. Unter der Annahme, dass alle Ihre Daten (und nichts anderes) data.frameaufgerufen werden foo, können Sie Folgendes tun:

model <- lm(y~.-1,data=foo)

Und dann können Sie sich Parameterschätzungen usw. wie folgt ansehen:

summary(model)
residuals(model)

Wenn Ihr System viel größer ist, beispielsweise in der Größenordnung von 10.000 Beobachtungen und Hunderten von Prädiktoren, kann es sinnvoll sein, spezialisierte, spärliche Löser gemäß Aleksandrs Antwort zu betrachten.

Schließlich erwähnen Sie in Ihrem Kommentar zu Aleksandrs Antwort Einschränkungen für Ihre Gleichung. Wenn dies tatsächlich Ihr Hauptproblem ist, gibt es Möglichkeiten, eingeschränkte kleinste Quadrate in R zu berechnen. Ich persönlich mag pcls()das mgcvPaket. Vielleicht möchten Sie Ihre Frage so bearbeiten, dass sie die Art der Einschränkungen (Box-Einschränkungen, Nicht-Negativitäts-Einschränkungen, Integralitäts-Einschränkungen, lineare Einschränkungen, ...) enthält, mit denen Sie konfrontiert sind?


1
Stephan, ich schätze deine freundlichen Worte! Hat deine nette Antwort positiv bewertet. Sie könnten an dem Update interessiert sein, das ich aufgrund eines Kommentars des Autors der Frage an meiner Antwort vorgenommen habe.
Aleksandr Blekh
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.