Data Mining 3-1. Kapitel 3: Mining Data Streams. Johannes Zschache Wintersemester 2018/19

Ähnliche Dokumente
Data Mining 7-1. Kapitel 7: Advertising on the Web. Johannes Zschache Wintersemester 2018/19

Data Mining 2-1. Kapitel 2: Finding Similar Items. Johannes Zschache Wintersemester 2018/19

Data Mining 5-1. Kapitel 5: Frequent Itemsets. Johannes Zschache Wintersemester 2018/19

Data Mining Kapitel 11: Machine Learning. Johannes Zschache Wintersemester 2018/19

Data Mining 8-1. Kapitel 8: Recommendation Systems. Johannes Zschache Wintersemester 2018/19

Stream Processing II

Data Mining 4-1. Kapitel 4: Link Analysis. Johannes Zschache Wintersemester 2018/19

Literatur: Jeffrey D. Ullman: Principles of Database Systems, 2 nd Edition 1982, Kapitel 2.2

Approximate Frequency Counts over Data Streams

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Streaming Data: Das Modell

Übung GSS Blatt 1. SVS Sicherheit in Verteilten Systemen

Numerische Verfahren und Grundlagen der Analysis

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

Praktische Informatik I Algorithmen und Datenstrukturen Wintersemester 2006/07

Korollar 191 In einem (a, b)-baum mit n gespeicherten Schlüsseln können die Wörterbuchoperationen in Zeit O(log a n) durchgeführt werden.

Informatik II, SS 2016

Vorverarbeitung von Sensordaten

Informatik II, SS 2014

5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)?

Algorithmen und Datenstrukturen

Wann sind Codes eindeutig entschlüsselbar?

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Seminar über Algorithmen Übersicht über streaming (Datenstrom-)Algorithmen

Algorithmen des Internets

4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1}

Fallstudie: Online-Statistik

Kollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren

Grundlagen: Algorithmen und Datenstrukturen

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

3.3 Laufzeit von Programmen

6/23/06. Universelles Hashing. Nutzen des Universellen Hashing. Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen

Berechnung approximierter Voronoi-Zellen auf geometrischen Datenströmen

MAINTAINING STREAM STATISTICS OVER SLIDING WINDOWS

Hashing. Überblick Aufgabe Realisierung

Teil VII. Hashverfahren

Wichtige Definitionen und Aussagen

Kapitel Andere dynamische Datenstrukturen

Statistik II SoSe 2006 immer von 8:00-9:30 Uhr

Einführung in die Maximum Likelihood Methodik

Vorlesung Datenstrukturen

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. x 9

STL-Container und Laufzeit

Hash-Verfahren. Einführung

WS 2009/10. Diskrete Strukturen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 5, Donnerstag, 21.

Integriertes Seminar Datenbanken und Informationssysteme. Was sind Peer-to-Peer Systeme? Wie kann man diese effizient nutzen?

Hash-Verfahren. Prof. Dr. T. Kudraß 1

Seminar: Data Mining. Referat: Andere Möglichkeiten des Data Mining in verteilten Systemen. Ein Vortrag von Mathias Rohde. 11.

P ( Mindestens zwei Personen haben am gleichen Tag Geb. ) (1) = 1 P ( Alle Personen haben an verschiedenen Tagen Geb. ) (2)

Numerische Methoden und Algorithmen in der Physik

Universität Potsdam Institut für Informatik Lehrstuhl Maschinelles Lernen. Clusteranalyse. Tobias Scheffer Thomas Vanck

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

elementare Datenstrukturen

Überlaufbehandlung ohne Verkettung

2. Beispiel: n-armiger Bandit

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

Kapitel Andere dynamische Datenstrukturen

IR Seminar SoSe 2012 Martin Leinberger

6.6 Vorlesung: Von OLAP zu Mining

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

14. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i

7. Übung: Aufgabe 1. b), c), e) Aufgabe 2. a), c), e) Aufgabe 3. c), e) Aufgabe 4. Aufgabe 5. Aufgabe 6. Aufgabe 7. Aufgabe 8. Aufgabe 9.

3.3 Optimale binäre Suchbäume

Informatik II, SS 2014

1. Grundbegri e der Stochastik

Assoziationsregeln & Sequenzielle Muster. A. Hinneburg, Web Data Mining MLU Halle-Wittenberg, SS 2007

4. Übung zu Algorithmen I 17. Mai 2017

Programmiertechnik II

3.2. Divide-and-Conquer-Methoden

Informatik II, SS 2018

Grundgesamtheit und Stichprobe

Data Mining auf Datenströmen Andreas M. Weiner

