• Keine Ergebnisse gefunden

Approximierte Zählungen von Häufigkeiten in Datenströmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Approximierte Zählungen von Häufigkeiten in Datenströmen"

Copied!
14
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Approximierte Zählungen von Häufigkeiten in Datenströmen

Cordula Nimz

Vortrag im Seminar über Algorithmen 15.12.2005

Was ist ein Datenstrom?

Unter einem Datenstrom verstehen wir eine kontinuierliche Folge von digitalen Signalen (Datensätzen), die gesendete Informationen dartellen.

Eigenschaften eines Datenstroms:

ein Ende des Stroms ist nicht vorhersehbar

nicht komplett speicherbar

die Elemente des Datenstroms werden meist in rascher Folge erzeugt und die Menge der Datensätze pro Zeiteinheit kann variieren

Folgerungen:

ein Datenstrom kann nicht als ganzes sondern nur fortlaufend verarbeitet werden

komplizierte Berechnungen auf Teilen des Datenstroms können schwierig sein aufgrund der Übertragungsrate

Beispiele für Datenströme:

Kassendaten eines Kaufhauses (Artikel)

Inhalt von e-Mails (Wörter)

Serverlogdateien (IP-Adressen)

Unser Problem:

Wir interessieren uns dafür häufig vorkommende Elemente in Datenströmen zu finden.

Der Benutzer definiert selbst, was er unter „häufig“ versteht.

Er legt eine Schranke fest und als häufig werden alle Elemente gesehen, deren Häufigkeit diese Schranke überschreitet.

(2)

Allgemeine Bezeichnungen

N aktuelle Länge des Datenstroms

s∈0,1 benutzerdefinierte Schranke; ab dieser Größe gilt ein Element als häufig ε∈0,1 Fehlerparameter mit εs (empfohlen: ε=0.1⋅s )

e Element des Datenstroms (itemset)

f geschätzte Häufigkeit eines Datenstromelements fe tatsächliche Häufigkeit eines Datenstromelements e

In [2] werden Algorithmen zum Frequent Itemset Mining in Datenströmen in Algorithmen mit falsch-positivem und falsch-negativem Ansatz klassifiziert.

Falsch positiver Ansatz

Der Algorithmus findet garantiert alle Elemente, deren Häufigkeit größer als s ist.

Das Ergebnis kann auch Elemente beinhalten, deren Häufigkeit kleiner als s ist.

Falsch negativer Ansatz

Der Algorithmus findet garantiert nur Elemente, deren Häufigkeit größer als s ist.

Das Ergebnis muß nicht alle Elemente beinhalten, deren Häufigkeit größer als s ist.

(3)

Außerdem kann man diese Algorithmen nach der benutzten Fenstertechnik unterteilen. In [3]

werden folgende Techniken unterschieden:

Sliding Window Modell

Es wird ein Fenster gleicher Breite betrachtet, das über die Stromdaten „gleitet“.

Damped Window Modell

Die Elemente des Datenstroms altern mit einer benutzerdefinierten Rate. Ähnlich wie beim Sliding Window Modell gleitet ein Fenster über die Stromdaten, bezieht sich hier allerdings auf

Zeitinformationen der einzelnen Elemente.

Landmark Window Modell

Das Fenster beinhaltet immer alle bis dahin gesehenen Stromdaten.

Es werden nun zwei Algorithmen mit falsch poitivem Ansatz, die das Landmark Window Modell benutzen vorgestellt: Sticky Sampling und Lossy Counting [1].

Die beiden Algorithmen bieten folgende Garantien:

ε – fehlerhafte Zusammenfassung

1. Alle Elemente, deren tatsächliche Anzahl größer als sN ist, werden ausgegeben.

D.h. es werden kein falsch-negativen ausgegeben.

2. Kein Element, dessen tatsächliche Anzahl unter (s-ε)N liegt, wird ausgegeben.

Falsch-positive Ergebnisse sind möglich.

3. Die geschätzten Anzahlen unterscheiden sich von den wahren Anzahlen um höchstens εN

(4)

Sticky Sampling

zusätzliche Bezeichnungen für Sticky Sampling

δ Wahrscheinlichkeit, daß der Algorithmus fehlschlägt r Samplingrate

