Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Was sind Histogramme? (1)

Ähnliche Präsentationen


Präsentation zum Thema: "Was sind Histogramme? (1)"—  Präsentation transkript:

0 Daniel Aigner aigner@mathematik.uni-marburg.de
Optimale Histogramme Daniel Aigner

1 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?

2 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.

3 Praktische 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.

4 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.

5 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.

6 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.

7 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.

8 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.

9 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.

10 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

11 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:

12 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)

13 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.

14 Space-Bounded Histogram
Zur Berechnung des optimalen Histogramms bei gegebener Anzahl an Containern werden im folgenden drei verschiedene Algorithmen vorgestellt: Grundalgorithmus für das optimale Histogramm Verbesserung des Grundalgorithmus Approximationsverfahren

15 Grundalgorithmus (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:

16 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.

17 Grundalgorithmus (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.

18 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)

19 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.

20 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.

21 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)

22 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.

23 Vergleich der Algorithmen (1)
Laufzeit Vergleichsdaten sind Zipf-verteilt. B = 100 Container. Bei Approximationsverfahren L=20 Bereiche. Bsp. für Zipf-Verteilung

24 Vergleich der Algorithmen (2)
Laufzeiten der neuen Algorithmen

25 Vergleich der Algorithmen (3)
Datensatz D1 Datensatz D2 Eine Funktion über das dritte Attribut des „SGI adult data set“ mit 732 unterschiedlichen Werten. Das Gehalt von Mitarbeitern von Census mit insgesamt unterschiedlichen Werten.

26 Vergleich der Algorithmen (4)
Datensatz D1 Datensatz D2 Auswirkung der Containergröße auf den Fehler

27 Vergleich der Algorithmen (5)
Datensatz D1 Auswirkung der Datengröße auf den Fehler

28 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.

29 Qualitä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.

30 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

31 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.

32 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, Grafik zu Zipf,


Herunterladen ppt "Was sind Histogramme? (1)"

Ähnliche Präsentationen


Google-Anzeigen