Signalverarbeitung 2. Volker Stahl - 1 -

Algorithmen II Vorlesung am

HMMs und der Viterbi-Algorithmus

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

EADS 3.3 Gewichtsbalancierte Bäume 95/598 ľernst W. Mayr

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Hashing Hashfunktionen Kollisionen Ausblick. Hashverfahren. Dank an: Beate Bollig, TU Dortmund! 1/42. Hashverfahren

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Mehrwegbäume Motivation

Theorie Parameterschätzung Ausblick. Schätzung. Raimar Sandner. Studentenseminar "Statistische Methoden in der Physik"

Anfrageoptimierung Kostenmodelle

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt

3. Übung Algorithmen I

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

3. Das Reinforcement Lernproblem

Dr. L. Meier Statistik und Wahrscheinlichkeitsrechnung Sommer Musterlösung

Pareto optimale lineare Klassifikation

1 Univariate Statistiken

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Transkript:

Data Mining Kapitel 3: Mining Data Streams Johannes Zschache Wintersemester 2018/19 Abteilung Datenbanken, Universität Leipzig http://dbs.uni-leipzig.de Data Mining 3-1

3-2 Data Mining Übersicht Hochdimension. Daten Locality sensitive hashing Clustering Dimension. reduction Graphdaten PageRank, SimRank Network Analysis Spam Detection Unbegrenzte Daten Filtering data streams Web advertising Queries on streams Maschinelles Lernen Support Vector Machines Decision Trees Nearest Neighbors Anwendung Recommen. Systems Association Rules Duplicate document detection

Inhaltsverzeichnis Data Streams Ziehen einer Stichprobe Fester Anteil Feste Größe: Reservoir Sampling Anfragen mit Sliding Window DGIM Methode Exponentially Decaying Window Filter auf Data Streams: Bloom Filter Anzahl eindeutiger Elemente: Flajolet-Martin Algorithmus Schätzung von Momenten: Alon-Matias-Szegedy Algorithmus Data Mining 3-3

Data Stream In vielen Situationen liegt der Datensatz zum Zeitpunkt der Analyse nicht vollständig vor Daten sind unbegrenzt und die Rate der Eingabe ist nicht kontrollierbar Annahmen Daten treten mit einer sehr großen Rate über einen oder mehrere Streams auf Zugängliche Speicherung der Streams (auf Festplatte) nicht möglich Daten werden sofort verarbeitet und danach verworfen Frage: Wie sind kritische Berechnungen über den Stream mit einer begrenzten Menge an (sekundärem) Speicher möglich? Data Mining 3-4

Stream Processing Model Ad-Hoc Anfragen... 1, 5, 2, 7, 0, 9, 3... a, r, v, t, y, h, b... 0, 0, 1, 0, 1, 1, 0 Ständige Anfragen Prozessor Ausgabe Zeit Data Streams Bestehend aus Elementen/Tupeln verschiedenen Typs Unterschiedliche Raten Speicher für Zwischenergebnisse (RAM/Festplatte) Archive (schwer zugänglich) Data Mining 3-5

Beispiele Sensordaten Milliarden Sensoren senden Daten an zentrale Einheit z.b. Wasserstand/Temperatur in Flüssen/Seen/Meeren Anfragen an Suchmaschine Welche Anfragen werden heute häufiger gestellt, als gestern? z.b. Anfragen wie Symptome Grippe können auf Grippewelle hinweisen Clickstream Welche Wikipedia-Seiten wurden in der letzten Stunde besonders häufig besucht? Welche Nachrichten/Themen sind aktuell? News-Feed auf Sozialen Medien IP/Telefon-Daten Informationen für optimales Routing der Packete / Denial-of-Service-Attacken Erstellung von Abrechnungen für Kunden/Unternehmen Online Machine Learning (z.b. Stochastic Gradient Descent) Data Mining 3-6

Inhaltsverzeichnis Data Streams Ziehen einer Stichprobe Fester Anteil Feste Größe: Reservoir Sampling Anfragen mit Sliding Window DGIM Methode Exponentially Decaying Window Filter auf Data Streams: Bloom Filter Anzahl eindeutiger Elemente: Flajolet-Martin Algorithmus Schätzung von Momenten: Alon-Matias-Szegedy Algorithmus Data Mining 3-7

Ziehen einer Stichprobe Auswahl und Speicherung einer repräsentativen Teilmenge der Daten Anfragen auf Stichprobe anstatt gesamten Daten Zwei Arten 1. Fester Anteil des Data Stream: z.b. 1 von 10 Elementen, d.h. die Stichprobe wächst kontinuierlich mit der Zeit (mit dem Stream) 2. Feste Anzahl an Elemente: z.b. 10.000 Elemente, d.h. die Stichprobe hat eine feste maximale Größe Data Mining 3-8

