data warehouses und data mining online transaction processing data warehouse-anwendungen data mining

Post on 05-Apr-2015

111 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Data Warehouses und Data Mining

Online Transaction Processing

Data Warehouse-Anwendungen

Data Mining

OLTP: Online Transaction Processing

Beispiele:FlugbuchungssystemBestellungen in einem Handelsunternehmen

Charakteristisch:Hoher ParallelitätsgradViele (1000+/sec) kurze TransaktionenTransaktionen bearbeiten nur ein kleines Datenvolumen

"Mission-critical" für das UnternehmenHohe Verfügbarkeit muss gewährleistet sein

Normalisierte Relationen (möglichst wenig Update-Kosten)

Nur wenige Indexe

Data Warehouse-Anwendungen:OLAP (Online Analytical Processing)

Wie hat sich die Auslastung der Transatlantikflüge über die letzten zwei Jahre entwickelt?

oder

Wie haben sich besondere offensive Marketingstrategien für bestimmte Produktlinien auf die Verkaufszahlen ausgewirkt?

Im Gegensatz zu OLTP stehen bei OLAP etwa folgendeFragestellungen im Zentrum:

Sammlung und periodische Auffrischung der Data Warehouse-Daten

Data Warehouse

OLTP-Datenbankenund andere Datenquellen

OLAP-AnfragenDecision Support

Data Miningextract, transform, load

Datenbank-Design für Data Warehouses: Stern-SchemaStern-Schema eines Date Warehouse:

Eine sehr große Faktentabelle:Alle Verkäufe der letzten drei JahreAlle Telefonate des letzten JahresAlle Flugreservierungen der letzten fünf Jahre

Normalisiert

Mehrere Dimensionstabellen:ZeitFilialenKundenProduktOft nicht normalisiert

Das Stern-Schema: Handelsunternehmen

Verkäufe

Zeit

Verkäufer

ProdukteKunden

Filialen

Fremdschlüssel-beziehungen

Das Stern-Schema: Krankenversicherung

Behandlungen

Zeit

Krankheiten

ÄrztePatienten

Krankenhäuser

Stern-SchemaVerkäufe

VerkDatum

Filiale Produkt Anzahl Kunde Verkäufer

25-Jul-00

Passau 1347 1 4711 825

... ... ... ... ... ...

FilialenFilialenKennung

Land Bezirk

..

.Passau D Bayer

n...

... ... ... ...

KundenKundenNr

Name wieAlt

...

4711 Kemper

43 ...

... ... ... ...

VerkäuferVerkäuferNr

Name Fachgebiet

Manager wieAlt ...

825 Handyman Elektronik

119 23 ...

... ... ... ... ... ...

• Faktentabelle (typischerweise SEHR groß, 1.000.000+ Tupel)

Dimensionstabellen (relativ klein)

Stern-Schema (cont‘d)

ZeitDatum Tag Monat Jah

rQuartal

KW Wochentag Saison

25-Jul-00

25 7 2000

3 30 Dienstag Hochsommer

... ... ... ... ... ...

18-Dec-01

18 12 2001

4 52 Dienstag Weihnachten

... ... ... ... ... ... ... ...

ProdukteProduktNr

Produkttyp

Produktgruppe

Produkthauptgruppe

Hersteller

.

.1347 Handy Mobiltelek

omTelekom Siemens .

.... ... ... ... ... .

.

• Typische Tupel-Anzahl: 1000 (3 Jahre)

• Typische Tupel-Anzahl: 10.000 (Katalog)

Nicht-normalisierte Dimensionstabellen: Hierarchische Klassifizierung

ZeitDatum Tag Monat Jah

rQuartal

KW Wochentag Saison

25-Jul-00

25 7 2000

3 30 Dienstag Hochsommer

... ... ... ... ... ...

18-Dec-01

18 12 2001

4 52 Dienstag Weihnachten

... ... ... ... ... ... ... ...

ProdukteProduktNr

Produkttyp

Produktgruppe

Produkthauptgruppe

Hersteller

.

.1347 Handy Mobiltelek

omTelekom Siemens .

.... ... ... ... ... .

.

Geltende FDs: Datum Monat Quartal

