Optimale Histogramme
Daniel [email protected]
2Was sind Histogramme? (1)
Daten von 1500 Befragten in 6 BalkenWas, wenn man das Alter der Befragten in 6 Balken erfassen will? Grenzen einfach bei 15, 30, 45, 60, 75 ziehen?
3Was 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.
4Praktische Verwendung von Histogrammen (1)
In der Informatik hauptsächlich im Bereich der Datenbanken bzw. Anfragenverarbeitung.
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.
011010110
5Praktische 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 derV-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.
6Weitere 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.
7Bisherige 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.
8Bisherige 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.
9Die 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.
10Wichtige 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 Fin B disjunkte Intervalle,
– wobei B << N.– Das ist die Reduktion von N auf B Container.
11Wichtige 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
12Wichtige 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:
13Lö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 rekursivfib(0) = 0fib(1) = 1fib(n) = fib(n-1) + fib(n-2)
14Lösungsmethode: dynamische Programmierung (2)
Fibonacci-Zahlen iterativ via dynamischer Programmierung:
f_vorletzte = 0f_letzte = 1for i = 2 to n do
f_aktuell = f_letzte + f_vorletztef_vorletzte = f_letztef_letzte = f_aktuelle
end forreturn f_aktuell
f_letzte und f_vorletzte müssen als Zwischenergebnisse gespeichert werden.
Diese Lösung ist wesentlich effizienter.
15Space-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
16Grundalgorithmus (1)
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äfix-Vektor F[1, i] bei k Containern.Grundüberlegung hinter dem Algorithmus:
17Grundalgorithmus (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.
18Grundalgorithmus (3)
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.
19Grundalgorithmus (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)
20Verbesserung 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 vonSSE*(j, k-1) + SSE([j+1, i]) wird gespeichert.
– Wird ein Wert von SSE([j+1, i]) > S0 berechnet kann abgebrochen werden.
21Verbesserung 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.
22Approximationsverfahren (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)
23Approximationsverfahren (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.
24Vergleich der Algorithmen (1)
Laufzeit
Vergleichsdaten sind Zipf-verteilt.B = 100 Container.Bei Approximationsverfahren L=20 Bereiche.
Bsp. für Zipf-Verteilung
25Vergleich der Algorithmen (2)
Laufzeiten der neuen Algorithmen
26Vergleich der Algorithmen (3)
Eine Funktion über das dritte Attribut des „SGI adult data set“ mit 732 unterschiedlichen Werten.
Datensatz D1
Das Gehalt von Mitarbeitern von Census mit insgesamt 302000 unterschiedlichen Werten.
Datensatz D2
27Vergleich der Algorithmen (4)
Auswirkung der Containergröße auf den Fehler
Datensatz D1 Datensatz D2
28Vergleich der Algorithmen (5)
Auswirkung der Datengröße auf den Fehler
Datensatz D1
29Error-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.
30Qualitätsgarantien
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.
31Arbeitslast-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
32Resü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.
33Resü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.
H. V. Jagadish, Nick Koudas, S. Muthukrishnan, Viswanath Poosala, Ken Sevcik, Torsten Suel, Optimal Histograms with Quality Gurantees, 1998.Grafik zur Sonntagsfrage, www.tagesschau.deGrafik zu Zipf, www.ucl.ac.uk/~ucbplrd/language_middle.htm
Quellen
Top Related