Stichprobe mit festen Anteil Beispiel: Anfragen an Suchmaschine Element: (Nutzer, Zeit, Anfrage) Frage: Wie oft stellt ein Nutzer die gleiche Anfrage am selben Tag? Anteil: 1 von 10 Elementen Naive Lösung: Generiere eine zufällige ganze Zahl zwischen 0 und 9 Speichere das Element genau dann, wenn diese Zahl der 0 gleicht Annahme: Nutzer stellt x einzigartige Anfrage und d Duplikate Exakte Antwort: d d+x der Anfragen sind Duplikate ABER: Erwartungswert der naiven Schätzung: Data Mining 3-9 d 19d+10x Grund: Duplikate tauchen mit Wahrscheinlichkeit 1 Wahrscheinlichkeit 18 100 100 als einzigartige Anfrage auf als Duplikat und

Stichprobe mit festen Anteil Lösung im Beispiel: Wähle 1 von 10 Nutzern zufällig aus und speichere alle Anfragen dieser Nutzer Implementierung: Verwendung eine Hashfunktion um Nutzer (deren Namen/ID) gleichmäßig auf 10 Buckets zu verteilen Allgemeine Lösung: Wähle eine/mehrere Komponenten des Elements als Schlüssel (von Anwendung/Frage abhängig) Für einen Anteil von a, verwende b Buckets und speichere ein Element des Stream b falls der Hash-Wert des Schlüssels in einen der ersten a Buckets fällt z.b. für eine 30%-Stichprobe: Data Mining 3-10

Stichprobe fester Größe Stichprobe darf eine Größe s nicht überschreiten, z.b. aufgrund von Speicherbeschränkungen Erwünschte Eigenschaft: Nachdem n Elemente des Stream eintrafen, ist jedes dieser Elemente mit Wahrscheinlichkeit s Teil der Stichprobe n Beispiel mit s = 2: a x c y z k c d e g Nach n = 7, alle 7 Elemente sind mit Wahrscheinlichkeit 2 7 Teil der Stichprobe Nach n = 10, alle 10 Elemente sind mit Wahrscheinlichkeit 2 10 Teil der Stichprobe Algorithmus (a.k.a. Reservoir Sampling) Speichere die ersten s Elemente des Stream Angenommen es trifft das nte Element ein (n > s) Mit Wahrscheinlichkeit s/n, speichere das nte Element Falls das nte Element gespeichert wurde, ersetze eins der vorhandenen s Elemente (zufällig ausgewählt nach Gleichverteilung) durch dieses Element Data Mining 3-11

Beweis der erwünschten Eigenschaft Vollständige Induktion IA: Nachdem n = s Elemente eintrafen, sind alle Elemente mit Wahrscheinlichkeit s = s = 1 in der Stichprobe n s IS: Angenommen die erwünschte Eigenschaft gilt nachdem n Elemente eintrafen. Für das Eintreffen des (n + 1)ten Elements gilt: Das (n + 1)te Element ist mit Wahrscheinlichkeit Data Mining 3-12 s n+1 in der Stichprobe Jedes Elemente aus vorherigen Stichprobe bleibt darin mit Wahrscheinlichkeit 1 s n + 1 + s n + 1 s 1 s = n n + 1 Jedes der ersten n Elemente ist in Stichprobe mit Wahrscheinlichkeit s n n n + 1 = s n + 1

Inhaltsverzeichnis Data Streams Ziehen einer Stichprobe Fester Anteil Feste Größe: Reservoir Sampling Anfragen mit Sliding Window DGIM Methode Exponentially Decaying Window Filter auf Data Streams: Bloom Filter Anzahl eindeutiger Elemente: Flajolet-Martin Algorithmus Schätzung von Momenten: Alon-Matias-Szegedy Algorithmus Data Mining 3-13

Anfragen mit Sliding Window Anfragen sind auf ein Sliding Window der Länge N, d.h. auf die neuesten N Elemente, beschränkt Beispiel mit N = 6: q w e r t y u i o p a s d f g h j k l z x c v b n m Problematisch: N ist so groß, dass Sliding Window nicht direkt gespeichert werden kann (oder: zu viele Streams mit Sliding Window) Anwendung eines Online Händlers Jedes Produkt ergibt ein 0/1-Stream für die Information, ob das Produkt in der nten Transaktion verkauft wurde Anfrage: Wie oft wurde ein Produkt in den letzten k Transaktionen verkauft? Data Mining 3-14