ProduktNr Produkttyp Produktgruppe Produkthauptgruppe

Normalisierung führt zum Schneeflocken-Schema

Verkäufe

ZeitVerkäufer

Produkte

KundenFilialen

Quartale

KWs

Produkttypen

Produktgruppen

Produkthaupt-gruppen

Typische Anfragen gegen Stern-Schemata: Analyse

SELECT SUM(v.Anzahl), p.Hersteller

FROM Verkäufe v, Filialen f, Produkte p, Zeit z, Kunden k

WHERE z.Saison = 'Weihnachten' and

z.Jahr = 2001 and k.wieAlt < 30 and

p.Produkttyp = 'Handy' and f.Bezirk = 'Bayern' AND

v.VerkDatum = z.Datum and v.Produkt = p.ProduktNr and

v.Filiale = f.FilialenKennung and v.Kunde = k.KundenNr

GROUP BY p.Hersteller;

Einschränkungder Dimensionen

Join-Prädikate

"Wieviele Handys welcher Hersteller haben junge Kunden in denBayerischen Filialen zu Weihnachten 2001 gekauft?"

Verdichtung

Verdichtung

Algebra-Ausdruck (Star Join)

Verkäufe

...(Filialen)

...(Zeit)...(Kunden)

...(Produkte)

Grad der Verdichtung: Roll-up/Drill-DownSELECT Jahr, Hersteller, SUM(v.Anzahl)

FROM Verkäufe v, Produkte p, Zeit z

WHERE v.Produkt = p.ProduktNr AND v.VerkDatum = z.Datum

AND p.Produkttyp = 'Handy'

GROUP BY p.Hersteller, z.Jahr;

SELECT Jahr, SUM(v.Anzahl)

FROM Verkäufe v, Produkte p, Zeit z

WHERE v.Produkt = p.ProduktNr AND v.VerkDatum = z.Datum

AND p.Produkttyp = 'Handy'

GROUP BY z.Jahr;

Roll-up

Drill-down

Analyse von Handyverkaufszahlennach verschiedenen Dimensionen

Rol

l-up

Drill-

Dow

n

Analyse von Handyverkaufszahlennach verschiedenen Dimensionen

Data Cubes (n-dim. Datenwürfel)

Die Darstellung derart verdichteter Information erfolgt inDecision-Support-Systemen oft spreadsheet-artig (crosstabulation):

Dieser 2-dimensionale data cube fasst alle Anfrageergebnisseder vorhergenden Folie zusammen.

Ultimative Verdichtung

SELECT SUM(Anzahl)

FROM Verkäufe v, Produkte p

WHERE v.Produkt = p.ProduktNr AND p.Produkttyp = 'Handy';

Keine Gruppierung (keine GROUP BY-Klausel) alle Tupel bilden eine einzige Gruppe, bevor aggregiert wird:

Materialisierung von Aggregaten

INSERT INTO Handy2DCube ( SELECT p.Hersteller, z.Jahr, SUM(v.Anzahl) FROM Verkäufe v, Produkte p, Zeit z WHERE v.Produkt = p.ProduktNr and p.Produkttyp = 'Handy' and v.VerkDatum = z.Datum GROUP BY z.Jahr, p.Hersteller ) UNION( SELECT p.Hersteller, NULL, SUM(v.Anzahl) FROM Verkäufe v, Produkte p WHERE v.Produkt = p.ProduktNr and p.Produkttyp = 'Handy' GROUP BY p.Hersteller ) UNION( SELECT NULL, z.Jahr, SUM(v.Anzahl) FROM Verkäufe v, Produkte p, Zeit z WHERE v.Produkt = p.ProduktNr and p.Produkttyp = 'Handy' and v.VerkDatum = z.Datum GROUP BY z.Jahr ) UNION( SELECT NULL, NULL, SUM(v.Anzahl) FROM Verkäufe v, Produkte p WHERE v.Produkt = p.ProduktNr and p.Produkttyp = 'Handy' );

Relationale Struktur der Datenwürfel

Würfeldarstellung

Der CUBE-Operator (SQL:1999)