Art des Algorithmus: probabilistisch

Eingabe des Benutzers: s, ε, δ

Datenstruktur: S ist eine Menge von Einträgen mit der Form (e, f)

Unterteilung des Eingangsdatenstroms:

Der Eingangsdatenstrom wird in Abschnitte unterteilt, die mit zunehmendem N größer werden.

Die Länge der Abschnitte beträgt rit , (i = 1, 2,…) , wobei t=1

εlog1 s⋅1

δ und r1 = r2 = 2, ri = 2ri-1 für i > 2

Daten aus dem Datenstrom in S einfügen:

Jedes neue Element wird mit Wahrscheinlichkeit 1/r in S aufgenommen.

In S bereits vorhandene Elemente werden immer aktualisiert.

Ausdünnen bei Abschnittsgrenze:

Bei jedem Ende eines Abschnitts alle Elemente von S durchgehen und für jeden Eintrag eine Münze werfen bis Erfolg eintritt. Für jeden Mißerfolg wird f um 1 vermindert, falls f = 0 ist, wird der Eintrag aus S entfernt.

Ausgabe der häufigsten Elemente:

Auf Anfrage des Benutzers werden alle Einträge in S ausgegeben für die gilt f≥sε⋅N

(5)

Der Algorithmus

StickySampling(s, ε, δ)

S = Ø; // Initialisierung

r = 1;

N = 1;

t = 1/ ε log(1/s*1/δ);

for jedes eingelesene e {

if (e, f) in S // vorhandenen Eintrag erhöhen

f = f+1;

else // neuen Eintrag vielleicht hinzufügen

mit Wahrscheinlichkeit 1/r S.add((e,1));

if (N ==2* r*t) // Abschnittsgrenze erreicht

{

r = r * 2;

for jeden Eintrag (e, f) in S // bisherige Einträge in S durchgehen {

while (Münzwurf == false) // ausdünnen {

f = f – 1;

if (f == 0) {

S.remove((e, f));

Münzwurf = true;

} }

} }

N = N + 1;

}

(6)

Theorem 1

Sticky Sampling erfüllt die Eigenschaften einer ε-deficienten Zusammenfassung mit einer Wahrscheinlichkeit von 1- δ und benötigt höchstens 2

εlog1 s⋅1

δ Einträge.

Beweis:

Für r≥2 gilt N = rt + rt' für t' aus [0, t).

Daraus folgt N

r =tt '⇔1 rt

N

Ein Fehler in der Häufigkeitsbestimmung eines Elements e hängt von der Folge der erfolglosen Münzwürfe beim Ausdünnen ab. Die Länge dieser Folge entspricht der geometrischen Verteilung.

D.h. die Wahrscheinlichkeit, daß diese Folge länger ist als εN ist höchstens 1−1 r

εN

Nun gilt:

1−1 r

εN

≤1− t N

εN

e−t/N⋅εN=e−t⋅ε

Wir wissen, daß die Anzahl der Elemente, deren Häufigkeit mindestens s beträgt, nicht größer ist als 1/s. Also ist die Wahrscheinlichkeit, daß die geschätzte Häufigkeit für jedes dieser Elemente um mehr als εN abweicht, höchstens e−εt/s . Dieser Fall soll allerdings nur mit einer

Wahrscheinlichkeit von höchstens δ eintreten.

Also gilt:

δ≥e−ε⋅t

seε⋅t≥1 s⋅1

δε⋅t≥log1 s⋅1

δ⇔t≥1 εlog1

s⋅1 δ Da der Platzbedarf 2t ist, folgt die Behauptung

(7)

Lossy Counting

zusätzliche Bezeichnungen für Lossy Counting w Größe eines Abschnitts

Δ Maximaler Fehler in f

bcurrent Id des aktuellen Abschnitts

Art des Algorithmus: deterministisch

Eingabe des Benutzers: s, ε

Datenstruktur: D ist eine Menge von Einträgen der Form (e, f, Δ)

Unterteilung des Eingangsdatenstroms:

Der Eingangsdatenstrom wird in Abschnitte gleicher Größe unterteilt.

Diese haben die Länge w=⌈1/ε⌉ und werden mit Ids bezeichnet (anfangen bei 1).