Bits Zählen Gegeben ist ein 0/1-Stream, ein Sliding Window der Länge N und Anfragen der Form: Wie viele Einsen sind unter den letzten k Bits (k N)? N 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 Vergangenheit Zukunft Exakte Antwort nur durch Speichern aller N Bits möglich Approximative Antwort bei weniger Bits z.b. Annahme der Gleichverteilung (schlechte Lösung) 2 Zähler: S: Anzahl der Einsen seit Beginn Z: Anzahl der Nullen seit Beginn Anzahl der Einsen unter den letzten k Bits: k S S+Z Data Mining 3-15

DGIM Methode Datar-Gionis-Indyk-Motwani-Algorithmus Keine Annahme der Gleichverteilung erforderlich Speicherbedarf: O(log 2 N) pro Data Stream Schätzung der Anzahl der Einsen mit einem Fehler von max. 50% 1. Idee: Exponentiell wachsende Bereiche Bereich aus 16 Bits mit 10 Einsen Länge 16 8 4 2 1 6 10 N 4 3 2 2 1 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 Data Mining 3-16

DGIM Methode Vorteil der Exponentiell wachsenden Bereiche : Speicherbedarf Speichern der Anzahl der Einsen pro Bereich benötigt maximal log N Bits Anzahl der Bereiche: O(log N) Insgesamt: O(log 2 N) Bits Nachteil: Fehler bei der Berechnung der Anzahl der Einsen ist nur dann kleiner als 50% wenn Einsen gleichmäßig über Sliding Window verteilt Falls alle Einsen im letzten Bereich: Unbegrenzter Fehler Länge 16 8 4 2 1? 6 10 N 4 3 2 2 1 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 Data Mining 3-17

DGIM Methode Lösung: Anstatt von Bereichen mit bestimmter Länge, Zusammenfassen von Bereichen mit bestimmter Anzahl an Einsen 2 Bereiche der Größe 1 Mind. 1 Bereich der Größe 16 2 Bereiche der Größe 8 2 Bereiche der Größe 4 1 Bereich der Größe 2.01010110001011010101010101011010101010101110101010111010100010110010 N Data Mining 3-18

DGIM-Bereiche Jedes Bit des Stream hat einen Timestamp: 1, 2, Ein DGIM-Bereich besteht aus A. Dem Timestamp des neuesten Eintrags B. Anzahl der Einsen im Bereich = die Größe des DGIM-Bereichs Regeln Das rechte Ende eines Bereichs enthält eine Eins. Jedes 1-Bit fällt in einen Bereich. Jedes Bit fällt in maximal einen Bereich. Die Größe eines Bereichs (Anzahl der Einsen) muss eine Zweierpotenz sein Speicherung der Größe benötigt nur log log N Bits Von dem neuesten zu älteren Bereichen ist dessen Größe monoton steigend Timestamps werden modulo N gespeichert Speicherung des Timestamp benötigen somit nur log N Bits Bereiche verschwinden, wenn dessen Timestamp größer N ist (dazu zusätzliche Speicherung des modulo des aktuellsten Bits erforderlich). Es gibt entweder einen oder zwei Bereiche einer Größe O log N Bereiche Data Mining 3-19

Aktualisierung der DGIM-Bereiche Ankommen eines neuen Bit Evtl. verschwindet ältester Bereich (falls sein Timestamp modulo N gleich dem aktuellen Timestamp modulo N ist) Falls neuer Bit eine Null: keine weiteren Änderungen notwendig Falls neuer Bit eine Eins: 1. Erstelle neuen Bereich der Größe 1 und Timestamp des neuen Bit 2. Falls nun 3 Bereich der Größe 1: Kombiniere die älteren beiden Bereich zu einem Bereich der Größe 2 3. Falls nun 3 Bereich der Größe 2: Kombiniere die älteren beiden Bereich zu einem Bereich der Größe 4 4. Usw. Maximal log N Schritte: O log N Zeitkomplexität Data Mining 3-20

DGIM: Beispiel Current state of the stream: 1001010110001011010101010101011010101010101110101010111010100010110010 Bit of value 1 arrives 0010101100010110101010101010110101010101011101010101110101000101100101 Two orange buckets get merged into a yellow bucket 0010101100010110101010101010110101010101011101010101110101000101100101 Next bit 1 arrives, new orange bucket is created, then 0 comes, then 1: 0101100010110101010101010110101010101011101010101110101000101100101101 Buckets get merged 0101100010110101010101010110101010101011101010101110101000101100101101 State of the buckets after merging 0101100010110101010101010110101010101011101010101110101000101100101101 Data Mining 3-21

