Generowanie drzew decyzyjnych dla dużych zbiorów danych
description
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