Der aktuelle Abschnitt wird mit bcurrent , dessen Wert N/w⌉ ist.

Daten aus dem Datenstrom in D einfügen:

Jedes neue Element wird in der Form e ,1,bcurrent in D aufgenommen.

In D bereits vorhandene Elemente werden immer aktualisiert.

Ausdünnen bei Abschnittsgrenze:

Bei jedem Ende eines Abschnitts ( N≡0mod w ) alle Elemente von D durchgehen und jeden Eintrag für den gilt fΔ≤bcurrent löschen.

Ausgabe der häufigsten Elemente:

Auf Anfrage des Benutzers werden alle Einträge in D ausgegeben für die gilt f≥s−ε⋅N

(8)

Der Algorithmus:

LossyCounting(s, ε)

D = Ø; // Initialisierung

w = ceil(1/ε);

b_current = 1;

N = 1;

for jedes eingelesene e {

if (e, f, ∆) in D // vorhandenen Eintrag erhöhen

f = f+1;

else

D.add((e,1, b_current-1)); // neuen Eintrag hinzufügen

if (N % w == 0) // Abschnittsgrenze erreicht

{

for jeden Eintrag (e, f, ∆) in D //bisherige Einträge in D durchgehen {

if(f + ∆ <= b_current ) // ausdünnen {

D.remove((e, f, ∆));

} }

b_current = b_current + 1;

}

N = N + 1;

}

(9)

Theorem

Lossy Counting erfüllt die Eigenschaften einer ε-fehlerhaften Zusammenfassung und benötigt höchstens 1

εlogεN Einträge.

Lemma 1

Bei einem Löschvorgang gilt bcurrentεN

Beweis:

bcurrent=

Nw

=

N1ε

N1ε

=

εN

Da bei einem Löschvorgang N≡0mod w gilt, ist

Nw

=Nw und es gilt bcurrentεN

Lemma 2

Immer wenn ein Eintrag (e, f, ∆) gelöscht wird, gilt febcurrent

Beweis mit Induktion über bcurrent

Induktionsanfang: bcurrent=1

Bevor wir am Ende des Abschnitts 1 Elemente aus D löschen, haben wir alle Elemente des bis dahin gesehenen Datenstroms mit ihren wahren Häufigkeiten und Δ = 0 in D gespeichert.

Wenn am Ende des ersten Abschnitts gelöscht wird, werden alle Elemente aus D entfernt für die gilt: fΔ≤1 , also alle, die genau einmal vorkommen.

Induktionsschritt: bcurrent1 (e, f, ∆) wird gelöscht.

Es gilt nun: (e, f, ∆) wurde im Abschnitt ∆ + 1 erzeugt.

Ein vorheriger Eintrag für e konnte spätestens am Ende von Abschnitt ∆ gelöscht worden sein.

Nach Induktion gilt für die Abschnitte 1 bis ∆: fe

f ist die tatsächliche Anzahl von e, seitdem es eingefügt wurde, d.h. die tatsächliche Anzahl von e in den Abschnitten 1 bis bcurrent ist höchstens f + ∆.

(10)

Lemma 3

Falls e nicht in D vorhanden ist, gilt feε⋅N

Beweis:

Folgt aus Lemma 1 und Lemma 2.

Lemma 4

Falls e , f , ∆∈D gilt f≤fefεN Beweis:

Falls ∆ = 0, ist f = fe .

Falls ∆ > 0, wurde e möglicherweise ein paarmal gelöscht in den ersten ∆ Abschnitten.

Aus Lemma 2 folgt: fef .

Da ∆≤bcurrent−1≤εN folgt ffefε⋅N .

Beweis des Theorems:

Sei B = bcurrent die ID des aktuellen Abschnitts.

Für jedes i∈[1,B] sei di die Anzahl der Einträge in D, deren Abschnitts-ID B-i+1 ist.

Ein Element, das sich auf solch einen Eintrag bezieht, muß mindestens i-mal in den Abschnitten B-i+1 bis B vorkommen, ansonsten wäre es gelöscht worden.

Da die Größe eines Abschnitts w ist, erhalten wir:

i=1 j

