Generowanie drzew decyzyjnych dla dużych zbiorów danych

45
Generowanie drzew decyzyjnych dla dużych zbiorów danych

description

Generowanie drzew decyzyjnych dla dużych zbiorów danych. Plan wykładu. Problematyki związane z dużymi zbiorami danych Algorytmy generowania drzewa: SPRINT Algorytm sekwencyjny Algorytm równoległy Soft tree: drzewo z „elastycznymi podziałami”. Problemy związane z dużymi zbiorami danych. - PowerPoint PPT Presentation

Transcript of Generowanie drzew decyzyjnych dla dużych zbiorów danych

Page 1: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Generowanie drzew decyzyjnych dla dużych

zbiorów danych

Page 2: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Plan wykładu Problematyki związane z dużymi zbiorami

danych Algorytmy generowania drzewa: SPRINT

Algorytm sekwencyjny Algorytm równoległy

Soft tree: drzewo z „elastycznymi podziałami”

Page 3: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Problemy związane z dużymi zbiorami danych

Dane w praktyce są gigantyczne

Dane nie mieszczą się w pamięci

Dane zawierają szumy (okłamywania)

Generowanie drzewa jest czasochłonne

Page 4: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Algorytmy dla dużego zbioru danych Muszą działać bez założenia o wielkości pamięci Muszą działać w miarę szybko (w akceptowanym

czasie) Muszą dać dobry wynik w przypadku wystąpienia

szumu w zbiorze danych Muszą dać zrozumiałe dla człowieka wyniki Muszą dać dobrą jakość klasyfikacji

Page 5: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Standardowe algorytmy Każdy węzeł stowarzyszony z podzbiorem

danych -> ograniczenie pamięciowe Przy wyznaczeniu najlepszego podziału dane

są wielokrotnie sortowane -> czasochłonne

Page 6: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Miara złożoności zbioru (c.d.) Gini Index: Gini(X) = 1- j [p(j | X)]2

gdzie p(j | X) = Cj / |X|: jest częstość wystąpienia j-tej klasy w zbiorze X

Entropia: Ent(X) = - j p(j | X) log p(j | X)

Konflikt: Conflict(X) = ij CiCj

conflict = 6

conflict = 5

conflict = 8

conflict = 9

Page 7: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Miara jakości podziału Zbiór danych przy węźle t jest podzielony na k części

ni : liczba obiektów w i - tym poddrzewie, n : liczba obiektów w węźle t

Miara Gini:

Kryterium podziału: Minimalizuje GINIsplite Miara Gain:

Kryterium podziału: Maksymalizuje Gainsplite Miara Discern:

Kryterium podziału: Maksymalizuje Discern

)(1

iGiniGinik

inn

Splitei

)()(1

iEnttEntGaink

inn

Splitei

)()(1

iConflicttConflictDiscernk

iSplite

Page 8: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wyznaczanie optymalnego podziału atrybutów rzeczywistych Sortuj wartości atrybutu Przeglądaj kolejną wartość progową, obliczając rozkład klas

decyzyjnych Wybierz wartość progową o najmniejszym GINI index

Page 9: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Złożoność algorytm szukania optymalnego podziału Dany atrybut rzeczywisty a i zbiór możliwych

wartości progowych (1, 2,...N ), najlepszy test (a< i) można znaleźć w czasie (N)

Minimalna liczba prostych zapytań SQL potrzebna do szukania najlepszego testu jest (dN), gdzie d jest liczba klas decyzyjnych

Wada: szukanie najlepszego podziału jest kosztowne, jeśli atrybut zawiera dużo różnych wartości.

Page 10: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Algorytm SPRINT - charakterystykiNadaje się dla danych częściowo

umieszczonych na dyskuUżywa się techniki pre-sortowania w celu

przyspieszenia procesu obliczenia na atrybutach rzeczywistych

Dane są sortowane tylko raz przed obliczeniem

Łatwo można zrównoleglić

Page 11: Generowanie drzew decyzyjnych dla dużych zbiorów danych

SPRINT - struktura danych Każdy atrybut ma swoją listę wartości Każdy element listy ma trzy pole: wartość atrybutu,

numer klasy i rid (numer obiektu w zbiorze danych) Rzeczywiste atrybuty są uporządkowane (tylko raz

przy utworzeniu) Na początku listy są stowarzyszone z korzeniem

drzewa Kiedy węzeł jest podzielony, listy są podzielone i są

stowarzyszone z odpowiednimi następnikami Listy są zapisane na dysku w razie potrzeby

Page 12: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Przykład: listy wartości

Age Class rid17 High 120 High 523 High 032 Low 443 High 268 Low 3

Car Type Class ridfamily High 0sports High 1sports High 2family Low 3truck Low 4family high 5

Page 13: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Podział listy wartości

Page 14: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Struktura danych - Histogram SPRINT używa:

indeksu Gini do oceny jakości podziału funkcji testu typu (a ) dla atrybutów rzeczywistych funkcji testu typu (a V) dla atrybutów symbolicznych

Histogram: rozkład klas decyzyjnych zbadanego zbioru danych

Dla atrybutu rzeczywistego dwa histogramy: Cbelow– histogram dla danych „poniżej” wartości progowej Cabove – histogram dla danych „powyżej” wartości progowej

Dla atrybutu symbolicznego jeden histogram zwany count matrix

Page 15: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Histogram: przykład

Age Class rid17 High 1

20 High 5

23 High 0

32 Low 4

43 High 2

68 Low 3

Histogram klas

5highfamily

4Lowtruck

3Lowfamily

2Highsports

1Highsports

0Highfamily

ridClassCar Type

Punkt podziału

H L

family 2 1

sports 2 0

truck 0 1

Count matrix

Page 16: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wyznaczanie najlepszego podziału - atrybut rzeczywisty Każdy węzeł ma listy wartości obiektów w danym węźle

Wejście: lista wartości atrybutu aWyjście: (a)

1. Cbelow = 02. Cabove = rozkład klas obiektów w danym węźle 3. Przeglądaj kolejną wartość atrybutu

3.1 Oblicz jakość podziału3.2 Modyfikuj Cbelow i Cabove

4. Wybierz najlepszy podział

Page 17: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wyznaczanie podziału-atrybutu rzeczywistego (c.d.)

Page 18: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wyznaczanie podziału -atrybutu symbolicznego

5highfamily

4Lowtruck

3Lowfamily

2Highsports

1Highsports

0Highfamily

ridClassCar Type

10truck

02sports

12family

LH

Count MatrixLista wartości CarType

1. Wyznacz macierz rozkładu klas obiektów w danym węźle 2. Używając algorytmu aproksymacyjnego (w SLIQ) wyznacz podzbiór wartości V Da t. żeby test (aV) był optymalny

Page 19: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wykonanie podziału Każda lista jest podzielona na dwie listy Atrybut testujący: Podziel wartości listy zgodnie z testem

Atrybut nie testujący: Nie można używać testu Używaj rid Skorzystaj z tablicy haszującej

Page 20: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wykonanie podziału (c.d.)- atrybutu nie testującego

Przy podziale atrybutu testującego, wstaw rid rekordów do tablicy haszującej.

Tablica haszująca: informacje o tym do którego poddrzewa rekord został przeniesiony.

Algorytm: Przeglądaj kolejny rekord listy Dla każdego rekordu wyznacz (na podstawie tablicy

haszującej) poddrzewo, do którego rekord ma być przeniesiony

Page 21: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wykonanie podziału (c.d) - duża tablica haszująca Problem: Tablica haszująca nie mieści się w pamięci Algorytm:

Krok 1: Podziel zbiór wartości atrybutu testującego na małe porcje tak, żeby tablica haszująca mieściła się w pamięci

Krok 2: Dla każdej porcji Podziel rekordy atrybutu testującego do właściwego podrzewa Buduj tablicę haszującej Przeglądaj kolejny rekord atrybutu nietestującego i przynieś go do

odpowiedniego poddrzewa jeśli rekord występuje w tablicy haszującej Krok 3: Jeśli wszystkie rekordy zostały przydzielone do

poddrzew stop wpp. goto krok 2

Page 22: Generowanie drzew decyzyjnych dla dużych zbiorów danych

SPRINT – algorytm równoległy Listy wartości atrybutów są równo podzielone Atrybut rzeczywisty:

sortuj zbiór wartości i podziel go na równe przedziały

Atrybut numeryczny: podziel według rid

Każdy procesor ma jedną część każdej listy

Page 23: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Podział zbioru danych

Age Class rid17 High 1

20 High 5

23 High 0

Car Type Class ridfamily High 0

sports High 1

sports High 2

Age Class rid32 Low 4

43 High 2

68 Low 3

Car Type Class ridfamily Low 3

truck Low 4

family high 5

Procesor 1

Procesor 0

Page 24: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wyznaczanie najlepszego podziału –atrybut rzeczywisty

Każdy procesor ma przedział wartości atrybutu Każdy procesor inicjalizuje Cbelow i Cabove

uwzględniając rozkład klas w innych procesorach Każdy procesor przegląda swoją listę i wyznacza

najlepszą lokalną wartość progową Procesory komunikują się w celu szukania

najlepszej globalnej wartości progowej

Page 25: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wyznaczanie najlepszego podziału –atrybut symboliczny

Każdy procesor buduje lokalne count matrix i wysyła wynik do centralnego procesora

Centralny procesor oblicza globalny count matrix

Procesory wyznaczają najlepszy podział na podstawie globalnego count matrix

Page 26: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Histogramy w obliczeniu równoległym

Age Class rid

17 High 1

20 High 5

23 High 0

Age Class rid

32 Low 4

43 High 2

68 Low 3

Process 1

Process 0H L

Cbelow 0 0

Cabove 4 2

H L

Cbelow 3 0

Cabove 1 2

Page 27: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wykonanie podziału Podział atrybutu testującego: Każdy procesor

wyznacza poddrzewa, do których rekordy w lokalnej liście będą przeniesione

Procesory wymieniają ze sobą informacje <rids, poddrzewo>

Podział pozostałych atrybutów: Po otrzymaniu informacji ze wszystkich procesorów każdy procesor buduje tablicę haszującą i wykonuje podziały dla pozostałych atrybutów

Page 28: Generowanie drzew decyzyjnych dla dużych zbiorów danych

SPRINTWada: Dodatkowe struktury danych Nieefektywny jeśli atrybut ma dużo wartości Nie wykorzystuje mocnych narzędzi systemów

baz danych

Page 29: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Drzewo z „elastycznymi podziałami” - klasyfikacja

Page 30: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Elastyczna wartość progowa vs. ostra wartość progowa Standardowy test: (a<) Nowy test: „Elastyczna” wartość progowa: zamiast

przedział (1, 2). Funkcja testu: trójka (a, 1, 2) Zbiór obiektów jest podzielony na trzy podzbiory:

a 1 i a 2: przedziały pewności 1 < a < 2 : przedział niepewności

Page 31: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Drzewo z „elastycznymi podziałami” vs. standardowe drzewo

TaxInc,75,85

<85K >75K

Standardowe drzewo (z ostrym podziałem)

Drzewo z „nieostrym podziałem”

Page 32: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Klasyfikacja nowego obiektu I strategia - fuzzy decision tree:

Przy węzłach wewnętrznych, wyznacz prawdopodobieństwa, że obiekt należy do lewego i do prawego poddrzewa.

Dla każdego liścia, oblicz prawdopodobieństwo tego, że obiekt należy do tego liścia

Klasa, do której należy obiekt jest związana z liściem o największym prawdopodobieństwie

Page 33: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Klasyfikacja nowego obiektu (c.d.) II strategia: rough decision tree Używaj obu poddrzew (jeśli obiekt należy do

przedziału niepewności) Utwórz wektor wyników agregując wyniki

otrzymane z poddrzew Głosuj, żeby znaleźć najlepszą decyzję

Page 34: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wyznaczanie najlepszego podziału Atrybut symboliczny: standardowo Atrybut rzeczywisty: Używaj techniki „dziel i rządź” Używaj zapytań SQL do szybkiego obliczenia

rozkładu klas w przedziałach

Page 35: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Techniki ulepszania Definicja: wartość podziału jest brzegowa, jeśli istnieją

2 kolejne rekordy o1 i o2 takie, że

a(o1) < < a(o2) i d(o1) d(o2)

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

DISCERN()

Page 36: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Techniki ulepszania –Usunąć wartości niegraniczne Obserwacja: optymalna wartość progowa należy do

zbioru wartości granicznych. Wniosek: wartości nie będące brzegowymi można

usunąć ze zbioru możliwych wartości progowych.

Page 37: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Techniki ulepszania –Eliminować skrajne wartości Definicja: Niech i oznacza i-tą klasę decyzyjną.

Mediana(i) jest wartość progowa taka, że |{x: a(x) < i d(x) = i}| = |{x: a(x) i d(x) = i}|

Obserwacja: Funkcja Discern: {1, 2,... k} jest

jest rosnąca w przedziale [1, mini(Median(i))) jest malejąca w przedziale (maxi(Median(i)), k]

Wniosek: Można ograniczyć przedział wyszukiwaniabest [mini(Median(i)), maxi(Median(i))]

Page 38: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Eliminować skrajne wartości (c.d.)

Page 39: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Technika „dziel i rządź” Idea:

Krok 1: Podziel zbiór wartości atrybutu na k przedziałów Krok 2: Oceń jakości przedziałów Krok 3: Wybierz najlepszy przedział Krok 4: Powtórz proces dla najlepszego przedziału

k = 3

Cykl 1:

Cykl 2:

Cykl 3:

a

1 2 4 5 6 7 83

. . .

Page 40: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Technika „dziel i rządź”– miara oceny jakości przedziału Problem: jak ocenić jakość przedziału [L,R]? Miara oceny musi dobrze oszacować jakość

najlepszej wartości progowej w przedziale [L,R].

Page 41: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Technika „dziel i zwycięż”

Dla dowolnej (vL, vR) Wartość oczekiwana:

Odchylenie standardowe:

2);()()())(( RLRL vvconflictvDiscernvDiscernDiscernE

n

i ijjj

ii LRMMDiscern1

2

122))((

vL vR

Miara jakości przedziału: DiscernDiscernEvvEval RL

2,;

Page 42: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Algorytm „dziel i rządź”Wejście: atrybut a, amin

, amax

Wyjście: optymalny test (a < )Parametry: k ,

vL= amin; vR = amax;

While (vL < vR) do {

1.Podziel przedział [vL , vR] na k równych przedziałów za pomocą

punktów:pi = vL

+ i*(vR - vL) / k; dla (i =0,1,...,k)2. Dla (i= 1,2,...,k)

2.1. Oblicz Eval([pi-1; pi], );2.2. Niech [pj-1; pj] będzie najlepszym przedziałem;2.3. vL = pi-1; vR = pj;

};Return vL;

Page 43: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Kryterium oceny stabilności przedziału Pod-przedziały nie mają lepszej jakości Przedział jest w miarę mały Przedział zawiera małą liczbę obiektów

Page 44: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Wykonanie podziału Test jest typu (aV): standardowo Test typu (a, 1, 2): Jeśli (a(x) < 2) to x należy do lewego poddrzewa Jeśli (a(x) > 1) to x należy do prawego

poddrzewa Jeśli (1 < a(x) < 2) to x należy do obu poddrzew

Page 45: Generowanie drzew decyzyjnych dla dużych zbiorów danych

Drzewo z elastycznymi podziałami - obserwacja Zaleta: Nie wymaga dodatkowych struktur danych Nie wymaga umieszczenia danych w pamięci Korzysta się z SQL-owych zapytań Dobre rozwiązanie dla danych z szumami

Wada: Czas klasyfikacji jest dłuższy