450 likes | 589 Views
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.
E N D
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
conflict = 6 conflict = 5 conflict = 8 conflict = 9 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) = - jp(j | X) log p(j | X) • Konflikt: Conflict(X) = ijCiCj
Miara jakości podziału • Zbiór danych przy węźle t jest podzielony na k części ni : liczba obiektów w i - tympoddrzewie, 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
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 - charakterystyki • Nadaje się dla danych częściowo umieszczonych na dysku • Uż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
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 rzeczywistegodwa 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
CarType Class rid family High 0 sports High 1 sports High 2 Punkt podziału family Low 3 truck Low 4 family high 5 Histogram klas Histogram: przykład 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 a • Wyjście: (a) • 1. Cbelow= 0 • 2. Cabove = rozkład klas obiektów w danym węźle • 3. Przeglądaj kolejną wartość atrybutu • 3.1 Oblicz jakość podziału • 3.2 ModyfikujCbelow i Cabove • 4. Wybierz najlepszy podział
Lista wartości CarType Count Matrix Car Type Class rid H L family High 0 sports High 1 family 2 1 sports High 2 sports 2 0 family Low 3 truck 0 1 truck Low 4 family high 5 Wyznaczanie podziału -atrybutu symbolicznego • 1. Wyznaczmacierz 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 • Skorzystajz 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. gotokrok 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 Procesor 0 Procesor 1
Wyznaczanie najlepszego podziału –atrybut rzeczywisty • Każdy procesor ma przedział wartości atrybutu • Każdy procesor inicjalizujeCbelowiCaboveuwzględniając rozkład klas w innych procesorach • Każdy procesor przegląda swoją listę i wyznacza najlepszą lokalną wartość progową • Procesorykomunikują 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 Process 0 Process 1
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 informacjize wszystkich procesorów każdy procesorbuduje tablicę haszującąi wykonuje podziały dla pozostałych atrybutów
SPRINT • Wada: • Dodatkowe struktury danych • Nieefektywny jeśli atrybut ma dużo wartości • Nie wykorzystuje mocnych narzędzi systemów baz 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
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żywajobu 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
5 2 3 6 1 8 4 7 Techniki ulepszania • Definicja: wartość podziału jest brzegowa, jeśli istnieją 2 kolejne rekordy o1i o2takie, że a(o1) < < a(o2)i d(o1) d(o2) 5 2 3 6 1 8 4 7 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ł wyszukiwania best [mini(Median(i)), maxi(Median(i))]
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 2 1 3 4 5 7 8 6 Cykl 1: a Cykl 2: Cykl 3: k = 3 . . .
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].
vL vR Technika „dziel i zwycięż” • Dla dowolnej (vL, vR) • Wartość oczekiwana: • Odchylenie standardowe: • Miara jakości przedziału:
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. ObliczEval([pi-1; pi], ); 2.2. Niech [pj-1; pj] będzie najlepszym przedziałem; 2.3. vL= pi-1; vR= pj; }; ReturnvL;
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