Datenstrom-Algorithmen „teilen und erobern“

12

Welche nützlichen Algorithmen gibt es, die mit großen Datenströmen arbeiten und deren Ergebnisse relativ klein sind, und man kann das Ergebnis für eine Mischung aus zwei Datenströmen berechnen, indem man deren Ergebnisse irgendwie zusammenführt?

Ich kann einige nennen:

  • Die offensichtlichen Dinge wie Summe, Min, Max, Zählung, Top-K usw.
  • Ungefähre sogenannte "skizzenbasierte" Stream-Algorithmen für Histogramme, die unterschiedliche Elemente zählen oder Quantile berechnen

Welche anderen gibt es?

(Ich bin interessiert, weil ich ein Hobbyprojekt zur Überwachung verteilter Systeme schreibe, dessen Nützlichkeit direkt durch die Nützlichkeit solcher Algorithmen bestimmt wird.)

jkff
quelle
Ich finde es viel schwieriger, mir einen Streaming-Algorithmus vorzustellen, der nicht "dividieren und erobern" / assoziativ ist. Vielleicht eine Art rollierende Hash-Funktion ... Haben Sie natürliche Beispiele für einen solchen Stream-Algorithmus?
Thomas Ahle

Antworten:

9

Guha et al. '03 geben einen Näherungsalgorithmus für das k-Median-Clustering im Streaming-Modell an. Ihr Algorithmus unterteilt die Daten in disjunkte Teile, ermittelt O (k) -Zentren für jedes disjunkte Teil und kombiniert dann die Ergebnisse, um die k-Zentren zu erhalten. Dies scheint die Art von Algorithmus zu sein, nach der Sie suchen.

Lev Reyzin
quelle
7

εεichth(ich-1)th-level stream und level 0 ist der ursprüngliche stream). Dies ist im Wesentlichen ein Bottom-up-Rendering einer Divide-and-Conquer-Strategie. mit Aktualisierungen entlang der "Kante" des Rekursionsbaums. In der Struktur ist es dem von Lev erwähnten Aufsatz von Guha et al. Sehr ähnlich.

Suresh Venkat
quelle
6

Ich habe eine Arbeit gefunden ( "Verteilen von frequenzabhängigen Datenstromberechnungen" ), die besagt, dass jede Funktion der Frequenzverteilung des Stroms zusammengeführt werden kann (obwohl dies keine explizite und effiziente Konstruktion für die Zusammenführungsoperation darstellt). Und der Beweis scheint sehr interessant zu sein, da es sich um eine Ringtheorie handelt. Lesen Sie den vorherigen Artikel desselben Autors ( "Untere Schranken für die Frequenzschätzung von Datenströmen" ), dessen Hauptergebnis als Grundlage für diesen verwendet wird.

Das erinnert mich an den dritten Homomorphismus-Satz ...

jkff
quelle
Ich denke nicht, dass das Ganguly-Papier impliziert, dass eine Divide-and-Conquer-Strategie für das Streaming funktionieren kann. Dieses Modell scheint sich auf das Mapreduce / MUD-Modell zu reduzieren, bei dem es mehrere Durchgänge über die Daten geben kann.
Suresh Venkat
Beim Lesen scheint es mir, dass es immerhin nicht mehrere Durchgänge verwendet.
jkff
4

Die Forschung zu Abfragesprachen für kontinuierliche Streams kann einige Erkenntnisse liefern. Eine solche Sprache ist CQL , von dem ich glaube, dass es von Oracle übernommen wird. Die Sprachen ermöglichen die Berechnung von Funktionen über Schiebefenster des Streams (einschließlich Fenster der Größe 1). Diese Bachelorarbeit gibt einen aktuellen Überblick über die Sprache mit einigen Beispielen. Dieses Papier gibt einen Überblick über einige Stream-Verarbeitungssprachen, die nützlich sein sollten, um Links zu anderen verwandten Forschungsergebnissen zu finden.

Ich weiß, dass dies Ihre Frage nicht direkt beantwortet, aber es sollte Sie mit Recherchen in Verbindung bringen, die von Personen durchgeführt wurden, die von demselben Ausgangspunkt abweichen.

Dave Clarke
quelle
4

Diese Frage scheint mir ein bisschen kreisförmig. Wenn das Problem die gewünschte Eigenschaft hat, gibt es einen auf Skizzen und Zusammenführungen basierenden Algorithmus. Wie oben erwähnt, gibt es Arbeiten zu Clustering, Approximationen und Coresets, die dies ermöglichen. Außerdem ermöglichen die meisten Streaming-Algorithmen das Zusammenführen von Streams, indem nur (konzeptionell) ein Stream mit dem anderen verkettet wird.

Ich bin mir auch nicht sicher, ob Top-K-Streaming-Algorithmen zusammengeführt werden können - aber ich könnte mich irren.

Sariel Har-Peled
quelle
Top-k sind trivial zusammenführbar: Um zwei Listen mit k Elementen zusammenzuführen, führen Sie sie zusammen und nehmen k letzte Elemente des Ergebnisses nützliches Problem, zum Beispiel für die verteilte Berechnung von etwas wie einer Facebook-Wand)
jkff
3

Es tut mir leid, dass Sie sich damit nicht auskennen, aber ich dachte, Sie sollten sich einige Arbeiten zur verteilten kontinuierlichen Überwachung von Streams ansehen, bei denen Sie mehrere Streams erhalten. Ziel ist es, eine aggregierte Statistik an einer zentralen Überwachungsstelle zu überwachen und gleichzeitig die Kommunikation zu minimieren. Das Modell klingt für mich eng mit Ihrer Motivation verbunden. Schauen Sie sich die Referenzen in Muthus Buch an . Ein Papier ist dies .

Gangulys Artikel ist auch sehr interessant.

Sasho Nikolov
quelle