SELECT p.Hersteller, z.Jahr, f.Land, SUM(v.Anzahl)FROM Verkäufe v, Produkte p, Zeit z, Filialen fWHERE v.Produkt = p.ProduktNr AND p.Produkttyp = 'Handy' AND v.VerkDatum = z.Datum AND v.Filiale = f.FilialenkennungGROUP BY CUBE (z.Jahr, p.Hersteller, f.Land);

• Die Materialisierung von Aggregaten führt zu aufwendigen Anfragen, deren Optimierung für das RDBMS schwierig ist:

• n Dimensionen 2n Unterfragen, verbunden durch UNION• Aggregate könnten hierarchisch berechnet werden

• Folgender CUBE-Operator ersetzt 23 Unteranfragen:

Wiederverwendung von Teil-Aggregaten

Annahme: Folgende Verdichtung liegt in der Datenbank vorausberechnet vor (materialisiert):

INSERT INTO VerkäufeProduktFilialeJahr( SELECT v.Produkt, v.Filiale, z.Jahr, SUM(v.Anzahl) FROM Verkäufe v, Zeit z WHERE v.VerkDatum = z.Datum GROUP BY v.Produkt, v.Filiale, z.Jahr );

Dann läßt sich folgende Anfrage auf der vorausberechneten Verdichtung VerkäufeProduktFilialeJahr berechnen (anstatt auf die Faktentabelle Verkäufe zugreifen zu müssen):

SELECT v.Produkt, v.Filiale, SUM(v.Anzahl)FROM Verkäufe v VerkäufeProduktFilialeJahr vGROUP BY v.Produkt, v.Filiale

Die Materialisierungs-Hierarchie

Teilaggregate T sind für eine Aggregation A wiederverwendbar wenn es einen gerichteten Pfad von T nach A gibt

Also T ... A Man nennt diese Materialisierungshierarchie auch einen Verband (Engl. lattice)

{Produkt, Jahr}

{Produkt}

{Filiale, Jahr}

{ }

{Produkt, Filiale}

{Produkt, Filiale, Jahr}

{Jahr} {Filiale}

Die Zeit-Hierarchie

Tag

Woche (KW)

Monat

Quartal

Jahr

Bitmap-Indexe

Optimierung durch Komprimierung der Bitmaps Ausnutzung der dünnen Besetzung, bspw. durch runlength-compression Speichere jeweils die Länge der Nullfolgen zwischen zwei Einsen

• Typische OLAP-Workloads lassen die Ausnutzung sehr spezifischer Index-Strukuren zu.• Hier: Index auf spezifische Werte eines Attributes mit kleiner diskreter Domäne:

Bitmap-Indexe:Beispiel-Anfrage und Auswertung

Marketing-Aktion: Extrahiere junge, gerade volljährige Kundinnen:

SELECT k.NameFROM Kunden kWHERE k.Geschlecht = 'w' AND k.wiealt BETWEEN 18 AND 19;

Unterstützung der Anfrage durch folgende Operation aufBitmap-Indizes:

(w18 w19) Gw

Bitmap-Operationen

Bitmap-Join-Index

Bitmap-Indizes als Join-IndizesKlassischer Join-Index

Bitmap-Join-Index

B-Baum

TID-V

(i,II)(ii,I)(iii,II)(iv,II)(v,I)(vi,II)...

B-Baum

TID-K

(I,i)(I,v)(II,i)(II,iii)(II,iv)(II,vi)...

B-Baum

TID-V

(i,II)(ii,I)(iii,II)(iv,II)(v,I)(vi,II)...

SELECT k.*

FROM Verkäufe v, Kunden k

WHERE v.ProduktID = 5 AND

v.KundenNr = k.KundenNr

5

5

SELECT v.*

FROM Verkäufe v, Kunden k

WHERE k.KundenNr = 4711 AND

v.KundenNr = k.KundenNrB-Baum

TID-K

(I,i)(I,v)(II,i)(II,iii)(II,iv)(II,vi)...

Erinnerung: Star Join

SELECT SUM(v.Anzahl), p.Hersteller

FROM Verkäufe v, Filialen f, Produkte p, Zeit z, Kunden k

WHERE z.Saison = 'Weihnachten' and

