Optimale Histogramme

Download Report

Transcript Optimale Histogramme

Optimale Histogramme
Daniel Aigner
[email protected]
Was sind Histogramme? (1)
Daten von 1500 Befragten in 6 Balken
Was, wenn man das Alter der Befragten in 6 Balken
erfassen will? Grenzen einfach bei 15, 30, 45, 60, 75 ziehen?
1
Was sind Histogramme? (2)
 Ein Histogramm fasst einen großen Datensatz zusammen
und approximiert diesen.
 Dabei entstehen Ungenauigkeiten/Fehler.
 Die Anzahl der Container und die Wahl der Grenzen
zwischen den Containern entscheiden über die Größe des
Fehlers.
 Optimale Histogramme berechnen bedeutet also, die
Grenzen zwischen den Containern so aufzuteilen, dass
der Fehler minimiert wird.
2
Praktische Verwendung von Histogrammen (1)
 In der Informatik hauptsächlich im Bereich der
Datenbanken bzw. Anfragenverarbeitung.
011010110
 Kommt eine Anfrage wie “Gebe diejenigen Produkte
aus, die mehr als 10€ kosten“,
kann mit Hilfe der Histogramme abgeschätzt werden, wie
viele Datensätze die Anfrage erfüllen.
 Betrifft eine Anfrage weniger als 10% der gesamten Daten
ist es am sinnvollsten, über eine Indexstruktur auf die
Daten zuzugreifen.
 Werden mehr als 10% abgefragt ist es günstiger, direkt auf
die Datenbank zuzugreifen.
3
Praktische Verwendung von Histogrammen (2)
 Dieses Verhältnis von den betroffenen Datensätzen zu den
gesamten Daten heißt die Selektivität.
Selektivität = #Matches / #Datenbestände
 Bei der Anfragenverarbeitung kommt der Typ der
V-Optimalen Histogramme zum Einsatz.
 Erfahrungswerte haben gezeigt, dass für den Einsatz in
Datenbanksystemen besonders gute Abschätzungen
liefern.
 In anderen Einsatzgebieten könnten andere Histogramme
bessere Abschätzungen liefern.
4
Weitere Eigenschaften von Histogrammen
 Schön wäre es, zu einer Anfrage an ein Histogramm auch
eine gute Fehlerschranke angeben zu können.
 Qualitäts-Garantien die für das gesamte Histogramm
gelten sind evtl. wichtige Anhaltspunkte für den Benutzer.
 Das Histogramm soll möglichst auf den späteren
Einsatzzweck hin optimiert werden.
(So wie V-Optimale Histogramme für Datenbanksysteme)
 Dazu müssen die Informationen über die spätere
Arbeitslast in die Berechnung des Histogramms
einfließen können.
5
Bisherige Algorithmen (1)
 Es existieren bereits mehrere Algorithmen um
Histogramme zu berechnen.
 Diese sind meistens sehr schnell, dafür aber nicht
besonders genau, geschweige denn optimal, liefern also
große Fehler.
6
Bisherige Algorithmen (2)
 MHIST: Eine Greedy Heuristik, die immer den Container
mit dem höchsten Fehler aufteilt.
 MaxDiff: Hierbei werden neue Grenzen immer zwischen
die zwei Werte gesetzt, die die größte Differenz aufweisen.
 EquiDepth: Bei dieser Heuristik wird die Zuteilung so
gewählt, dass die summierten Werte innerhalb eines
Containers für jeden Container möglichst gleich sind.
 EquiWidth: Die triviale Methode, bei der einfach immer
gleich viele Elemente in einen Container kommen.
7
Die zwei Ansätze
 Grundsätzlich zwei verschiedene Herangehensweisen, um
ein optimales Histogramm zu berechnen:
– Bei einer festen Größe (Anzahl der Container) den
Fehler minimieren:
Space Bounded Histogram
– Bei gegebener Fehlerschranke die Anzahl der
Container minimieren:
Error Bounded Histogram
 Der zweite Ansatz wird auch als Duales Problem
bezeichnet.
8
Wichtige Definitionen (1)
 Ausgehend von einer Relation R mit einem Attribut X:
 Vektor V = die Menge aller Werte von X die in R
auftreten, aufsteigend sortiert.
 Frequenz f(v) = Anzahl der Elemente t є R mit t.X = v
 Frequenz-Vektor F = {f(v1), f(v2), f(v3), … , f(vN)}
mit N = |V| = Anzahl der verschiedenen Werte von X
 Histogramm H: Stellt die Verteilung der Werte von X da.
– Durch Partitionierung des Frequenz-Vektors F
in B disjunkte Intervalle,
– wobei B << N.
– Das ist die Reduktion von N auf B Container.
9
Wichtige Definitionen (2)
Beispiel:
 Frequenz-Vektor mit 13 Elementen
