Generowanie drzew decyzyjnych dla dużych zbiorów danych

Post on 25-Feb-2016

45 views 0 download

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

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

Dane w praktyce są gigantyczne

Dane nie mieszczą się w pamięci

Dane zawierają szumy (okłamywania)

Generowanie drzewa jest czasochłonne

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

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

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

są wielokrotnie sortowane -> czasochłonne

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

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

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

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.

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ć

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

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

Podział listy wartości

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

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

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ł

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

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

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

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

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

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

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

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

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

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

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

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

baz danych

Drzewo z „elastycznymi podziałami” - klasyfikacja

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

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

TaxInc,75,85

<85K >75K

Standardowe drzewo (z ostrym podziałem)

Drzewo z „nieostrym podziałem”

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

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ę

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

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

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.

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

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

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

. . .

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

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,;

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;

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

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

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