z.Jahr = 2001 and k.wieAlt < 30 and

p.Produkttyp = 'Handy' and f.Bezirk = 'Bayern' AND

v.VerkDatum = z.Datum and v.Produkt = p.ProduktNr and

v.Filiale = f.FilialenKennung and v.Kunde = k.KundenNr

GROUP BY p.Hersteller;

Einschränkungder Dimensionen

Join-Prädikate

"Wieviele Handys welcher Hersteller haben junge Kunden in denBayerischen Filialen zu Weihnachten 2001 gekauft?"

Verkäufe KundenZeit

Filialen

Produkte

Illustration des Star Join

1

1

1

1

1

1

1

1

1

1

1

1

1

1

Verkäufe KundenZeit

FilialenProdukte

Bitmap-Indexe für die Dimensions-Selektion

Bitmap-Join-Index

Bitmap-Indizes als Join-IndizesKlassischer Join-Index

Bitmap-Join-Index

Ausnutzung der Bitmap-Join-Indexe

Verkäufe KundenZeit

FilialenProdukte

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

Eine weitere Join-Methode: DiagJoin Geeignet zur Verfolgung von 1:N-Beziehungen Daten sind geballt (clustered) durch zeitlich nahe Einfügung in beide beteiligten Tabellen

Beispiel:Order (Bestellung)Lineitem (Bestellposition)Order LineitemDie Lineitems einer Order kommen zeitlich kurz hintereinander

Grundidee des DiagJoins besteht darin, synchron über die beiden Relationen zu laufen

Die Orders werden in einem Fenster (sliding window) gehalten

DiagJoinOrder

Customer Order#

Kemper 4711

Maier 5645

Müller 7765

Hummer 9876

Kaller 9965

Lola 3452

Junker 1232

… …

LineItemOrder# Positio

nProdukt

Preis

4711 1 PC …5645 1 Laptop …4711 2 Drucke

r…

4711 3 Toner …5645 2 Hub …7765 1 Fax …4711 4 Papier …5645 3 Handy …7765 2 Mixer …9876 1 Handy …

… … … …

DiagJoinOrder

Customer Order#

Kemper 4711

Maier 5645

Müller 7765

Hummer 9876

Kaller 9965

Lola 3452

Junker 1232

… …

LineItemOrder# Positio

nProdukt

Preis

4711 1 PC …5645 1 Laptop …4711 2 Drucke

r…

4711 3 Toner …5645 2 Hub …7765 1 Fax …4711 4 Papier …5645 3 Handy …7765 2 Mixer …9876 1 Handy …

… … … …

DiagJoinOrder

Customer Order#

Kemper 4711

Maier 5645

Müller 7765

Hummer 9876

Kaller 9965

Lola 3452

Junker 1232

… …

LineItemOrder# Positio

nProdukt

Preis

4711 1 PC …5645 1 Laptop …4711 2 Drucke

r…

4711 3 Toner …5645 2 Hub …7765 1 Fax …4711 4 Papier …5645 3 Handy …7765 2 Mixer …9876 1 Handy …

… … … …

DiagJoinOrder

Customer Order#

Kemper 4711

Maier 5645

Müller 7765

Hummer 9876

Kaller 9965

Lola 3452

Junker 1232

… …

LineItemOrder# Positio

nProdukt

Preis

4711 1 PC …5645 1 Laptop …4711 2 Drucke

r…

4711 3 Toner …5645 2 Hub …7765 1 Fax …4711 4 Papier …5645 3 Handy …7765 2 Mixer …9876 1 Handy …

… … … …

DiagJoinOrder

Customer Order#

Kemper 4711

Maier 5645

Müller 7765

Hummer 9876

Kaller 9965

Lola 3452

Junker 1232

… …

LineItemOrder# Positio

nProdukt

Preis

4711 1 PC …5645 1 Laptop …4711 2 Drucke

r…

4711 3 Toner …5645 2 Hub …7765 1 Fax …4711 4 Papier …5645 3 Handy …7765 2 Mixer …9876 1 Handy …4711 5 Quirl …… … … …

DiagJoinOrder

Customer Order#

Kemper 4711

Maier 5645

Müller 7765

Hummer 9876