F = {5, 4, 7, 10, 13, 17, 16, 17, 14, 9, 9, 2}
soll aufgeteilt werden in ein Histogramm mit 5 Containern:
 H = {(5, 4, 7), (10, 13), (17, 16, 17), (14, 9, 9), (4, 2)}
– h1 = AVG(5, 4, 7) = 16/3
– h2 = 23/2, h3 = 50/3, h4 = 32/3, h5 = 6/2
 Der Wert hi jedes Intervalls ist der Durchschnitt der Werte
in dem Intervall.
 Andere Unterteilung von F auch möglich:
H‘ = {(5), (4), (7), (10), (13, 17, 16, 17, 14, 9, 9, 4, 2)}
 Wert des 6. Elements (=17):
– Nach H: 16,667. Nach H‘: 11,222
10
Wichtige Definitionen (3)
 Durch Unterteilung des Frequenzvektors in Intervalle
definiert sich also das Histogramm.
 Grenzen so wählen, dass der Fehler minimal ist.
 Der Fehler wird berechnet über eine Fehlermetrik.
 Hier: summierter quadratischer Fehler,
Sum Squared Error = SSE.
 SSE kommt auch bei V-Optimalen Histogrammen zum
Einsatz.
 Für ein Intervall [a, b] wird der SSE wie folgt berechnet:
11
Lösungsmethode: dynamische Programmierung (1)
 Dynamische Programmierung ist das Lösen eines
Problems durch herunterbrechen auf und lösen von
Teilproblemen.
 Insbesondere ohne die kostenintensive Rekursion.
 Es wird Iterativ vorgegangen.
 Dabei werden die Lösungen der Teilprobleme für die
spätere Berechnung zwischengespeichert.
 Beispiel: Fibonacci-Zahlen rekursiv
fib(0) = 0
fib(1) = 1
fib(n) = fib(n-1) + fib(n-2)
12
Lösungsmethode: dynamische Programmierung (2)
 Fibonacci-Zahlen iterativ via dynamischer
Programmierung:
f_vorletzte = 0
f_letzte = 1
for i = 2 to n do
f_aktuell = f_letzte + f_vorletzte
f_vorletzte = f_letzte
f_letzte = f_aktuelle
end for
return f_aktuell
 f_letzte und f_vorletzte müssen als
Zwischenergebnisse gespeichert werden.
 Diese Lösung ist wesentlich effizienter.
13
Space-Bounded Histogram

Zur Berechnung des optimalen Histogramms bei
gegebener Anzahl an Containern werden im folgenden
drei verschiedene Algorithmen vorgestellt:
1. Grundalgorithmus für das optimale Histogramm
2. Verbesserung des Grundalgorithmus
3. Approximationsverfahren
14
Grundalgorithmus (1)
15
Ziel ist es, den gesamten Frequenz-Vektor F = F[1, N] so in
B Intervalle zu unterteilen, dass der gesamte Fehler des
Histogramms minimal ist.
Rekursiver Ansatz, dann via dynamischer Programmierung
die Rekursion auflösen.
SSE([a, b]) hat den Fehler für das Intervall [a, b] berechnet.
Definiere SSE*(i, k) als den minimalen Fehler für den PräfixVektor F[1, i] bei k Containern.
Grundüberlegung hinter dem Algorithmus:
Grundalgorithmus (2)
Beispiel: Berechnung des SSE*(20, 5)
– Also das Minimum des Präfix-Vektors F[1, 20],
– aufgeteilt in 5 Container.
16 verschiedene Möglichkeiten die Grenze (j) zwischen den letzten zwei
Containern zu setzen.
Der linke Bereich SSE*(j, k-1) berechnet sich rekursiv.
16
Grundalgorithmus (3)
17
 Die Unterteilung des Histogramms bekommt man dadurch,
dass man für jeden Rekursionsschritt den Wert von j
speichert.
 Damit hat man alle Grenzen zwischen den Containern
abgespeichert.
 Als nächstes: Auflösen der Rekursion.
Grundalgorithmus (4)
 Den SSE*(i, k) iterativ berechnen über 1≤k<B und für
jedes feste k über 1≤i<N.
 Mit SSE*(N, B) hat man den minimalen Fehler des
gesamten Histograms (und damit auch die optimale
Unterteilung in B Container) berechnet.
 Aufwand für die Berechnung:
– Zwei Schleifen über k und j: O(B·N)
– SSE*(i, k) für jedes feste i und k: O(B)
– Insgesamt: O(B2·N)
18
Verbesserung des Grundalgorithmus (1)
 Beobachtung: SSE([j, i]) fällt monoton über j.
 Damit ist es nicht nötig, die Schleife über j komplett zu
