Streaming Data: Das Modell Berechnungen, bei fortlaufend einströmenden Daten (xt | t > 0), sind in Echtzeit zu erbringen. Beispiele sind: - Verkehrsmessungen im Internet, - Datenanalyse in der Abwehr einer Denial-of-Service Attacke, - Verarbeitung von durch Satelliten erfassten Daten, oder - fortlaufende Protokollierung von Telefonverbindungen durch weltweit agierende Telefonunternehmen und die damit verbundenen Reaktionen auf überlastete Leitungen. Das Modell 1 / 74 Algorithmische Fragestellungen (1/2) Erstellung von Stichproben: I I Stichproben reduzieren die Größe der Datenmenge und sind deshalb ein wichtiges Hilfsmittel für viele einfache Probleme. Beachte, dass sich Stichproben dynamisch mit dem Datenstrom ändern müssen. Häufigkeitsanalyse für Datenströme: I Wenn au = | {i | xi = u} | die Häufigkeit des Schlüssels u ist, dann berechne das k te Häufigkeitsmoment X Hk = aku . I H0 ist die Anzahl verschiedener Schlüssel, H1 die Anzahl der bisher gesehenen Schlüssel. H2 misst wie gleichmäßig n Daten (auf m verschiedene Schlüssel) verteilt sind: u∈U I F F Das Modell 2 2 Es ist m · mn = nm 6 H2 6 n2 . Kleine Werte von H2 implizieren eine gleichmäßige Verteilung. 2 / 74 Algorithmische Fragestellungen (2/2) Zeitfenster: Um das Verhalten eines Datenstroms in der jüngsten Vergangenheit bestimmen zu können, wertet man Datenströme in Zeitfenstern aus. Entwickle Methoden, um die quantitative Analyse nach dem Verschwinden veralteter und dem Erscheinen junger Schlüssel zu aktualisieren. Das Modell 3 / 74 Reservoir Sampling: Stichproben für Datenströme Stichproben Reservoir Sampling 4 / 74 Reservoir Sampling Berechne eine ohne Ersetzung gleichverteilt gezogenen Stichprobe S ⊆ { (i, xi ) | 1 6 i 6 n } des Datenstroms (xi | i). (1) T sei eine obere Schranke für die Größe der Stichprobe. Der Parameter t zählt die bisher gesehenen Schlüssel. Setze t = 0 und STICHPROBE= ∅. (2) Durchlaufe die Schlüssel nacheinander: (2a) Setze t = t + 1. (2b) t 6 T : Füge den Schlüssel in STICHPROBE ein. (2c) t > T : Werfe eine Münze mit Erfolgswahrscheinlichkeit F F T t . Bei einem Erfolg entferne einen zufällig aus STICHPROBE gewählten Schlüssel; der aktuelle Schlüssel wird eingefügt. Bei einem Misserfolg wird nichts unternommen. Kommentar: Die Stichprobengröße T bleibt unverändert. Stichproben Reservoir Sampling 5 / 74 Analyse Für alle t > T : Jede T -elementige Teilmenge X ⊆ {(i, xi ) | 1 6 i 6 t} t tritt mit Wahrscheinlichkeit 1/ T als Stichprobe auf. Beweis durch Induktion nach t: Die Aussage ist für t = T richtig. Wir nehmen an, dass die Aussage für t − 1 richtig ist. I I I (t, xt ) wird mit Wahrscheinlichkeit p = Tt aufgenommen. p ist die Wahrscheinlichkeit, dass (t, xt ) in einer zufälligen T -elementigen Teilmenge X ⊆ {(i, xi ) | 1 6 i 6 t} enthalten ist, denn t −1 t T / = . T −1 T t Wir erhalten eine T -elementige Stichprobe, wenn wir - mit Erfolgswahrscheinlichkeit Tt entscheiden, ob (t, xt ) gewählt wird. - Wenn (t, xt ) nicht gewählt wird, dann wähle eine zufällige, T -elementige Stichprobe aus der Menge {(i, xi ) | 1 6 i 6 t − 1}: Wende die Induktionshypothese an. Und wenn (t, xt ) gewählt wird? Stichproben Reservoir Sampling 6 / 74 Wenn (t, xt ) gewählt wird: Dann ist eine zufällige Stichprobe mit T − 1 Elementen aus der Menge {(i, xi ) | 1 6 i 6 t − 1} zu wählen. Was macht Reservoir Sampling? I I I Die alte Stichprobe X ist eine zufällige T -elementige Teilmenge von {(i, xi ) | 1 6 i 6 t − 1}. Reservoir Sampling entfernt ein zufälliges Element aus X und erhält damit eine zufällige Stichprobe aus {(i, xi ) | 1 6 i 6 t − 1} mit T − 1 Elementen. Diese modifizierte Stichprobe wird um (t, xt ) vergrößert und wir erhalten eine zufällige T -elementige Stichprobe X . Reservoir Sampling funktioniert. Stichproben Reservoir Sampling 7 / 74 Approximative Berechnung des Medians Stichproben Median Berechnung 8 / 74 Berechnung des approximativen Medians 1 Benutze Reservoir Sampling, um eine Stichprobe S der Größe s zu ziehen. 2 Bestimme den Median M von S und gib M als Approximation des tatsächlichen Medians aus. - δ, ε ∈ [0, 1] seien vorgegeben. - Arbeite mit einer Stichprobe der Größe 1 1 s = c · 2 · ln δ ε für ein hinreichend großes c. Dann liegt der Rang des ausgegebenen Schlüssels mit Wahrscheinlichkeit > 1 − δ in dem Intervall [ n2 − ε · n, n2 + ε · n]. Stichproben Median Berechnung 9 / 74 Analyse xunten (bzw. xoben ) sei der Schlüssel vom Rang ( 12 − ε) · n (bzw. Rang ( 12 + ε) · n). Wir haben nur Pech, wenn 50% aller Schlüssel der Stichprobe unterhalb von xunten (bzw. oberhalb von xoben ) liegen. I I I I Ein Schlüssel kleiner als xunten wird mit Wahrscheinlichkeit ( 12 − ε) gezogen. Die erwartete Anzahl dieser „kleinen” Schlüssel ist deshalb höchstens ( 12 − ε) · s. ε Wir haben also nur Pech, wenn sogar 12 · s = ( 12 − ε) · s · (1 + 1/2−ε ) kleine Schlüssel gezogen werden. Mit der Chernoff-Schranke passiert dies mit Wahrscheinlichkeit 2 höchstens e−Ω(ε ·s) . 2 e−Ω(ε ·s) 6 δ gilt, falls ε2 · s = Ω(ln δ1 ). Die Behauptung folgt, da die Anzahl der „großen” Schlüssel ein analoges Verhalten zeigt. Stichproben Median Berechnung 10 / 74 Clustering Stichproben Clustering 11 / 74 Clustering: Das k -Zentren Problem - Ein vollständiger ungerichteter Graph G = (V , E) und eine Metrik d : V 2 → R>0 ist gegeben. - Für ein fixiertes k bestimme eine Menge Z ⊆ V von k Knoten, so dass der maximale Abstand zu einem Zentrum, also max min d(v, w), v∈V w∈Z kleinstmöglich ist. Minimiere den Radius, also den größten Abstand eines Punktes vom nächstliegenden Cluster-Zentrum. Die Sprachenversion des k -Zentren Problems ist NP-vollständig. Bestimme eine approximative Lösung! Stichproben Clustering 12 / 74 Clustering für Datenströme 1 Die Zahl k der erlaubten Cluster-Zentren ist gegeben ebenso wie die Metrik d. Die Folge (xj | j) bezeichne den Datenstrom. 2 Benutze Reservoir Sampling, um eine Stichprobe S der Größe s zu ziehen. 3 Setze Z = {xj } für einen beliebigen Schlüssel xj ∈ S. Wiederhole k − 1 mal: I I 4 Bestimme einen Schlüssel xi ∈ S, dessen minimaler Abstand zu einem Schlüssel in Z größtmöglich ist. Füge xi in die Menge Z ein. Z wird als Menge der Cluster-Zentren ausgegeben. Stichproben Clustering 13 / 74 Analyse Das Clustering ist 2-approximativ auf der Stichprobe. Der optimale Radius sei opt. Angenommen, es gibt einen Punkt p ∈ S mit einem Abstand von größer als 2· opt zu allen Punkten in Z . I I Nach Konstruktion von Z haben je zwei Punkte in Z ∪ {p} einen Abstand von größer als 2 · opt. Die Punkte aus Z ∪ {p} gehören zu verschiedenen Clustern der optimalen Lösung: F I Wenn ein Clusterpunkt y der optimalen Lösung nächstliegender Punkt für zwei Elemente u, v ∈ Z ∪ {p} ist, dann ist d(u, v ) 6 d(u, y ) + d(y , v ) 6 2·opt. Die optimale Lösung hat nur k Clusterpunkte: Widerspruch. Stichproben Clustering 14 / 74 Der Algorithmus funktioniert für die Stichprobe, aber wie gut ist die Stichprobe? Stichproben Clustering 15 / 74 Das Resultat Ein Datenstrom der Länge n sei gegeben. - Wähle eine Stichprobe der Größe s = k ·ln n+ln( δ1 ) . ε - Dann ist unser Clustering mit Wahrscheinlichkeit mindestens 1 − δ auf einer Teilmenge der Größe (1 − ε) · n 2-approximativ. Warum müssen wir eine kleine Menge von Punkten ausschließen? I Einige wenige Ausreißer gehören hochwahrscheinlich nicht zur Stichprobe. Stichproben Clustering 16 / 74 Die Wahrscheinlichkeit schlechter Zentren - Sei opt der optimale Radius. - Sei Z eine „schlechte“ Zentrenmenge: Die Menge Weitweg(Z ) = {xi | d(xi , Z ) > 2 · opt}, also die Menge aller Punkte mit einem Abstand von mehr als 2· opt von ihrem nächstliegenden Zentrum in Z , habe mehr als ε · n Elemente. Mit welcher Wahrscheinlichkeit verfehlt die Stichprobe S die Menge Weitweg(Z )? (1 − ε)n s ) = (1 − ε)s n 1 6 e−ε·s = e−(k ·ln n+ln( δ )) = δ · n−k n 6 δ/ . k prob[ S ∩ Weitweg(Z ) = ∅ ] 6 ( Und wenn Weitweg(Z ) getroffen wird? Stichproben Clustering 17 / 74 Wenn die Stichprobe S die Menge Weitweg(Z ) trifft: - Dann gibt es s ∈ S mit d(s, z) > 2opt für alle z ∈ Z . - Aber wir berechnen ein Clustering, das auf Stichprobe S 2-approximativ oder besser ist: Widerspruch zur Definition von opt. Die Wahrscheinlichkeit irgendeine schlechte Zentrenmenge zu wählen, ist somit höchstens n n · δ/ = δ. k k Unser Clustering wird mit Wahrscheinlichkeit mindestens 1 − δ eine Zentrenmenge Z mit |Weitweg(Z )| 6 ε · n bestimmen und das war zu zeigen. Stichproben Clustering 18 / 74 Was können Stichproben nicht? Stichproben Die Grenzen 19 / 74 Die Grenzen der Stichproben-Methode Bestimme die Anzahl verschiedener Schlüssel approximativ. Betrachte alle (deterministischen oder probabilistischen) Algorithmen zur Stichproben-Erstellung, die nur r << n Schlüssel inspizieren. Reservoir Sampling wird erfasst. Können diese Algorithmen die beiden folgenden Szenarien voneinander unterscheiden? I I Szenario 1 besteht aus der nur mit Einsen besetzten Folge. Szenario 2 besteht aus allen Folgen, für die jedes i ∈ {2, . . . , k } genau einmal auftritt. Alle restlichen Folgenelemente haben den Wert 1. Für eine approximative Bestimmung der Anzahl verschiedener Schlüssel muss ein Algorithmus beide Szenarien voneinander unterscheiden. Stichproben Die Grenzen 20 / 74 Unterscheidung der beiden Szenarien Sei A ein Algorithmus und sei Xi die Zufallsvariable, die den iten von A ausgewählten Schlüssel als Wert besitzt. Dann gilt n−i −k +1 prob[ Xi = 1 | X1 = X2 = · · · = Xi−1 = 1 ] = , n−i +1 wenn nur Eingaben des Szenarios 2 auftreten. Wir betrachten Szenario 2. Angenommen, die ersten i − 1 inspizierten Schlüssel besitzen sämtlich den Wert 1: I I Von den n − k Schlüsseln mit Wert 1 verbleiben somit n − k − (i − 1) noch nicht inspizierte Schlüssel mit Wert 1. Aber insgesamt n − (i − 1) Schlüssel wurden noch nicht inspiziert und die Behauptung folgt. Stichproben Die Grenzen 21 / 74 Wie wahrscheinlich sind Stichproben nur mit Einsen? Sei I das Ereignis, dass alle r inspizierten Schlüssel den Wert 1 besitzen. prob[ I ] = Πri=1 prob[ Xi = 1 | X1 = X2 = · · · = Xi−1 = 1 ] n−i −k +1 = Πri=1 n−i +1 n−r −k +1 r n−r −k r > > n−r +1 n−r r 2·k ·r k k falls n−r = 1− > e− n−r , 6 12 , n−r denn 1 − z > e−2·z für 0 6 z 6 21 . Stichproben Die Grenzen 22 / 74 Wie wahrscheinlich sind Stichproben nur aus Einsen? 2·k ·r Es ist prob[ I ] > e− n−r , falls Wir setzen k = Es ist k n−r 6 - Es gelte k = 1 2 n−r 2·r k n−r 6 12 . · ln(2) und prob[ I ] > 1 2 folgt. für r > 2. n−r 2·r · ln(2) sowie r > 2. - Wenn Algorithmus A nur r Schlüssel inspiziert, dann bestimmt A mit Wahrscheinlichkeit > 1/2 eine Stichprobe nur aus Einsen, obwohl der Datenstrom k verschiedene Schlüssel besitzt. Stichproben Die Grenzen 23 / 74 Kommunikation Das 2-Parteien Kommunikationsmodell: - Zwei Parteien, Alice und Bob, besitzen Eingaben x bzw. y , wobei weder Alice noch Bob die Eingabe des Partners kennt. - Alice schickt eine Nachricht message(x) an Bob. Bob muss das Ergebnis nur in Abhängigkeit von seiner Eingabe y und der von Alice geschickten Nachricht berechnen. - Alice und Bob besitzen, im Rahmen der ihnen zur Verfügung stehenden Informationen, eine unbeschränkte Rechenkraft. Deterministische oder probabilistische Protokolle bestimmen die Nachricht von Alice und die von Bob berechnete Antwort. Das Ziel: I I Berechne einen Funktionswert f(x, y) zumindest approximativ. Minimiere die Länge der längsten von Alice geschickten Nachricht. Häufigkeitsmomente Kommunikation 24 / 74 Kommunikation: Ein Beispiel - Alice erhält x ∈ {0, 1}n , Bob erhält y ∈ {0, 1}n . - Entscheide, ob x = y gilt. Deterministische Kommunikation: I I I Angenommen, Alice schickt für die beiden Zeichenketten x1 , x2 ∈ {0, 1}n dieselbe Nachricht m. Bob weiss nicht, ob Alice die Eingabe x1 oder x2 besitzt und kann nicht fehlerfrei arbeiten. Alice wird Nachrichten mit mindestens n Bits verschicken müssen. Probabilistische Kommunikation: I I Alice und Bob interpretieren ihre Eingaben als Zahlen 0 6 x, y 6 2n − 1. Alice würfelt eine Primzahl p 6 n2 aus und verschickt das Paar (x mod p, p) mit O(log2 n) Bits. F F Bob entscheidet auf x = 6 y , wenn x mod p = 6 y mod p: Kein Fehler. Bob entscheidet auf x = y , wenn x mod p = y mod p: Kleiner Fehler. Häufigkeitsmomente Kommunikation 25 / 74 Kommunikation und Streaming Data Warum interessiert uns das Kommunikationsmodell? Sei A ein Streaming Data Algorithmus, der auf Eingaben x1 x2 mit x1 , x2 ∈ {0, 1}n/2 höchstens Speicherplatz s(n) benutzt. I Simuliere die Berechnung von A durch ein Kommunikationsprotokoll: Alice erhält x1 , Bob erhält x2 . I Wenn A die Eingabe x1 abgearbeitet hat, sei w ∈ {0, 1}s(n) der Inhalt des Speichers. F F F Alice kennt w, verschickt w und den gegenwärtigen Zustand an Bob. Bob kann die Berechnung von A erfolgreich zu Ende führen. Nachrichten mit s(n) + O(1) Bits reichen aus. Häufigkeitsmomente Kommunikation 26 / 74 Kommunikation: Ein erstes Fazit Die Funktion fn : {0, 1}n → X sei zu berechnen. - Jeder Algorithmus, der f deterministisch oder probabilistisch mit Speichergröße s(n) berechnet, kann durch ein deterministisches oder probabilistisches Kommunikationsprotokoll simuliert werden, das Nachrichten mit höchstens s(n) + O(1) Bits verschickt. - Wenn Kommunikationsprotokolle mindestens ω(s) Bits benötigen, dann kann es keine Streaming Data Algorithmen mit Speichergröße O(s) geben! Probabilistische Kommunikation kann sehr viel effizienter als deterministische Kommunikation sein. Häufigkeitsmomente Kommunikation 27 / 74 ε-approximative Berechnungen Für Mengen A und B ist f : A × B → R zu berechnen. (a) Ein deterministisches Protokoll heißt genau dann ε-approximativ, wenn Bob für jedes Eingabepaar (x, y ) ein Ergebnis a(x, y ) mit (1 − ε) · f (x, y ) 6 a(x, y ) 6 (1 + ε) · f (x, y ) berechnet. (b) C ε (f ) ist die Länge der längsten Nachricht eines besten ε-approximativen deterministischen Protokolls für f . (c) Ein probabilistisches Protokoll ist ε-approximativ mit Fehler δ, wenn Bob für alle Eingaben (x, y ) mit Wahrscheinlichkeit mindestens 1 − δ ein Ergebnis a(x, y ) mit (1 − ε) · f (x, y ) 6 a(x, y ) 6 (1 + ε) · f (x, y ) berechnet. (d) Cδε (f ) ist die Länge der längsten Nachricht eines besten ε-approximativen probabilistischen Protokolls, das f mit Fehler δ berechnet. Häufigkeitsmomente Kommunikation 28 / 74 Das Disjunktheitsproblem - Im Disjunktheitsproblem der Größe n erhalten Alice und Bob Inzidenzvektoren der Teilmengen x, y ⊆ {1, . . . , n}. - Es ist zu entscheiden, ob x ∩ y 6= ∅ gilt. Definiere die Funktion Dn durch 1 x ∩y =∅ Dn (x, y ) = 0 sonst. Man kann zeigen: Cδε (Dn ) = Ω(n) für alle ε, δ < 12 : Eine randomisierte Lösung des Disjunktheitsproblems ist selbst dann schwierig, wenn die Fehlerwahrscheinlichkeit δ eine beliebige Konstante kleiner als 12 ist. Hat diese negative Aussage zum Beispiel Konsequenzen für die Berechnung der größten Häufigkeit? Häufigkeitsmomente Kommunikation 29 / 74 Bestimmung der größten Häufigkeit - ε, δ < 12 seinen beliebig. A sei ein probabilistischer Algorithmus, der die größte Häufigkeit ε-approximativ mit Fehlerwahrscheinlichkeit höchstens δ im Streaming-Data Modell berechnet. - Dann benötigt A die Speichergröße Ω(m), wenn m die Anzahl verschiedener Schlüssel ist. Der probabilistische Algorithmus A berechne die Häufigkeit des häufigsten Schlüssels approximativ. Wir lösen das Disjunkheitsproblem mit Hilfe von A: I I I Alice und Bob erhalten die Teilmengen x, y ⊆ {1, . . . , m}. Für die Funktion Dm des Disjunkheitsproblems gilt: 1 1 = größte Häufigkeit für (x, y ), Dm (x, y ) = 0 2 6 größte Häufigkeit für (x, y ) Aber es ist Cδε (Dm ) = Ω(m) und die Behauptung folgt. Häufigkeitsmomente Kommunikation 30 / 74 Häufigkeitsmomente - Sei δ < 12 beliebig und sei A ein probabilistischer Algorithmus, der Hk (für k 6= 1) exakt mit Fehlerwahrscheinlichkeit höchstens δ im Streaming-Data Modell berechnet. - Dann benötigt A Speicherkomplexität mindestens Ω(m), wenn m die Anzahl verschiedener Schlüssel ist. Wir lösen das Disjunktionsproblem mit Hilfe von A. Setze m∗ = |x| + |y | und beachte für k = 0 1 H0 = m∗ Dm (x, y ) = 0 H0 < m∗ , beziehungsweise für k > 1 Dm (x, y ) = Häufigkeitsmomente 1 Hk = m ∗ 0 Hk > m ∗ . Kommunikation 31 / 74 Das zweite Häufigkeitsmoment X H2 = au2 u∈U Häufigkeitsmomente H2 32 / 74 Berechnung von H2 Das Ziel: Bestimme H2 = X au2 , u∈U wobei au = | {i | xi = u} | die Häufigkeit des Schlüssels u ist. Warum ist die Bestimmung des zweiten Häufigkeitsmoments H2 interessant? I I Je größer H2 , umso unregelmäßiger sind die Schlüssel verteilt. H2 misst die Regelmäßigkeit der Schlüsselverteilung. Eine exakte Berechnung von H2 gelingt nur, wenn die Menge aller ankommenden Schlüssel klein ist: I Vermerke die individuellen Häufigkeiten in einer Hashtabelle. Was tun, wenn zu viele Schlüssel „im Spiel sind“? Häufigkeitsmomente H2 33 / 74 Sketching H2 1 Bestimme eine zufällige Hashfunktion h : U → {−1, 1} 2 und setze SUMME = 0. Wiederhole für alle Daten xi Setze SUMME = SUMME +h(xi ). SUMME2 ist eine Approximation von H2 . Warum? Häufigkeitsmomente H2 34 / 74 Der Erwartungswert von SUMME2 E[ SUMME2 ] = H2 . E[ SUMME2 ] = E[ ( m X au · h(u))2 ] u=1 = E[ = E[ m X u=1 m X au2 · h(u)2 ] + E[ X au · av · h(u) · h(v ) ] u6=v au2 ] = u=1 m X au2 = H2 , u=1 denn h(u)2 = 1 für jedes u und E[ h(u) · h(v ) ] = 0 für u 6= v . Häufigkeitsmomente H2 35 / 74 Wie genau ist die Schätzung? - Die Ungleichung von Tschebyscheff: Große Abweichungen vom Erwartungswert sind unwahrscheinlich, wenn die Varianz klein ist. - Wir müssen die Varianz von SUMME2 bestimmen! V [ SUMME2 ] = E[ SUMME4 ] − E[ SUMME2 ]2 . P 4 Es ist E[ SUMME4 ] = E[ ( m u=1 au · h(u)) ]: I I Beim Ausmultiplizieren treten Terme der Form E[ h(u1 ) · h(u2 ) · h(u3 ) · h(u4 ) ] auf. Wir nehmen vierfache Unabhängigkeit an! E[ SUMME4 ] = E[ = Häufigkeitsmomente m X au4 · h(u)4 ] + u=1 m X au4 + u=1 X 4 · E[ au2 av2 · h(u)2 h(v )2 ] 2 u6=v 6· X au2 · av2 u6=v H2 36 / 74 Wie genau ist die Schätzung? E[SUMME4 ] = Pm 4 u=1 au +6· P u6=v au2 · av2 . und wir erhalten die Varianz 2 V [ SUMME ] = m X au4 +6· = 4· au2 · av2 − u6=v u=1 X X au2 · av2 62· m X !2 au2 u=1 H22 . u6=v Als Konsequenz der Tschebyscheff Ungleichung folgt prob[ |SUMME2 − H2 | > λ · H2 ] 6 2 · H22 2 = 2 2 2 λ . λ · H2 Große Abweichungen haben eine zu hohe Wahrscheinlichkeit! Häufigkeitsmomente H2 37 / 74 Boosting Wähle k Hashfunktionen h1 , . . . , hk . Pk 2 SUMMEi Gib SCHÄTZUNGk = i=1 k aus. I I I Der Erwartungswert bleibt stabil, aber die Varianz fällt um Faktor k . 2 Es ist deshalb prob[ |SCHÄTZUNGk − H2 | > λ · H2 ] 6 k ·λ 2. 8 1 Für k = λ2 ist die Fehlerwahrscheinlichkeit höchstens 4 . Wiederhole den „Sketching Algorithmus“ k ∗ = k · s mal. I I Teile die Summenergebnisse in s Klassen von je k Wiederholungen auf und berechne das Mittel für jede Klasse. Bestimme den Median M der s Schätzungen. Es ist |M − H2 | > λ · H2 mit Wahrscheinlichkeit höchstens 2−Ω(s) . - Wenn |M − H2 | > λ · H2 , dann liegt mindestens die Hälfte aller Einzelschätzungen außerhalb. - Mindestens doppelt so viele Einzelschätzungen wie erwartet liegen außerhalb: Wende die Chernoff-Schranke an. Häufigkeitsmomente H2 38 / 74 Das Ergebnis - Eine bis auf den Faktor 1 + λ exakte Schätzung von H2 wird mit Wahrscheinlichkeit mindestens 1 − δ erreicht. - Die Speicherplatzkomplexität und die Laufzeit pro Schlüssel ist durch O( λ12 · log2 ( 1δ )) beschränkt. Es ist |M − H2 | > λ · H2 mit Wahrscheinlichkeit höchstens 2−Ω(s) . Setze s = log2 ( 1δ ) und die Fehlerwahrscheinlichkeit ist durch O(δ) beschränkt. Es ist k = λ82 : Pro Schlüssel müssen O( ausgewertet werden. log2 ( δ1 ) ) λ2 Hashfunktionen H2 lässt sich schnell und speichereffizient approximieren, solange keine zu scharfe Approximation verlangt wird. Häufigkeitsmomente H2 39 / 74 Das nullte Häufigkeitsmoment |{ u ∈ U | au > 1 }| Häufigkeitsmomente H0 40 / 74 Die Bestimmung von H0 Wenn die Hauptspeichergröße mindestens Ω(n) beträgt: I Benutze Hashing. Wenn die Daten in den Sekundärspeicher passen: I Lege die Daten im Sekundärspeicher ab und sortiere zum Beispiel mit Mergesort. Wenn selbst der Sekundärspeicher überfordert ist: I I Wir müssen eine approximative Berechnung von H0 erlauben und benutzen randomisierte Algorithmen. Häufigkeitsmomente H0 41 / 74 Hashing für die Berechnung von H0 1 Die Vorbereitungsphase: I I I 2 Durchlaufe die Eingabe (x1 , . . . , xn ): I 3 Wähle eine natürliche Zahl T > 1 und eine zufällige Hashfunktion h : U → {1, . . . , T }. Setze die boolesche Variable GROSS auf falsch. Wenn h(xi ) = T für ein i, dann setze GROSS auf wahr. Gib die Antwort GROSS aus. Häufigkeitsmomente H0 42 / 74 Eine Diskussion Die Intuition: I I I Die Wahrscheinlichkeit, dass h(x) = T gilt, ist T1 . Wenn der Hashwert T in t Versuchen nicht erreicht wird, dann geschieht dies mit Wahrscheinlichkeit 1 T −1 t ( ) = (1 − )t ≈ exp−t/T , T T vorausgesetzt, alle t Zahlen sind paarweise verschieden. Für t 6 T verschiedene Schlüssel wird die Wahrscheinlichkeit eines „Treffers“ beobachtbar kleiner als für t > (1 + ε) · T Schlüssel sein. Schätzungen mit Hilfe dieses Verfahrens sind ungenau und besitzen substantielle Fehlerwahrscheinlichkeiten. I I Arbeite mit mehreren, unabhängig von einander ausgewürfelten Hashfunktionen und variiere den Schwellenwert T in Potenzen von 1 + ε. Häufigkeitsmomente H0 43 / 74 Stichproben verschiedener Schlüssel Häufigkeitsmomente H0 44 / 74 H0 und Stichproben Eine Stichprobe gleichverteilt gezogener Schlüssel ist ungeeignet. Berechne stattdessen eine Stichprobe verschiedener Schlüssel. Und wenn die Stichprobe überläuft? I I Weise jedem Schlüssel eine Priorität zu. Wenn die Stichprobe S alle Schlüssel der Mindestpriorität P enthält und wenn S überläuft, dann setze die Mindestpriorität auf P + 1: Entferne alle Schlüssel der Priorität P aus der Stichprobe. - Wie sollten wir Prioritäten berechnen? - Von der Anzahl verschiedener Schlüssel der Priorität mindestens P müssen wir auf die Anzahl der verschiedenen Schlüssel rückschließen können. ∗ Prioritäten müssen randomisiert berechnet werden. Häufigkeitsmomente H0 45 / 74 Berechnung der Prioritäten Die Zweierpotenz m sei mindestens so groß wie die Anzahl aller möglichen verschiedenen Schlüssel. - Wähle Parameter A ∈ {1, . . . , m − 1} und B ∈ {0, . . . , m − 1} zufällig. - Arbeite mit der Hashfunktion hA,B (u) = (A · u + B) mod m. - Die Prioritätszuweisung: p(u) = die Anzahl der führenden Nullen in der Binärdarstellung von hA,B (u). Die Binärdarstellung von hA,B (u) werde durch führende Nullen auf die exakte Länge log2 m aufgefüllt. Der relative Anteil der Schlüssel u mit p(u) > k beträgt 2−k . Häufigkeitsmomente H0 46 / 74 Der Algorithmus 1 Würfle eine Hashfunktion hA,B aus. 2 Setze PRIORITÄT= 0 und STICHPROBE= ∅. S sei die Maximalgröße einer Stichprobe. 3 Wiederhole für i = 1, . . . ,: I I 4 Füge xi zur Menge STICHPROBE hinzu, falls p(xi ) > PRIORITÄT. Solange STICHPROBE mehr als S Schlüssel besitzt, entferne alle Schlüssel x mit p(x) = PRIORITÄT und erhöhe PRIORITÄT um 1. Setze p = PRIORITÄT und gib die Schätzung 2p · |STICHPROBE| aus. Häufigkeitsmomente H0 47 / 74 Analyse Es ist prob[ p(x) > p ] = 2−p . Wenn p die Priorität am Ende der Berechnung ist, gilt E[ |STICHPROBE| ] = E[ |{x | p(x) > p, es gibt i mit x = xi }| ] X = prob[ p(x) > p ] x ein Schluessel −p = 2 · Anzahl verschiedener Schlüssel. Also folgt E[ 2p · |STICHPROBE| ] = Anzahl verschiedener Schlüssel. Die Schätzung ist gut, wenn große Abweichungen vom Erwartungswert E[ |STICHPROBE| ] unwahrscheinlich sind. Häufigkeitsmomente H0 48 / 74 Die Tschebyscheff Ungleichung V sei die Varianz der Zufallsvariablen X . Dann gilt prob[ |X − E[X ]| > t ] 6 V . t2 Übungsaufgabe: var|STICHPROBE| 6 E[ |STICHPROBE| ]. Für E = E[ |STICHPROBE| ] ist prob[ | E − |STICHPROBE| | > ε · E ] = O( 1 E ). ) = O( 2 ε ·E ε2 · E 2 A = 2p · E gilt für die Anzahl A verschiedener Schlüssel: prob[ | A − 2p · |STICHPROBE| | > ε · A ] = prob[ 2p · | E − |STICHPROBE| | > ε · 2p · E ] = prob[ | E − |STICHPROBE| | > ε · E ] = O( Häufigkeitsmomente H0 1 ). ε2 · E 49 / 74 Zusammenfassung Mit Wahrscheinlichkeit höchstens O( ε21·E ) weicht die Schätzung um mehr als ε · A von der Anzahl A verschiedener Schlüssel ab. Wie lässt sich die Schätzung verbessern? Arbeite mit mehreren, unabhängig voneinander ausgewürfelten Hashfunktionen. Gib den Median der Schätzungen als endgültige Schätzung aus. I I Warum den Median? Der Einfluss von Ausreissern auf den Median ist nur schwach. Wir benutzen dasselbe Verfahren wie für die Bestimmung von H2 . Häufigkeitsmomente H0 50 / 74 Heavy Hitter Heavy Hitter: Schlüssel mit großer Häufigkeit 51 / 74 Heavy Hitter: Was geht und was nicht? - Wir wissen: Die Bestimmung eines Schlüssels mit großer Häufigkeit verlangt einen zu großen Speicher. - Übungsaufgabe: Deterministische Algorithmen benötigen Speichergröße Ω(m) bei m verschiedenen Schlüsseln, wenn der Schlüssel mit Häufigkeit größer als 50% zu bestimmen ist. Verlange nur, dass eine Menge K von höchstens p1 Schlüsseln berechnet wird, unter denen sich alle Schlüssel mit Häufigkeit größer als p% befinden. Wie bestimmt man einen Schlüssel mit Häufigkeit > 50%? I I Entferne Paare verschiedener Schlüssel. Der Mehrheitschlüssel verliert nie seine Mehrheitseigenschaft und wird bis zuletzt überleben. Heavy Hitter: Schlüssel mit großer Häufigkeit Zähleralgorithmus 52 / 74 Der Zähleralgorithmus 1 Der Datenstrom bestehe aus dem Vektor x = (x1 , x2 , . . . , xn ) mit xi ∈ {1, . . . , m}. 2 Die Menge K ist anfänglich leer und das Array “Zähler” ist auf Null initialisiert. For i = 1 to n do 3 (a) Wenn xi ∈ K , dann erhöhe den Zähler von xi um Eins. (b) Wenn xi 6∈ K , dann füge xi zu K hinzu und setze den Zähler von xi auf Eins. F Wenn K jetzt mehr als p1 Elemente besitzt, dann erniedrige alle Zähler um Eins und entferne alle Schlüssel mit Zählerstand Null. Übungsaufgabe: Alle Schlüssel mit Häufigkeit größer als p% liegen in K . Der Algorithmus rechnet in Linearzeit und die Menge K besteht aus höchstens 1/p Schlüsseln. Heavy Hitter: Schlüssel mit großer Häufigkeit Zähleralgorithmus 53 / 74 Eine verallgemeinerte Häufigkeitsanfrage - Der Datenstrom habe die Form ((xi , ci ) | i) mit ci > 0. P - H(x) = xk =x ck ist die verallgemeinerte Häufigkeit von x. Wir erhalten die konventionelle Häufigkeit für ci = 1. - Wir möchten H(x) mit einer „Ungenauigkeit“ von höchstens ε und einer Wahrscheinlichkeit von mindestens 1 − δ berechnen. Wir arbeiten mit k = dln( 1δ )e Hashfunktionen h1 , . . . , hk : U → {1, . . . , w} für e w= ε Zellen. Wir verwenden zählende Bloom-Filter, die den einzelnen Hashfunktionen disjunkte Teilarrays Z1 , . . . , Zk des Arrays Z = (Z1 , . . . , Zk ) zuweisen. I Jedes Zi besteht aus w Zellen. Heavy Hitter: Schlüssel mit großer Häufigkeit Bloom Filter Sketches 54 / 74 Der Bloom Filter Sketch 1 Die Arrays Z1 , . . . , Zk sind alle zu Null initialisiert. 2 Wiederhole: Wenn das Paar (xi , ci ) empfangen wird, dann setze für jedes j 6 k Zj [hj (xi )] = Zj [hj (xi )] + ci . 3 Eine verallgemeinerte Häufigkeitsfrage für Schlüssel x wird mit H 0 (x) = min16j6k Zj [hj (x)] beantwortet. Heavy Hitter: Schlüssel mit großer Häufigkeit Bloom Filter Sketches 55 / 74 Analyse (1/3) - Es ist stets H(x) 6 Zj [hj (x)] und H(x) 6 H 0 (x) folgt. - Mit welcher Wahrscheinlichkeit wird H 0 (x) zu groß? P Definiere die Zufallsvariable Kjx = y ∈U mit x6=y und hj (x)=hj (y ) H(y ). P Es ist prob[ H 0 (x) > H(x) + ε · y ∈U H(y ) ] X = prob[ ∀j 6 k : Zj [hj (x)] > H(x) + ε · H(y ) ] y ∈U = prob[ ∀j 6 k : H(x) + Kjx > H(x) + ε · X H(y ) ] y ∈U = prob[ ∀j 6 k : Kjx >ε· X H(y ) ] y ∈U = (prob[ Kjx > ε · X H(y ) ])k . y ∈U Heavy Hitter: Schlüssel mit großer Häufigkeit Bloom Filter Sketches 56 / 74 Analyse (2/3) prob[ H 0 (x) > H(x) + ε · P y ∈U H(y ) ] = (prob[ Kjx > ε · P y ∈U H(y ) ])k . Wie groß kann Kjx werden? Die Null-Eins Zufallsvariable Kjx (y ) nehme genau dann den Wert Eins an, wenn hj (x) = hj (y ). I Es ist E[Kjx (y )] 6 1/w für x 6= y . Wir schätzen den Erwartungswert von Kjx ab: X = E[ H(y ) ] = 6 y ∈U mit x6=y H(y ) · E[ Kjx (y ) ] y ∈U mit x6=y y ∈U: x6=y ,hj (x)=hj (y ) X X E[ Kjx ] H(y ) ε X e 6 · H(y ), denn w = . w e ε Heavy Hitter: Schlüssel mit großer Häufigkeit y ∈U Bloom Filter Sketches 57 / 74 Analyse (3/3) Wende die Markoff-Ungleichung pr[ |X | > a ] 6 E[|X |]/a an: prob[ H 0 (x) > H(x) + ε · X H(y ) ] y ∈U = (prob[ Kjx > ε · X H(y ) ])k y ∈U X ε X 6 ( · H(y ) / ε · H(y ))k = e−k 6 δ. e y ∈U Für k = dln( 1δ )e und w = e ε y ∈U gilt H(x) 6 H 0 (x) 6 H(x) + ε · X H(y ) y ∈U mit Wahrscheinlichkeit mindestens 1 − δ. Heavy Hitter: Schlüssel mit großer Häufigkeit Bloom Filter Sketches 58 / 74 Heavy Hitter: Zusammenfassung Der Zähleralgorithmus: Alle Schlüssel mit Häufigkeit größer als p% werden bestimmt; allerdings werden noch weitere, höchstens aber p1 Schlüssel ausgegeben. Der Algorithmus rechnet in Linearzeit. Der Bloom Filter Sketch: Für k = dln( 1δ )e und w = X H 0 (x) 6 H(x) + ε · H(y ) e ε gilt y ∈U mit Wahrscheinlichkeit mindestens 1 − δ. Höchstens O( 1ε · ln( 1δ )) Zellen werden benutzt und die Laufzeit pro Anfrage ist höchstens O(ln( 1δ )). In Anwendungen muss ε SEHR klein gewählt werden! Heavy Hitter: Schlüssel mit großer Häufigkeit Bloom Filter Sketches 59 / 74 Häufigkeitseigenschaften Eigenschaften 60 / 74 Eigenschaften von Häufigkeiten - Wir interpretieren Teilmengen En ⊆ {1, . . . , n} als Eigenschaften von Häufigkeiten: I Schlüssel x hat Eigenschaft En , falls die Häufigkeit von x –unter den ersten n Schlüsseln– in En liegt. Beispiel: En = {1, . . . , K } formalisiert die Eigenschaft „höchstens K -mal aufzutreten“. - En∗ = {xj | j 6 n und xj hat Eigenschaft En } ist die Menge der Schlüssel mit Eigenschaft En . Wenn Vn die Menge der verschiedenen Schlüssel (unter den ersten n) ist, dann ist |E ∗ | p[En ] = n |Vn | die Wahrscheinlichkeit von En . Wie scharf kann p[En ] approximiert werden? Eigenschaften 61 / 74 Der Jaccard Koeffizient Wir erinnern an den Jaccard Koeffizienten J(A, B) = |A ∩ B| . |A ∪ B| Es ist minπ (A) = minπ (B) mit Wahrscheinlichkeit J(A, B), wobei min(X ) = min{π(x) | x ∈ X }. π Es ist J(En∗ , Vn ) = |En∗ ∩Vn | |En∗ ∪Vn | = |En∗ | |Vn | = p[En ]. Als Konsequenz: prob[min(En∗ ) = min(Vn )] = p[En ]. π Eigenschaften π 62 / 74 Berechnung von p[En ] 1 Wähle zufällig k Permutationen π1 , . . . , πk . Setze minj (0) = ∞ sowie Zählerj = 0 für alle j 6 k . 2 Wenn xi+1 zu verarbeiten ist, dann wiederhole für jedes j 6 k (a) Berechne πj (xi+1 ). (b) Wenn πj (xi+1 ) < minj (i), dann setze minj (i + 1) = πj (xi+1 ) und Zählerj = 1. /* Der Schlüssel xi+1 tritt zum ersten Mal auf und sein Zähler wird deshalb auf Eins gesetzt. */ (c) Wenn πj (xi+1 ) = minj (i), dann setze Zählerj = Z-ahlerj + 1. /* Ein weiteres Vorkommen des minimalen Schlüssels xi+1 für πj : Sein Zähler wird inkrementiert. */ 3 k ∗ sei die Anzahl der Schlüssel minj (n) mit Eigenschaft En : I Gib k ∗ /k als Schätzung für p[En ] aus. Eigenschaften 63 / 74 Analyse (1/2) Definiere die Zufallsvariablen 1 minj (n) ∈ En∗ , Xj = 0 sonst. E[ Pk j=1 Xj ] = Pk j=1 E[Xj ] = k · p[En ]. X1 , . . . , Xk sind unabhängig: Die Chernoff-Schranke liefert prob[ | k X Xj − k · p[En ]| > ε · k · p[En ] ] 6 2 · e−k ·p[En ]·ε 2 /3 . j=1 Also folgt prob[ |k ∗ /k − p[En ]| > ε · p[En ] ] = prob[ |k ∗ − k · p[En ]| > ε · k · p[En ] ] 2 /3 6 2 · e−k ·p[En ]·ε Eigenschaften . 64 / 74 Analyse (2/2) prob[ |k ∗ /k − p[En ]| > ε · p[En ] ] 6 2 · e−k ·p[En ]·ε 2 /3 . Für eine ε-Approximation mit Fehlerwahrscheinlichkeit höchstens δ fordere 2 /3 2 · e−k ·p[En ]·ε 6 δ. Äquivalent dazu −k · p[En ] · ε2 /3 6 ln( 2δ ), bzw. k > 3 ε2 ·p[En ] · ln( 2δ ). 1 - Für k = O( ε2 ·p[E · ln( 1δ )) erreichen wir eine (1 + ε)-Approximation n] von p[En ] mit Wahrscheinlichkeit mindestens 1 − δ. - Die Laufzeit pro Schlüssel ist durch O(k ) und die Speicherplatzkomplexität durch O(k · log2 n) beschränkt. Eigenschaften 65 / 74 Wahrscheinlichkeit von Eigenschaften - Wir erreichen eine (1 + ε)-Approximation von p[En ] mit 1 Wahrscheinlichkeit mindestens 1 − δ für k = O( ε2 ·p[E · ln( 1δ )). n] - Die Laufzeit pro Schlüssel ist durch O(k ) und die Speicherplatzkomplexität durch O(k · log2 n) beschränkt. + Eine gute Approximation gelingt mit Min-Hashing relativ schnell und mit kleinem Speicher. - Allerdings darf die Eigenschaft nicht zu unwahrscheinlich sein: Die Laufzeit und die Speichergröße wächst mit p[E1 n ] . - Ein weiterer Wermutstropfen: Wir können nicht alle Schlüssel mit Eigenschaft En liefern, sondern nur eine kleine Auswahl. Eigenschaften 66 / 74 Zeitfenster Zeitfenster 67 / 74 Zeitfenster Die Fenstergröße N sei gegeben. - Wir betrachten einen Datenstrom und möchten die Anzahl „auffälliger“ Daten in einem Zeitfenster der Länge N zählen. - Wir modellieren dieses Problem als das Zählen der Einsen unter den letzten N Bits in einem Datenstrom von Nullen und Einsen. - Jeder deterministische Algorithmus, der die Anzahl der Einsen im Zeitfenster der Größe N mit relativem Fehler ε bestimmt, benötigt mindestens Speicherplatz Ω( 1ε log22 εN). - Wir zeigen, dass Speicherplatz O( 1ε log22 N) ausreicht. Zeitfenster 68 / 74 Die Datenstruktur der Körbe Wir arbeiten mit Körben K1 , . . . Km . Der Korb Ki speichert die Anzahl der Einsen in einem sich dynamisch ändernden Zeitintervall Zi . Die Zeitintervalle Z1 , . . . , Zm bilden eine disjunkte Zerlegung eines {1, . . . , N} umfassenden Zeitraums. Die Zeitintervalle sind zeitlich geordnet Z1 < · · · < Zm , wobei I I Z1 den gegenwärtigen Zeitpunkt und Zm den letzten interessanten Zeitpunkt N der Vergangenheit enthält. Korb Ki speichert I I den Zeitstempel des Korb, nämlich das Alter der jüngsten erfassten Eins im Zeitintervall Zi und und die Korbgröße Gi , also die Anzahl der Einsen im Zeitintervall Zi . Die Korbgrößen Gi sind stets Zweierpotenzen und die Körbe K1 . . . , Km besitzen aufsteigende Korbgrößen. Zeitfenster 69 / 74 Zeitstempel Der Zeitstempel verrät, ob ein Korb noch aktuell ist: Wenn der Zeitstempel des letzten Korbs größer als N ist, dann kann der Korb entleert und wiederverwandt werden. Für alle Körbe kennen wir die exakte Anzahl der Einsen ihres Zeitintervalls, nicht aber das Ende des Zeitintervalls. I Wenn der letzte Korb Km noch aktuell ist, dann folgt nur m−1 X i=1 I I Gi + 1 6 Exakt 6 m−1 X Gi + Gm . i=1 Gm 2 ab. Pm−1 Wir geben die Schätzung i=1 Gi + Um den relativen Fehler durch 2ε zu beschränken, genügt die Forderung Gm /2 (Gm − 1)/2 6 2 · ε, bzw. stärker Pm−1 6 ε. Pm−1 i=1 Gi + 1 i=1 Gi + 1 Zeitfenster 70 / 74 Die Größe des letzten Korbs (1) Die Forderung (Gm −1)/2 Pm−1 i=1 Gi +1 6 ε soll stets erfüllt sein! (2) Fordere für k = d 1ε e: Wenn 2h die Korbgröße des letzten Korbs Km ist, dann gibt es zu jedem h0 < h mindestens k2 und höchstens k h0 2 + 1 Körbe der Größe 2 . (1) folgt aus (2): Wenn Korb Km die Korbgröße 2r besitzt, dann gibt es mindestens k r −1 . 2 Körbe der Größen 1, 2, 4, . . . , 2 Also gilt m−1 X i=1 Zeitfenster r −1 k X i k 1 Gm − 1 Gi + 1 > · 2 = · (2r − 1) > · . 2 2 ε 2 i=0 71 / 74 Der Algorithmus 1 Zwei Variablen „TOTAL” und „LETZTER” speichern die Gesamtgröße aller Körbe, bzw. den Index des letzten Korbs. 2 Wenn der letzte Korb nicht aktuell ist, dann entferne ihn und aktualisiere TOTAL und LETZTER. Wenn das neue Bit eine Null ist, dann wird es ignoriert. Sonst: 3 I I 4 erzeuge einen neuen Korb mit Korbgröße 1, halte den Zeitpunkt fest und erhöhe TOTAL um eins. Gibt es jetzt k2 + 2 Körbe der Korbgröße 1, dann vereinige die beiden ältesten Körbe zu einem Korb der Größe 2 und bestimme den Zeitstempel des neuen Korbs. I I I Nach Verschmelzung gibt es möglicherweise zu viele Körbe der Größe 2. Also setze die Überprüfung für Korbgröße 2 fort.... und aktualisiere gegebenenfalls die Variable LETZTER. Zeitfenster 72 / 74 Ein Beispiel Es sei k = 2. Die Korbgrößen seien (1, 1, 2, 4, 4, 8, 8, 16, 32). Wenn eine neue Eins eintrifft, dann I fasse Körbe zusammen, um (1, 2, 2, 4, 4, 8, 8, 16, 32) zu erhalten. Nach zwei weiteren Einsen und der entsprechenden Korbzusammenfassung ergibt sich dann der Vektor (1, 2, 4, 8, 16, 16, 32). Jedes neue Bit verursacht im worst-case O(log2 N) Operationen, während die durchschnittliche Laufzeit sogar nur konstant ist. Zeitfenster 73 / 74 Das Ergebnis - Für jedes N wird die Anzahl der Einsen unter den letzten N Bits mit relativem Fehler höchstens 2ε bestimmt. - Die worst-case Laufzeit pro Bit ist O(log2 N) und die amortisierte Laufzeit ist konstant. - Die Speicherplatzkomplexität ist durch O( 1ε · log22 N) beschränkt. Die Speichergröße: Es gibt bis zu O(k · log2 N) Körbe mit k = d 1ε e. Jeder Korb speichert sein Alter mit bis zu O(log2 N) Bits. Zeitfenster 74 / 74