Kaller 9965

Lola 3452

Junker 1232

… …

LineItemOrder# Positio

nProdukt

Preis

4711 1 PC …5645 1 Laptop …4711 2 Drucke

r…

4711 3 Toner …5645 2 Hub …7765 1 Fax …4711 4 Papier …5645 3 Handy …7765 2 Mixer …9876 1 Handy …4711 5 Quirl …… … … …

Tupel muss zwischengespeichert und "nachbearbeitet" werden

(temp file).

Anforderungen an den DiagJoin 1:N-Beziehung zwischen beteiligten Tabellen Die "1"-er Tupel sind in etwa dersleben Reihenfolge gespeichert worden wie die "N"-er Tupel

Die Tupel werden in der "time-of-creation"-Reihenfolge wieder von der Platte gelesen (full table scan)

Die referentielle Integrität sollte gewährleistet sein (Warum?)

Das Fenster muss so groß sein, daß nur wenige Tupel nachbearbeitet werden müssen

Nachbearbeitung bedeutet:Tupel auf dem Hintergrundspeicher (temp file) speichern

Den zugehörigen Joinpartner in Order via Index auffinden

Dafür ist ein Index auf Order.Order# hierfür notwendigKein Index nötig für die erste Phase des DiagJoins

Data Mining

Klassifikation

Assoziationsregeln

Data Mining : Klassifikationsregeln Ziel des Data Mining: Durchsuchen großer Datenmengen nach bisher unbekannten Zusammenhängen (Knowledge discovery)

Klassifikation: Treffe "Vorhersagen" auf der Basis bekannter Attributwerte

Vorhersageattribute:V1, V2, ..., Vn

Vorhergesagtes Attribut: A Klassifikationsregel:

P1(V1) P2(V2) ... Pn(Vn) A = cPrädikate P1, P2, .., Pn Konstante c

Beispiel für eine Klassifikationsregel:

