Median der Verteilung mit Speichereinschränkung
-
29-09-2020 - |
Frage
Task
Ich möchte annähernd dem Median einer bestimmten Verteilung $ D $ , aus der ich probieren kann.
Ein einfacher Algorithmus für diesen, mit $ n $ -Mamples, ist:
generasacodicetagpre. Ich suche jedoch nach einem Algorithmus, der
Ideen
Ich habe in diese Algorithmen gesucht:
- .
- Median der Mediane : Bedarf $ o (n) $ space, so funktioniert es nicht für mich.
- Randomisiertes Median : Es scheint wie Dies kann leicht zu einem Algorithmus verallgemeinert werden, der $ O (N ^ {3/4}) $ Speicherplatz verwendet.
Gibt es andere Algorithmen, die weniger als $ o (n) $ space verwenden, der mein problem lösen könnte? Ich dachte insbesondere, es könnte ein Algorithmus geben, der
Details
- .
- Idealerweise suche ich nach einem Hinweis auf einen Algorithmus, der auch Analyse enthält (Erfolgswahrscheinlichkeit, erwartete Laufzeit usw.).
- Eigentlich brauche ich einen Algorithmus, um $ D $ 's $ P $ -th-Perzentil abzuschätzen Für einen bestimmten
$ P $ , aber ich hoffe, dass die meisten mittelfindenden Algorithmen dazu verallgemeinert werden können. - Ich möchte die gleiche Genauigkeit wie der oben gezeigte einfache Algorithmus erreichen. Eine Möglichkeit, dies zu erreichen, besteht darin, einen Algorithmus mit einem Algorithmus zu verwenden, dessen Ausgabeverteilung der Sample-Algorithmus (aber vielleicht der neue Algorithmus kann in seltenen Fällen fehlschlagen)
Lösung
Sicher, Sie können dies definitiv mit etwas mehr Laufzeit erreichen. Hier ist ein konzeptionell einfacher Ansatz, der möglicherweise nicht optimal ist, aber Sie werden begonnen und ist wahrscheinlich ziemlich gut:
Binäre Suche verwenden, um einen ungefähren Median-
Dann wird die Schlüsselfrage: Wie wählen wir $ n '$ , um die Fehlerwahrscheinlichkeit zu steuern? Ein einfacher Ansatz besteht darin, $ n '$ ausreichend größer als $ N $ , dass die Wahrscheinlichkeit von Fehler in jeder Iteration von Binärsuche ist $ T $ kleiner als die Wahrscheinlichkeit des Fehlers, wenn $ N $ Beispiele, wobei $ T $ die Anzahl der iterationen der binären Suche ist, um die gewünschte Genauigkeit zu erreichen. Dann stellt eine Union gebunden sicher, dass dies Ihre Genauigkeitsbedingungen erfüllt.
Leider ist Ihre Genauigkeitsbedingung ein bisschen schwer zu arbeiten, wenn wir nichts über die Verteilung der Daten kennen, da die Genauigkeit des Mustermedians willkürlich schlecht sein kann. Betrachten Sie zum Beispiel eine Verteilung, die die Ausgänge
das ist ein einfacher Ansatz. Sie können wahrscheinlich besser machen. Sie möchten vielleicht streaming Algorithmen für den Computer, um den Median zu berechnen, da sie das Problem angehen, mit dem Sie arbeiten, mit der Sie mit einer unbegrenzten Anzahl von Proben aus der Verteilung, aber nur eine begrenzte Anzahl von Raum, was ist der beste Schätzbetrag, den wir für Sie bekommen können der Median? Zum Beispiel ist hier ein einfacher Algorithmus: Die erste Schicht dauert wiederholt drei Proben und gibt den Median dieser drei aus; Die zweite Schicht dauert wiederholt drei Zahlen von der ersten Schicht und gibt den Median dieser drei aus; und so weiter. Nach logarithmischer Anzahl von Ebenen erhalten Sie eine angemessene Annäherung an den Median. Zu diesem Thema gibt es eine ganze Literatur, und Sie sollten in der Lage sein, vieles mehr zu finden.