idijw für j = 1,2,...,B (1)

Wir zeigen mit Induktion über j, daß

i=1 j

di

i=1

j w

i für j = 1,2,...,B (2) Induktionsanfang: j = 1

folgt direkt aus der Ungleichung (1) Induktionsschritt:

Angenommen die Ungleichung (2) ist wahr für j = 1,2,..., p – 1.

Wir werden zeigen, daß sie dann auch für j = p gilt.

(11)

D.h. nach Induktion und (1) gilt:

i=1 p

i⋅di

i=1 1

di

i=1 2

di...

i=1 p−1

dipw

i=1

1 w

i

i=1

2 w

i ...

i=1

p−1 w

i

Daraus folgt:

p

i=1 p

dipw

i=1

p−1p−1⋅w i

Es ist pw

i=1

p−1p−1⋅w

i =pw

i=1 p−1 pw

i −w=pw−p−1⋅w

i=1 p−1 pw

i =pw

pp

i=1

p−1 w

i =p

i=1

p w

i

Nachdem wir beide Seiten durch p teilen:

i=1 p

di

i=1

p w

i , mit j = p folgt die Behauptung.

Es gilt | D | =

i=1 B

di

Mit Ungleichung (2) erhalten wir:

D∣≤

i=1

B w

i ≤1 ε

i=1

B 1

i=1

εHB≤1

εlogB≤1

ε logεN

(12)

Vergleich von Lossy Counting und Sticky Sampling

Speicherplatzverbrauch

Allgemein:

Je kleiner ε und s sind, desto höher ist der Speicherplatzverbrauch.

Je kleiner ε ist, desto größer sind die Abschnitte und desto seltener wird gelöscht Lossy Counting

schlechtester Fall: 1

εlogεN Einträge wächst logarithmisch mit N

Sticky Sampling

schlechtester Fall: 2 εlog1

s⋅1

δ = 2t Einträge konstant, unabhängig von der Länge des Datenstroms

Wann kommt es zum schlechtesten Fall?

Lossy Counting

Ungünstig sind Elemente mit insgsamt niedriger Häufigkeit, die in einem kleinen Bereich häufig auftreten und so erst ziemlich spät gelöscht werden.

Sticky Sampling

Der schlechteste Fall ist ein Datenstrom in dem kein Element doppelt vorkommt.

Einzelne Elemente werden länger gespeichert, da sie nur mit einer Wahrscheinlichkeit von ½ gelöscht werden.

Vergleich der Algorithmen mit unterschiedlichen Datenstromverteilungen

Wir betrachten den Speicherplatzverbrauch der Algorithmen für zwei verschiedene Datenströme.

Einmal nehmen wir einen Datenstrom, der keine doppelten Elemente enthält, das andere Mal nehmen wir einen Datenstrom der nach der Zipf-Verteilung angordnet ist. (Elemente mit hoher Wahrscheinlichkeit kommen zu Beginn).

In der Praxis werden sich die meisten Datenströme dazwischen befinden.

Zipf-Verteilung

Dies ist eine diskrete Wahrscheinlichkeitsverteilung, die natürlichen Zahlen x = 1,2,3,...

die Wahrscheinlichkeiten P(X = x) = x−s

ζs zuordnet, wobei s > 1.

Dabei ist ζs=

1s

(13)

Lossy Counting (keine doppelten Elemente)

Jedes Element kommt nur einmal vor. An jedem Abschnittsende werden alle Elemente gelöscht, da die Löschregel für jedes Element zutrifft.

Die höchste Anzahl Einträge, die gespeichert wird, ist w=

1ε

(die Länge eines Abschnitts).

Lossy Counting (Zipf-Verteilung)

Es gibt wenig häufige Elemente und viele seltene Elemente. Seltene Elemente werden schneller aus D gelöscht. Insgesamt kommen dadurch weniger verschiedene Elemente vor, die gespeichert werden müssen.

Sticky Sampling (keine doppelten Elemente)

Die ersten 2t Elemente werden komplett in S gespeichert, da wir sie mit Wahrscheinlichkeit 1 übernehmen. Anschließend werden beim Löschvorgang etwa die Hälfte aus S entfernt. Es bleiben etwa t Elemente in S.

