Gibt es eine bekannte allgemeine Tabelle statistischer Techniken, die erklären, wie sie mit Stichprobengröße und -dimension skalieren? Zum Beispiel erzählte mir ein Freund neulich, dass die Berechnungszeit für das schnelle Sortieren eindimensionaler Daten der Größe n n * log (n) ist.
Wenn wir zum Beispiel y gegen X zurückführen, wobei X eine d-dimensionale Variable ist, geht es dann als O (n ^ 2 * d)? Wie skaliert es, wenn ich die Lösung über eine exakte Gauß-Markov-Lösung gegen numerische kleinste Quadrate mit der Newton-Methode finden möchte? Oder einfach die Lösung finden oder Signifikanztests verwenden?
Ich denke, ich möchte mehr eine gute Antwortquelle (wie ein Artikel, der die Skalierung verschiedener statistischer Techniken zusammenfasst) als eine gute Antwort hier. Wie zum Beispiel eine Liste, die die Skalierung von multipler Regression, logistischer Regression, PCA, Cox-Proportional-Hazard-Regression, K-Mittel-Clustering usw. umfasst.
quelle
Antworten:
Die meisten effizienten (und nicht trivialen) statistischen Algorithmen sind iterativer Natur, so dass die Worst-Case-Analyse
O()
irrelevant ist, da der Worst-Fall "es konvergiert nicht" ist.Wenn Sie jedoch viele Daten haben, können sogar die linearen Algorithmen (
O(n)
) langsam sein, und Sie müssen sich dann auf die Konstante 'versteckt' hinter der Notation konzentrieren. Zum Beispiel wird das Berechnen der Varianz einer einzelnen Variation naiv durchgeführt, indem die Daten zweimal gescannt werden (einmal zum Berechnen einer Schätzung des Mittelwerts und dann einmal zum Schätzen der Varianz). Es kann aber auch in einem Durchgang durchgeführt werden .Für iterative Algorithmen ist die Konvergenzrate und die Anzahl der Parameter als Funktion der Datendimensionalität wichtiger, ein Element, das die Konvergenz stark beeinflusst. Viele Modelle / Algorithmen wachsen eine Reihe von Parametern, die exponentiell mit der Anzahl der Variablen (z. B. Splines) sind, während andere linear wachsen (z. B. Support-Vektor-Maschinen, zufällige Wälder, ...).
quelle
O(log(n) )
.Sie haben im Titel Regression und PCA erwähnt, und für jede dieser Fragen gibt es eine eindeutige Antwort.
Die asymptotische Komplexität der linearen Regression reduziert sich auf O (P ^ 2 * N), wenn N> P ist, wobei P die Anzahl der Merkmale und N die Anzahl der Beobachtungen ist. Weitere Einzelheiten zur rechnerischen Komplexität der Regressionsoperation der kleinsten Quadrate .
Vanille-PCA ist O (P ^ 2 * N + P ^ 3), wie im schnellsten PCA-Algorithmus für hochdimensionale Daten . Es gibt jedoch schnelle Algorithmen für sehr große Matrizen, die in dieser Antwort und dem besten PCA-Algorithmus für eine große Anzahl von Merkmalen erläutert werden . .
Ich glaube jedoch nicht, dass irgendjemand eine einzige beleuchtete Rezension oder Referenz oder ein Buch zu diesem Thema zusammengestellt hat. Könnte kein schlechtes Projekt für meine Freizeit sein ...
quelle
Ich gab eine sehr begrenzte Teilantwort für das Bestätigungsfaktor-Analysepaket, das ich für Stata in diesem Artikel im Stata Journal entwickelt hatte, basierend auf dem Timing der tatsächlichen Simulationen. Die Analyse der Bestätigungsfaktoren wurde als Methode zur Schätzung der maximalen Wahrscheinlichkeit implementiert, und ich konnte sehr leicht sehen, wie die Berechnungszeit mit jeder Dimension wuchs (Stichprobengröße
n
, Anzahl der Variablenp
, Anzahl der Faktorenk
). Da es stark davon abhängt, wie Stata über die Daten denkt (optimiert für die Berechnung über Spalten / Beobachtungen hinweg anstatt über Zeilen hinweg), fand ich die LeistungO(n^{0.68} (k+p)^{2.4})
Dabei ist 2.4 die schnellste Matrixinversionsasymptotik (und davon gibt es verdammt viel in der iterativen Maximierung der Bestätigungsfaktoranalyse). Ich habe keine Referenz für Letzteres angegeben, aber ich glaube, ich habe diese von Wikipedia erhalten .X'X
quelle