DGIM: Anfragen Wie viele Einsen sind unter den letzten k Bits (k N)? Suche den ältesten Bereich B dessen Timestamp noch innerhalb der neuesten k Bits liegt Schätze die Anzahl der Einsen durch: Summe der Größen aller Bereiche, die neuer als B sind Plus die Hälfte der Größe von B Fehler: max. 50 % Sei 2 r die Größe von B Dann beträgt die wahre Anzahl der Einsen mind. 1 + 2 + 4 +.. + 2 r-1 + 1 = 2 r Man addiert also maximal die Hälfte der wahren Anzahl Bzw. es fehlt maximal die Hälfte von B Mind 16 Einsen 111111110000000011101010101011010101010101110101010111010100010110010 N Data Mining 3-22

DGIM: Erweiterungen Reduzierung des Fehlers über höheren Speicherbedarf Erlaube r oder r-1 Bereiche pro Größe und beliebige Anzahl (1,, r) für den kleinsten und den größten Bereich Fehler ist beschränkt durch 1 r 1 Anstatt 0/1-Stream: Anzahl beliebiger natürlicher Zahlen (2 Möglichkeiten) 1. Natürliche Zahlen aus Bereich 1 bis 2 m Jedes Bit ist eigener 0/1-Stream mit Summe c i nach der DGIM Methode Gesamt Summe: σ m 1 i=0 c i 2 i 2. Größe eines Bereichs mit mehr als einem Element ist maximal 2 b 2 5 7 1 3 8 4 6 7 9 1 3 7 6 5 3 5 7 1 3 3 1 2 2 6 2 5 7 1 3 8 4 6 7 9 1 3 7 6 5 3 5 7 1 3 3 1 2 2 6 3 2 5 7 1 3 8 4 6 7 9 1 3 7 6 5 3 5 7 1 3 3 1 2 2 6 3 2 Bereichsgrößen: 2 5 7 1 3 8 4 6 7 9 1 3 7 6 5 3 5 7 1 3 3 1 2 2 6 3 2 5 16 8 4 2 1 Data Mining 3-23

Inhaltsverzeichnis Data Streams Ziehen einer Stichprobe Fester Anteil Feste Größe: Reservoir Sampling Anfragen mit Sliding Window: DGIM Methode Exponentially Decaying Window Filter auf Data Streams: Bloom Filter Anzahl eindeutiger Elemente: Flajolet-Martin Algorithmus Schätzung von Momenten: Alon-Matias-Szegedy Algorithmus Data Mining 3-24

Suche nach häufigen Elementen Stream aus beliebigen Elementen, z.b. a, b, c, d, a, a, e, c, Welche Elemente kommen häufiger als s mal vor? Beschränkung auf die neuesten Elemente über Window Einen (virtuellen) 0/1-Stream pro Element 1. Möglichkeit: Sliding Window und DGIM Nur möglich bei relativ wenig Elementen, da Bereiche gespeichert werden müssen Weniger geeignet bei häufigen Paaren oder Mengen 2. Möglichkeit: Exponentially Decaying Window (EDW) Anstatt Festlegung auf die letzten N Elemente, Aggregation über gesamten Stream und höhere Gewichtung der neuesten Elemente Seien a 1, a 2, die 0/1-Elemente eines Streams x und c eine Konstante (z.b. 10 6 oder 10 9 ): t Bei Ankunft eines neuen Elements in x: S t (x) = a i 1 c t i S t+1 x = 1 + 1 c S t x S t+1 y = (1 c)s t (y) für alle y x i=1 Data Mining 3-25

Suche nach häufigen Elementen über EDW Speicherung von nur einem Zähler pro Element/Stream Außerdem: Löschen von Zählern S t x, die kleiner als s sind Eigenschaft: S t (x) = x i=1 t 1 c t i < i=0 1 c i = 1 1 (1 c) = 1 c Für jeden Schwellenwert s (z.b. s = 1 Τ2), kann es maximal 1 Τcs Elemente mit S t x s geben Die Anzahl der Elemente für die ein Wert S t x gespeichert wird, ist begrenzt durch s Data Mining 3-26