Die nächsten 2t Elemente werden mit Wahrscheinlichkeit ½ in S gespeichert. Also haben wir, bevor wir löschen, insgesamt 2t Elemente in S. Beim Löschvorgang werden wieder etwa die Hälfte der Elemente aus S entfernt.

Die nächsten 4t Elemente werden mit Wahrscheinlichkeit ¼ in S gespeichert, u.s.w.

D.h. in jedem Abschnitt kommen etwa t Elemente hinzu und an jedem Abschnittsende werden etwa t Elemente aus S entfernt. Die Anzahl der Elemente in S schwankt also zwischen t und 2t.

Sticky Sampling (Zipf-Verteilung)

Die ersten 2t Elemente werden komplett in S gespeichert, allerdings werden deutlich weniger als 2t Einträge in S produziert, da wir vor allem am Anfang häufig vorkommende Elemente vorfinden, die nicht neu in S eingetragen werden müssen.

Mit wachsendem N nimmt die Häufigkeit der Elemente ab, d.h. je größer N wird, desto mehr neue Elemente werden in S aufgenommen. Allerdings werden neue Elemente mit immer geringerer Wahrscheinlichkeit aufgenommen.

Länge des Datenstroms:

N = 10000000 s = 0,01 (1%) ε = 0,001 (0,1 %)

Wahrscheinlichkeit eines

Fehlschlags bei Sticky Sampling:

δ = 0,0001

Parameter der Zipfverteilung: 1,25

(14)

Fazit

Lossy Counting benötigt für beide Datenströme wesentlich weniger Einträge als Sticky Sampling.

Sticky Sampling neigt dazu Elemente mit niedrigen Häufigkeiten zu speichern, wohingegen Lossy Counting diese Elemente relativ schnell löscht.

Insgesamt sind beide Algorithmen besser, wenn die eingehenden Daten nach Häufigkeiten sortiert sind. Sie benötigen dann weit weniger Platz, als im schlechtesten Fall.

Lossy Counting bewährt sich in der Praxis also besser, da auch der für Lossy Counting ungünstigste Fall sehr unwahrscheinlich auftritt.

Literatur

[1] Gurmeet Singh Manku und Rajeev Motwani: Approximate Frequency Counts over Data Streams. In: Proceedings of the 28th International Conference on Very Large Data Bases, August 2002

[2] Jeffrey Xu Yu, Zhihong Chong, Hongjun Lu und Aoying Zhou: False Positive or False

Negative: Mining Frequent Itemsets from High Speed Transactional Data Streams. In: Proceedings of the International Conference on Very Large Data Bases, Seiten 204-215, 2004

[3] Hua-Fu Li, Suh-Yin Lee und Man-Kwan Shan: An Efficient Algorithm for Mining Frequent Itemsets over the Entire History of Data Streams. In: Proceedings of First International Workshop on Knowledge Discovery in Data Streams, held in conjunction with the 15th Euopean Conference on Machine Learning (ECML 2004) and the 8th European Conference on the Principals and Practice of Knowledge Discovery in Databases (PKDD 2004), 20-24 September 2004

Referenzen

ÄHNLICHE DOKUMENTE

[r]

In der Richtung nach dem Thurme von Wölsikendorf, nach vorwärts 19 Schritt, nach rückwärts 20 Schritt vom Centrum entfernt, sind zwei Klötze versenkt, und in der darauf

Ansicht einer Emma mitplastischem Omament v T.d. mit plastischem Ornamsm „ms &amp;. iSi.ufij neben &amp;. '\5t uR.)@1astab} Ansicht einer hemalcen Blättawe]le

[r]

F¨ ur die Teilnahme an der ¨ Ubungsklausur ist keine Anmeldung

Daniel Radcliffe (Harry Potter) singt &#34;The

Um eine variable r¨ aumliche Aufl¨ osung zu erm¨ oglichen, wird die Methode der finiten Elemente verwendet.. Das Modellgitter ist unstrukturiert und als Elemente werden

Wenn man von der Bedeutung des Mediums „Buch“ einmal absieht, das zur Begründung eines Bibliotheksbaus von Barth herangezogen wird, aber letztlich nicht ausreichen wird, um den Kos-