Generowanie drzew decyzyjnych dla dużych zbiorów danych
description
Transcript of Generowanie drzew decyzyjnych dla dużych zbiorów danych
![Page 1: Generowanie drzew decyzyjnych dla dużych zbiorów danych](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/1.jpg)
Generowanie drzew decyzyjnych dla dużych
zbiorów danych
![Page 2: Generowanie drzew decyzyjnych dla dużych zbiorów danych](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/2.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/3.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/4.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/5.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/6.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/7.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/8.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/9.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/10.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/11.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/12.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/13.jpg)
Podział listy wartości
![Page 14: Generowanie drzew decyzyjnych dla dużych zbiorów danych](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/14.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/15.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/16.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/17.jpg)
Wyznaczanie podziału-atrybutu rzeczywistego (c.d.)
![Page 18: Generowanie drzew decyzyjnych dla dużych zbiorów danych](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/18.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/19.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/20.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/21.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/22.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/23.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/24.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/25.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/26.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/27.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/28.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/29.jpg)
Drzewo z „elastycznymi podziałami” - klasyfikacja
![Page 30: Generowanie drzew decyzyjnych dla dużych zbiorów danych](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/30.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/31.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/32.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/33.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/34.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/35.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/36.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/37.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/38.jpg)
Eliminować skrajne wartości (c.d.)
![Page 39: Generowanie drzew decyzyjnych dla dużych zbiorów danych](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/39.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/40.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/41.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/42.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/43.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/44.jpg)
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](https://reader035.fdocument.pub/reader035/viewer/2022062501/568167ad550346895ddcfbcc/html5/thumbnails/45.jpg)
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