durchlaufen:
– j von oben nach unten durchlaufen.
– Das bisher gefundene Minimum S0 von
SSE*(j, k-1) + SSE([j+1, i]) wird gespeichert.
– Wird ein Wert von SSE([j+1, i]) > S0 berechnet kann
abgebrochen werden.
19
Verbesserung des Grundalgorithmus (2)
 Weitere Beobachtung: SSE*(j, k) wächst monoton über j.
 Über binäre Suche kann damit eine untere Grenze für j
gefunden werden, bei der die Schleife abgebrochen
werden kann.
 Näheres siehe Skript.
 Aufwand des verbesserten Algorithmus:
– Im Worst-Case hat auch der verbesserte Algorithmus
eine Laufzeit von O(B2·N).
– Im allgemeinen Fall ist die Laufzeit deutlich besser.
20
Approximationsverfahren (1)
 Vorheriges Aufteilen des Frequenzvektors F in L gleich
große Bereiche.
 Berechnung des optimalen Histogramms mit B/L
Containern für jeden Bereich.
 Insgesamt wieder B Container.
 Laufzeit: O((N2·B)/L2)
21
Approximationsverfahren (2)
 Beispiel:
– Aus Frequenzvektor F mit 100 Elementen ein
Histogramm mit B=20 Containern berechnen.
– Vorheriges Aufteilen von F in L=4 Bereiche zu je 25
Elementen.
– Berechnung des opt. Histogramms für jeden Bereich
mit 5 Containern.
22
Vergleich der Algorithmen (1)
23
Laufzeit
Vergleichsdaten sind Zipf-verteilt.
B = 100 Container.
Bei Approximationsverfahren L=20
Bereiche.
Bsp. für Zipf-Verteilung
Vergleich der Algorithmen (2)
Laufzeiten der neuen Algorithmen
24
Vergleich der Algorithmen (3)
Datensatz D1
Eine Funktion über das dritte
Attribut des „SGI adult data set“
mit 732 unterschiedlichen Werten.
25
Datensatz D2
Das Gehalt von Mitarbeitern von
Census mit insgesamt 302000
unterschiedlichen Werten.
Vergleich der Algorithmen (4)
Datensatz D1
26
Datensatz D2
Auswirkung der Containergröße auf den Fehler
Vergleich der Algorithmen (5)
Datensatz D1
Auswirkung der Datengröße auf den Fehler
27
Error-Bounded Histogram

Zu einer gegebenen Fehlerschranke den Platzbedarf
(Anzahl der Container) minimieren.

Der Primäre Ansatz
– Iterativ über die Anzahl der Container das optimale
Histogramm berechnen.
– Abbrechen sobald man ein Histogramm berechnet hat
das die Fehlerschranke erfüllt.

Approximationsverfahren
– Siehe Skript.
28
Qualitätsgarantien
29
 Generelle Fehlerschranke für das gesamte Histogramm ist
ungenau.
 Besser: Fehlerschranke eines jeden Containers einzeln zu
dem Container abspeichern.
 Nachteil: Speicherbedarf.
 Evtl. auch nur Speichern eines binären Bitwertes „gut“
oder „schlecht“ zu jedem Container.
Arbeitslast-Informationen
Informationen über den Einsatzzweck des Histogramms nutzen.
Den Fehler im praktischen Einsatz weiter verbessern.
Beispiel:
– Daten: Umsätze eines Geschäfts mit Zeitangabe.
– Anfragen beziehen sich häufig auf ganze Monate.
– Fehlermetrik so wählen, dass sie einen großen Fehler erzeugt,
wenn Daten aus verschiedenen Monaten in einem Container
liegen.
Beispiel für den Einfluss von Arbeitslast-Informationen
30
Resümee (1)
 Effektive Berechnung eines optimalen Histogramms durch
rekursive Herangehensweise und Auflösung durch dynamische
Programmierung.
 Aufwand kann durch Verbesserungen weiter reduziert werden.
 Approximationsverfahren verbessert die Laufzeit noch einmal
um zwei Größenordnungen.
 Trotzdem noch eine wesentlich bessere Genauigkeit als die
bisher bekannten Methoden.
 Mit etwas zusätzlichen Speicherbedarf können gute
Fehlerabschätzungen zu einer Anfrage gemacht werden.
31
Resümee (2) & Quellen
Arbeitslast-Informationen können in die Berechnung des
Histogramms einfließen.
Dadurch lässt sich das Histogramm noch besser an den späteren
praktischen Einsatz anpassen.
Quellen
H. V. Jagadish, Nick Koudas, S. Muthukrishnan, Viswanath Poosala,
Ken Sevcik, Torsten Suel, Optimal Histograms with Quality Gurantees,
1998.
Grafik zur Sonntagsfrage, www.tagesschau.de
Grafik zu Zipf, www.ucl.ac.uk/~ucbplrd/language_middle.htm
32