Erweiterung zu Mengen Beispiel: Produkte, die oft zusammen gekauft werden Problem: Zu viele Kombinationen von Elementen Bei insgesamt 20 verschiedenen Elementen: 2 20 1 Millionen Teilmengen Bei insgesamt 100 Elementen: 2 100 1 Quintillion Teilmengen Konservatives Vorgehen: Bei Ankunft einer neuen Menge B: Multipliziere alle vorhandenen Zähler S t (Y) mit (1 c) Für jede Teilmenge X B, füge einen Zähler S t X hinzu, falls für jede echte Teilmenge bereits vor der Ankunft von B ein Zähler vorhanden war Annahme: S t ( ) ist immer vorhanden Beispiel: Zähler für X = i, j, k wird hinzugefügt, falls i, j, j, k und i, k schon einen Zähler besitzen Intuition: Potential für eine häufige Menge, falls echte Teilmengen schon häufig Für jede Menge X B: Addiere 1 zu S t (X), falls S t (X) existiert Entferne alle Zähler mit S t Y < s Data Mining 3-27

Inhaltsverzeichnis Data Streams Ziehen einer Stichprobe Fester Anteil Feste Größe: Reservoir Sampling Anfragen mit Sliding Window DGIM Methode Exponentially Decaying Window Filter auf Data Streams: Bloom Filter Anzahl eindeutiger Elemente: Flajolet-Martin Algorithmus Schätzung von Momenten: Alon-Matias-Szegedy Algorithmus Data Mining 3-28

Filter auf Data Streams Leicht umsetzbare Filter: Attribut Alter > 18 Attribut Kategorie == A Schwieriger: Attribut ist Element einer Menge S und S ist sehr groß S passt nicht in Hauptspeicher oder mehrere Millionen Filter, die zusammen nicht in Speicher passen Beispiele: E-Mail-Spam-Filter: S ist die Menge von 1 Milliarde E-Mail-Adressen Publish-Subscribe-Systeme: z.b. Newsletter, die aus vielen Nachrichten/Blogeinträgen zusammengestellt und an Abonnenten mit unterschiedlichen Interessen gesendet werden Content-Filter: Jede Anzeige sollte nur einmal pro Nutzer geschaltet werden Data Mining 3-29

Filter über eine einzelne Hash-Funktion Array B aus n Bits und Hash-Funktion h aus dem Wertebereich von S gleichmäßig auf die Menge {0,1,, n 1} abbildet Initialisierung: Setze alle Bits auf 0 Für jedes s S, setze B[h(s)] = 1 Gegeben ein Element eines Data Stream mit Attribut a: Wähle Element genau dann aus, wenn B[h(a)] = 1 Element Hash- Funktion h Ausgabe des Elements, falls B[h(a)] = 1 0010001011000 Bit-Array B Verwirf Element, falls B[h(a)] = 0 Data Mining 3-30

Filter über eine einzelne Hash-Funktion Sei S eine Menge von m Elementen und B eine Array aus n Bits (m << n) Ungefähr ein Anteil m aller Bits sind auf Eins gesetzt n Falls ein Attribut a eines Elements zu S gehört, dann ist B[h(a)] = 1 garantiert Keine False Negatives Falls ein Attribut b nicht zu S gehört, wird es mit einer Wahrscheinlichkeit von ungefähr 1 e mτn einem Bit mit einer Eins zugeordnet False Positive Wahrscheinlichkeit eines False Positive : 1 1 1 n m = 1 1 1 n n m n 1 e mτn Beispiel: 1 Milliarde E-Mail-Adressen und 1 GB Array, d.h. m = 10 9 und n = 8 10 9 : 1 e 1Τ8 = 0.1175 Data Mining 3-31

Bloom Filter Verwende k unabhängige Hash-Funktionen h 1, h 2,, h k Initialisierung: Setze alle Bits von B auf 0 Für jedes s S setze B[h i (s)] = 1 für alle i = 1,.., k Für ein Element aus Data Stream mit Attribut a: Falls B[h i (a)] = 1 für alle i = 1,.., k, gib Element aus Ansonsten: Verwirf Element Anteil der Bits aus B mit einer Eins: 1 1 1 n km 1 e km Τ n Wahrscheinlichkeit eines False Positive 1 e km Τ n k Data Mining 3-32

False Positive Rate Bloom Filter: Optimierung Beispiel: 1 Milliarde E-Mail-Adressen und 1 GB Array d.h. m = 10 9 und n = 8 10 9 k = 1: 1 e 1Τ8 0.12 k = 2: 1 e 1Τ4 2 0.05 0.2 0.18 0.16 0.14 0.12 0.1 0.08 0.06 0.04 Optimum: k opt = n m ln 2 Beispiel: k opt = 8 ln 2 6 0.02 0 2 4 6 8 10 12 14 16 18 20 Anzahl Hash-Funktionen k Fehler für k = 6: 1 e Τ 6 8 6 0.004 Data Mining 3-33