(wieAlt>35) (Geschlecht =`m´) (Autotyp=`Coupé´) (Risiko=

´hoch')

Klassifikations/Entscheidungsbaum

Geschlecht

wiealt

Autotyp

geringesRisiko

m

>35

w

<=35

hohesRisiko

geringesRisiko

hohesRisiko

Coupe VanJedes Blatt des Baumesentspricht einer Klassifikationsregel

Klassifikations/Entscheidungsbaum

Geschlecht

wiealt

Autotyp

geringesRisiko

m

>35

w

<=35

hohesRisiko

geringesRisiko

hohesRisiko

Coupe Van

(wieAlt>35) (Geschlecht =`m´) (Autotyp=`Coupé´) (Risiko=´hoch´)

Erstellung von Entscheidungs-/ Klassifikationsbäume Trainingsmenge

Große Zahl von Datensätzen, die in der Vergangenheit gesammelt wurden

Sie dient als Grundlage für die Vorhersage (= Klassifikation) von "neu ankommenden" Objekten

Beispiel: neuer Versicherungskunde wird gemäß dem Verhalten seiner "Artgenossen" eingestuft

Rekursives Partitionieren:Fange mit einem Attribut A an und spalte die Tupelmenge bzgl. ihrer A-Werte

Jede dieser Teilmengen wird rekursiv weiter partitioniert

Fortsetzen, bis nur noch gleichartige Objekte in der jeweiligen Partition sind

Data Mining : Assoziationsregeln Beispielregel:

Wenn jemand einen PC kauft, dann kauft er/sie auch einen Drucker

ConfidenceDieser Wert legt fest, bei welchem Prozentsatz der Datenmenge, bei der die Voraussetzung (linke Seite) erfüllt ist, die Regel (rechte Seite) auch erfüllt ist.

Eine Confidence von 80% für unsere Beispielregel sagt aus, dass vier Fünftel der Leute, die einen PC gekauft haben, auch einen Drucker dazu gekauft haben.

SupportDieser Wert legt fest, wieviele Datensätze überhaupt gefunden wurden, um die Gültigkeit der Regel zu verifizieren.

Bei einem Support von 1% wäre also jeder Hundertste Verkauf ein PC zusammen mit einem Drucker.

Verkaufstransaktionen Warenkörbe

Finde alle Assoziationsregeln L R mit einem Support größer als minsupp

und einer Confidence von mindestens minconf

Dazu sucht man zunächst die sogenannten frequent itemsets (FI), also Produktmengen, die in mindestens minsupp der Einkaufswägen/ Transaktionen enthalten sind

Der A Priori-Algorithmus basiert auf der Erkenntnis, dass alle Teilmengen eines FI auch FIs sein müssen

VerkaufsTransaktionen

TransID

Produkt

111 Drucker111 Papier111 PC111 Toner222 PC222 Scanner333 Drucker333 Papier333 Toner444 Drucker444 PC555 Drucker555 Papier555 PC555 Scanner555 Toner

A Priori Algorithmusfür alle Produkte p

überprüfe ob p ein frequent itemset (Kardinalität 1) ist, also in

mindestens minsupp Einkaufswägen enthalten ist

k := 1

iteriere solange

für jeden frequent itemset Ik mit k Produkten

generiere alle itemsets Ik+1 mit k+1 Produkten und Ik I k+1

lies alle Einkäufe einmal (sequentieller Scan auf der Datenbank)

und überprüfe, welche der (k+1)-elementigen itemset-

Kandidaten mindestens minsupp mal vorkommen

k := k+1

bis keine neuen frequent itemsets gefunden werden

A Priori-AlgorithmusVerkaufsTransaktionen

TransID

Produkt

111 Drucker111 Papier111 PC111 Toner222 PC222 Scanner333 Drucker333 Papier333 Toner444 Drucker444 PC555 Drucker555 Papier555 PC555 Scanner555 Toner

ZwischenergebnisseFI-Kandidat Anzahl{Drucker} 4{Papier} 3{PC} 4{Scanner} 2{Toner} 3{Drucker, Papier} 3{Drucker, PC} 3{Drucker, Scanner} {Drucker, Toner} 3{Papier, PC} 2{Papier, Scanner} {Papier, Toner} 3{PC, Scanner} {PC,Toner} 2{Scanner, Toner}

Disqua-lifiziert

Minsupp=3/5

A Priori-AlgorithmusVerkaufsTransaktionen

TransID

Produkt

111 Drucker111 Papier111 PC111 Toner222 PC222 Scanner333 Drucker333 Papier333 Toner444 Drucker444 PC555 Drucker555 Papier555 PC555 Scanner555 Toner

ZwischenergebnisseFI-Kandidat Anzahl{Drucker, Papier} 3{Drucker, PC} 3{Drucker, Scanner} {Drucker, Toner} 3{Papier, PC} 2{Papier, Scanner} {Papier, Toner} 3{PC, Scanner} {PC,Toner} 2{Scanner, Toner} {Drucker, Papier, PC} 2{Drucker, Papier, Toner}

3

{Drucker, PC, Toner} 2{Papier, PC, Toner} 2

Ableitung von Assoziationsregeln aus den frequent itemsets Betrachte jeden FI mit hinreichend viel support Bilde alle nicht-leeren Teilmengen L FI und untersuche

die Regel L FI – L Die Confidence dieser Regel berechnet sich als:

confidence(L FI – L) = support(FI) / support(L)Falls die Confidence > minconf ist, behalte diese Regel

Betrachte FI = {Drucker, Papier, Toner}, L = {Drucker}support(FI) = 3/5

Regel: {Drucker} {Papier, Toner}confidence = support({Drucker, Papier, Toner}) / support({Drucker})

= (3/5) / (4/5 = ¾ = 75 %

Erhöhung der Confidence Vergrößern der linken Seite (dadurch Verkleinern der rechten Seite) führt zur Erhöhung der ConfidenceFormal: L L+ , R R-

confidence(L R) <= confidence(L+ R - )

Beispiel-Regel: {Drucker} {Papier, Toner}confidence

= support({Drucker, Papier, Toner}) / support({Drucker})

= (3/5) / (4/5) = ¾ = 75%

Beispiel-Regel: {Drucker,Papier} {Toner}Confidence = support({Drucker,Papier,Toner}) /

support({Drucker,Papier}) = (3/5) / (3/5) = 1 = 100%

top related