Inhaltsverzeichnis Data Streams Ziehen einer Stichprobe Fester Anteil Feste Größe: Reservoir Sampling Anfragen mit Sliding Window: DGIM Methode Exponentially Decaying Window Filter auf Data Streams: Bloom Filter Anzahl eindeutiger Elemente: Flajolet-Martin Algorithmus Schätzung von Momenten: Alon-Matias-Szegedy Algorithmus Data Mining 3-34

Anzahl eindeutiger Elemente Anfrage: Anzahl der eindeutigen Elemente, die bisher auftraten Beispiele Wie viele verschiedene Nutzer haben eine Webseite im letzten Monat besucht? Wie viele verschiedene Webseiten wurden von einem Nutzer aufgerufen? Wie viele verschiedene Produkte wurden letzte Woche verkauft? Welches Vorgehen eignet sich, wenn die bisher gesehenen Elemente nicht in den Hauptspeicher passen bzw. tausende Streams gleichzeitig verarbeitet werden? Ziel: Schätzung der Anzahl mit möglichst geringem Fehler Data Mining 3-35

Flajolet-Martin Algorithmus Hash-Funktion h, die eine Menge von m verschiedenen Elementen auf eine Sequenz von mind. log m Bits abbildet z.b. h e = 10100 Für jedes Element e, sei r(e) die Anzahl der hinteren Nullen von h(e) z.b. falls h e = 10100, dann ist r e = 2 Speichere R als das Maximum von r e über alle bisherigen Elemente Schätzer für die Anzahl der eindeutigen Element: 2 R Intuition: Je mehr verschiedene Elemente beobachtet werden (je größer m), desto mehr unterschiedliche Hash-Werte werden berechnet Je mehr unterschiedliche Hash-Werte berechnet werden, desto wahrscheinlicher ist das Auftreten eines sehr seltenen Hash-Wertes Zum Beispiel ist ein Hash-Wert mit vielen hinteren Nullen sehr selten Auch andere seltene Eigenschaften würden funktionieren Data Mining 3-36

Flajolet-Martin Schätzer: Begründung Die Werte von h e haben gleiche Wahrscheinlichkeit Die Wahrscheinlichkeit einen Hash-Wert mit r hinteren Nullen zu berechnen is 2 r Ungefähr 50% der Werte haben die Form ***0 Ungefähr 25% der Wert haben die Form **00 Wahrscheinlichkeit mindestens einen Hash-Wert mit r hinteren Nullen durch die Eingabe von m verschiedenen Elementen zu beobachten ist 1 1 2 r m = 1 1 2 r 2r m2 r 1 e m2 r =: p p 0 falls m 2 r 0 und p 1 falls m 2 r Der Schätzer 2 R ist also mit hoher Wahrscheinlichkeit weder viel zu groß noch viel zu klein Data Mining 3-37

Flajolet-Martin Schätzer: Probleme Alleinige Betrachtung der Grenzwerte ist problematisch Simulation mit m = 1000 und Bit-Array der Größe 20; 10 000 Wiederholungen Falls R = 10, dann Schätzung von m durch 2 R = 1024 Aber extreme Überschätzung durch 2 11 = 2048 oder 2 12 = 4096 Lösung: Verwendung mehrerer Hash-Funktionen Mittelwert: anfällig gegenüber Ausreißern (Simulation: 5243) Median: nur Zweierpotenzen (Simulation: 1024) Alternative: Unterteilung in kleine Gruppen von Hash-Funktionen und Median der Mittelwerte als Schätzer (oder: Mittelwert der Mediane) Data Mining 3-38

Inhaltsverzeichnis Data Streams Ziehen einer Stichprobe Fester Anteil Feste Größe: Reservoir Sampling Anfragen mit Sliding Window: DGIM Methode Exponentially Decaying Window Filter auf Data Streams: Bloom Filter Anzahl eindeutiger Elemente: Flajolet-Martin Algorithmus Schätzung von Momenten: Alon-Matias-Szegedy Algorithmus Data Mining 3-39

Schätzung von Momenten Angenommen die Elemente eines Stream entstammen einer Menge A Sei m i die Anzahl des Vorkommens von i A im Stream Betrachtung des Falls: alle m i passen nicht in den Hauptspeicher Das k-te Moment ist definiert als m i k i A 0te Moment = Anzahl eindeutiger Elemente 1te Moment = Anzahl der Elemente 2te Moment = Maß der Ungleichheit ( surprise number ) z.b. Stream mit 100 Elementen aus 11 verschiedenen Werten m i : 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 2tes Moment: 910 m i : 90, 1, 1, 1, 1, 1, 1, 1,1, 1, 1 2tes Moment: = 8 110 Data Mining 3-40

Alon-Matias-Szegedy Algorithmus Zunächst: Schätzung des 2-ten Moments Speicherung einer großen (aber durch den Hauptspeicher begrenzten) Anzahl an Variablen X 1, X 2,, X l mit X 1. elem bezeichnet ein Element i X 1. val enthält die Anzahl m i Sei n die Länge des Stream (eigentlich unbekannt) Für jede Variable X j Wähle (gleichmäßig) zufällig einen Zeitpunkt t (t n) X j. elem = i wobei i das Element des Stream zum Zeitpunkt t X j. val = c(i), wobei c(i) die Anzahl des Vorkommens von i ab Zeitpunkt t Sei f X j = n(2c(i) 1) Schätzer des 2-ten Moments: S = 1 l f X j j=1 l Data Mining 3-41

Alon-Matias-Szegedy Algorithmus c(i): Stream: m a (m a 1) m b (m b 1) (m a 2) 3 2 1 1 a a b b a a a b a n 1 E f(x) = n(2c(t) 1) n = i A = i A j=1 = i A t=1 (1 + 3 + 5 + + 2m i 3 + 2m i 1) m i (2j 1) = m i 2 i A 2 m i m i + 1 2 m i f(x) ist unverzerrter Schätzer des 2-ten Moments Data Mining 3-42

Alon-Matias-Szegedy Algorithmus Momente höherer Ordnung Für das k-te Moment: f X = n (c k c 1 k ), wobei X. val = c Beispiel: k = 3 f X = n (3c 2 3c + 1) In Praxis: Anstatt Mittelwert über alle Variablen, Median über Mittelwerte von kleineren Gruppen von Variablen Unbegrenzte Streams (n unbekannt): Lösung über Reservoir Sampling Stichprobengröße l Wähle ersten l Zeitpunkte für die Variablen Wenn das n-te Element (n > l) auftritt, wähle es mit Wahrscheinlichkeit l n Falls das n-te Element als neue Variable gewählt wird, entferne eine existierende Variable mit Wahrscheinlichkeit 1 l Data Mining 3-43

Referenzen, Beispiele, Übungen Kapitel 4 aus Mining of Massive Datasets : http://www.mmds.org/ Übungen: Sliding Window: 4.6.1 & 4.6.3 Bloom Filter: 4.3.1 & 4.3.2 Anzahl eindeutiger Elemente: 4.4.1 Momente: 4.5.3 & 4.5.4 Data Mining 3-44

Übung 4.6.1 & 4.6.3 http://pingo.upb.de/836014 Übung 4.6.1 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 a) k = 5: 3 vs 3 Fehler: 0 b) k = 15: 10 vs 9 Fehler: 1 Übung 4.6.3 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 Data Mining 3-47

Übung 4.3.1 & 4.3.2 http://pingo.upb.de/836014 Übung 4.3.1 Beispiel: 1 Milliarde E-Mail-Adressen und 1 GB Array d.h. m = 10 9 und n = 8 10 9 k = 1: 1 e 1Τ8 0.12 k = 2: 1 e 1Τ4 2 0.05 k = 3: 1 e 3Τ8 3 0.03 k = 4: 1 e 1Τ2 4 0.02 Übung 4.3.2 1 e kmτn k = 1 e m Τ( n Τ k) k Data Mining 3-50

Übung 4.4.1 Stream: 3 1 4 1 5 9 2 6 5 Anzahl eindeutiger Elemente: 7 a) h x = 2x + 1 mod 32 7 3 9 3 11 19 5 13 11 0 0 0 0 0 0 0 0 0 2 0 = 1 b) h x = 3x + 7 mod 32 16 10 19 10 22 34 13 25 22 4 1 0 1 1 1 0 0 1 2 4 = 16 c) h x = 4x mod 32 12 4 16 4 20 36 8 24 20 2 2 4 2 2 2 3 3 2 2 4 = 16 http://pingo.upb.de/836014 Mittelwert: 11 Data Mining 3-52

Übung 4.5.3 & 4.5.4 http://pingo.upb.de/836014 Stream: 3 1 4 1 3 4 2 1 2 Übung 4.5.3 X i. val = c: 2 3 2 2 1 1 2 1 1 Übung 4.5.4 f X = n (3c 2 3c + 1) f X 1. val : 63 171 63 63 9 9 63 9 9 Mittelwert: 51 Wahrer Wert: 51 (= 3 3 + 2 3 + 2 3 + 2 3 ) Data Mining 3-55