Zastosowanie metod eksploracji danych Data Mining w badaniach ekonomicznych SAS Enterprise Miner rok akademicki 2014/2015
Sieci neuronowe
Sieci neuronowe w SAS Enterprise Miner Węzeł Neural Network Do realizacji algorytmu sieci neuronowych służy węzeł Neural Network. Możemy trenować sieć w trybie automatycznym albo interaktywnym. Nie jest możliwe wykorzystanie obserwacji zawierających braki danych. Trzeba je uzupełnić we wcześniejszych węzłach (Impute). 3
Przykład 1 użycie komputera Do analizy wykorzystamy zbiór F2011BD z biblioteki dmlib. W projekcie dm1 utworzymy nowy diagram o nazwie Neuron. Nadamy status Rejected wszystkim zmiennym z wyjątkiem: KOMPUTER Target DOCHG Input (Interval) LEDC Input (Interval) WYK Input (Ordinal) NR ID 4
Przykład 1 podział próby Dołączmy węzeł Data Partition. Podzielimy zbiór danych na podzbiory: treningowy, walidacyjny i testowy w proporcji: 60%, 30% i 10%. Następnie dołączmy węzeł Neural Network. 5
Węzeł Neural Network Węzeł Neural Network umożliwia: zdefiniowanie różnych topologii sieci z różnymi funkcjami aktywacji, np. przyjęcie bezpośredniego połączenia warstwy wejściowej z warstwa wyjściową; ustalenie kryterium doboru najlepszej sieci; określenie maksymalnej liczby iteracji i maksymalnego czasu treningu; użycie opcji uczenia wstępnego (preliminary training). 6
Węzeł Neural Network Ustawienia domyślne Startowe wartości wag nie będą brane z poprzedniego przebiegu. Ziarno generatora liczb pseudolosowych dla ustalenia początkowych wag. Domyślna metoda wyboru najlepszej sieci (Profit/Loss). 7
Kryterium wyboru modelu Model selection criteria Profit/Loss -- maksymalizuje zysk (profit) i minimalizuje stratę (loss) dla obserwacji w zbiorze walidacyjnym. Misclassification Rate -minimalizuje funkcję błędnej klasyfikacji dla obserwacji w zbiorze walidacyjnym. Average Error - minimalizuje błąd średni dla obserwacji w zbiorze walidacyjnym. 8
Węzeł Neural Network menu Optimization Metoda treningu: Default wybór algorytmu jest automatyczny na podstawie liczby wag do oszacowania. Maksymalna liczba iteracji. Maksymalny czas treningu sieci. Pozwala znaleźć punkty startowe do treningu sieci. 9
Metody treningu sieci Training technique Dostępne są techniki minimalizacji funkcji nieliniowych, m. in.: Levenberg-Marquardt polecana dla małych sieci, wymaga dużo pamięci; Quasi-Newton polecana dla sieci średniej wielkości, wymaga więcej iteracji niż poprzednia; Conjugate Gradient polecana dla dużych sieci, nie wymaga dużo pamięci, ale na ogół dużo iteracji. Używane dla sieci neuronowych: QProp (Quickprop) podobna do metody Newtona, szybsza niż standardowa metoda propagacji wstecznej; RProp używa oddzielnych współczynników uczenia dla każdej wagi, szybka, ale wymaga dużo iteracji, najbardziej stabilna z metod propagacji wstecznej. 10
Model sieci menu Network Domyślna architektura (MLP). Czy są bezpośrednie połączenia między warstwą wejściową i wyjściową (No). Liczba neuronów w warstwie ukrytej (3). Początkowy rozkład wag (Normal, Cauchy, Uniform). Funkcja kombinacji i funkcja aktywacji. 11
Neural Network -- wyniki Domyślnie ukazują się 4 okna: Score Ranking Overlay, Iteration Plot, Fit Statistics, Output. 12
Score Ranking Overlay Wykres Mean for Predicted ilustruje porównanie wartości średnich zmiennej objaśnianej (KOMPUTER) i jej prognozy po uporządkowaniu malejącym według prognozy dla zbioru treningowego i walidacyjnego. 13
Iteration Plot Wykres ilustruje porównanie błędu średniokwadratowego (Average Squared Error) dla danych treningowych i walidacyjnych w kolejnych iteracjach. Najmniejszy błąd dla danych walidacyjnych jest po 5 iteracjach. Można otrzymać wykresy innych funkcji błędu względem numeru iteracji (na zbiorze treningowym i walidacyjnym lub tylko na zbiorze treningowym). 14
Fit Statistics Tablica pozwala porównać różne statystyki dopasowania dla zbioru treningowego, walidacyjnego i testowego. Np. dla błędu RMSE (Root Mean Square Error) mamy: Train = 0,399155, Validation = 0,396298, Test = 0,399789. Na podstawie porównania tych statystyk można wnioskować o przetrenowaniu lub niedotrenowaniu sieci. 15
Neural Network -- Output Wykonano 5 przebiegów wstępnego treningu zmieniając zalążki punktu startowego generatora liczb pseudolosowych. Każdy przebieg miał maksymalnie 10 iteracji. The NEURAL Procedure Preliminary Training Run 1 2 3 4 5 Starting Random Seed 12345 463937847 866987325 998823970 734635899 Objective Function Value 0.159785211425 0.15938506488 0.159691686745 0.159508764532 0.159969018919 Number of Iterations Terminating Criteria 10 10 10 10 10 16
Neural Network osiąganie zbieżności algorytmu LEVMAR needs more than 20 iterations or 2147483647 function calls. WARNING: LEVMAR Optimization cannot be completed. Początkowo nie osiągnięto punktu zbieżności (FCONV). Trening powtórzono, wybierając maksymalną liczbę iteracji 100. Po 37 iteracjach nastąpiła zbieżność. 17
Początkowe wagi W oknie Output możemy odczytać początkowe wagi połączeń. Zmienna porządkowa wyk została rozłożona na 3 poziomy: wyk1, wyk2, wyk3 (poziom wyk=4 jest poziomem referencyjnym). H11, H12, H13 oznacza neurony warstwy ukrytej. BIAS oznacza wyraz wolny w funkcji kombinacji. Mamy 22 wagi. 18
Końcowe wagi W oknie Output możemy odczytać końcowe wagi połączeń. Przykładowo: dochg_h11 = 0.143104 dochg_h12 = 0.030881 dochg_h13 = -1.948289 oznaczają wagi połączeń DOCHG (z warstwy wejściowej) z neuronami warstwy ukrytej. H11_komputer = 0.411843 H12_komputer = -0.246501 H13_komputer = -0.188495 oznaczają wagi połączeń neuronów warstwy ukrytej z neuronem warstwy wyjściowej (zmienna KOMPUTER). 19
Porównanie rozkładów zmiennej w zbiorach Po wybraniu z menu polecenia View Assessment Score Distribution widzimy porównanie rozkładu zmiennej objaśnianej w zbiorze treningowym i walidacyjnym. Na osi poziomej mamy wartość prognozowaną, na osi pionowej średnią wartość zmiennej KOMPUTER. 20
Przykład 2 -- zmiana parametrów sieci Dodajmy do diagramu nowy węzeł Neural Network, w którym zmienimy parametry treningu, a następnie węzeł Model Comparison służący do porównania dwóch modeli sieci neuronowych. 21
Przykład 2 -- zmiana parametrów W modelu ustalimy, że: warstwa ukryta zawiera 6 neuronów; początkowe wagi są wybierane z rozkładu jednostajnego; wartości zmiennych wejściowych będą normalizowane (wartości są sprowadzane do przedziału [0; 1]); nie ma stałej w funkcji kombinacji (Hidden Bias = No). 22
Przykład 2 -- zmiana parametrów Zmienimy ponadto: maksymalna liczba iteracji 100, metoda treningu - Quasi-Newton, nie ma etapu wstępnego treningu. 23
Liczba iteracji dla metody Quasi-Newton Zbieżność zostaje osiągnięta po 64 iteracjach. 24
Porównanie dwóch modeli sieci neuronowej Model Comparison -Result domyślnie podzielone jest na 4 okna. 25
Statistics Comparison Po wyborze View Model Statistics Comparison możemy porównać statystyki dopasowania dla modeli Neural i Neural 2. 26
Przykład 3 problem braków danych w zbiorze W odróżnieniu od drzew decyzyjnych model sieci neuronowych nie może zawierać braków danych. Jeżeli chcemy wykorzystać zmienne mające braki danych, należy przed uruchomieniem węzła Neural Network zastąpić brakujące dane przez imputowane wartości. Do tego celu służy węzeł Impute. 27
Przykład 3 problem braków danych Zbudujemy model sieci neuronowych wykorzystując zbiór HMEQ. Niektóre zmienne w tym zbiorze zawierają braki danych. Utwórzmy diagram Impute (w projekcie dmtrees), a nim węzły Input Data (HMEQ), Data Partition, Impute i Neural Network. 28
Przykład 3 wybrane zmienne Podobnie jak w przypadku modelu drzew decyzyjnych przypiszmy zmiennej Default rolę Target. Zmieńmy odpowiednio skalę pomiaru pozostałych zmiennych, jeżeli potrzeba. 29
Przykład 3 podział próby Podzielimy zbiór na część: treningową 67%, walidacyjną 33%. Nie będziemy tworzyć zbioru testowego Zostawimy domyślną metodę losowania 30
Węzeł Impute wartości domyślne Dla zmiennych dyskretnych domyślną metodą uzupełniania braków danych jest Count -wartość najczęściej występująca Dla zmiennych ciągłych domyślną metodą uzupełniania braków danych jest Mean -wartość średnia. Osobno możemy ustawiać imputowane wartości dla zmiennej objaśnianej (domyślnie None). 31
Metody imputacji dla zmiennych dyskretnych Count dominanta; Default constant value -- stała wartość ustawiona w polu Default Character Value albo Default Number Value; Distribution -- wylosowana wartość zgodnie z rozkładem znanych wartości zmiennej; Tree -- zbudowanie drzewa decyzyjnego objaśniającego zależność danej zmiennej od pozostałych i wstawienie prognozowanej wartości. 32
Metody imputacji dla zmiennych ciągłych Mean -- wartość średnia; Median mediana; Mid-Range -- wartość środkowa: (max-min)/2; Default constant value -- stała wartość ustawiona w polu Default Character Value albo Default Number Value; Distribution -- wylosowana wartość zgodnie z rozkładem znanych wartości zmiennej; Tree -- zbudowanie drzewa decyzyjnego objaśniającego zależność danej zmiennej od pozostałych i wstawienie prognozowanej wartości. Możliwe jest zastosowanie M-estymatorów: Tukey s Biweight, Huber, Andrew s Wave. 33
Indykatory brakujących danych Można utworzyć indykatory brakujących danych. Są to nowe zmienne przyjmujące wartość 1, gdy w zmiennej występuje brak danych oraz 0 w przeciwnym wypadku (Indicator Variable = Unique, Indicator Variable Role = Input), Przyjęcie Indicator Variable = Single spowoduje utworzenie pojedynczego indykatora dla całego zbioru, Oryginalne zmienne można wtedy wyłączyć z analizy. 34
Nowe zmienne utworzone w węźle Impute Po uruchomieniu węzła Impute otrzymujemy tabelę (Imputation Summary) zawierającą nazwy nowych zmiennych oraz liczbę imputowanych wartości dla poszczególnych zmiennych w zbiorze treningowym. 35
Nowe zmienne utworzone w węźle Impute Po przejściu do węzła Neural Network widzimy nazwy nowych zmiennych. Mają one prefiks: IMP_ - zmienne po imputacji M_ - indykatory. 36
Nowe zmienne utworzone w węźle Impute Zaznaczając zmienną (tu: M_DEBTINC) i klikając na przycisk Explore można zobaczyć rozkład tej zmiennej. 37
Objaśnianie sieci neuronowych przez drzewa decyzyjne Modele sieci neuronowych są trudne do interpretacji. Po utworzeniu modelu sieci neuronowych można użyć drzew decyzyjnych do wygenerowania reguł prowadzących do klasyfikacji obiektów. W tym celu należy: 1. Zbudować model sieci neuronowych. 2. Użyć węzła Metadata do zastąpienia dotychczasowej zmiennej objaśnianej przez zmienną zawierającą wartości przewidywane przez sieć neuronową. 3. Zbudować drzewo decyzyjne, w którym ta nowa zmienna staje zmienną objaśnianą. 38
Objaśnianie sieci neuronowych przez drzewa decyzyjne Dodajemy do diagramu nowe węzły: Metadata (z grupy Ulility) i Decision Tree. 39
Objaśnianie sieci neuronowych przez drzewa decyzyjne W węźle Metadata wybieramy Train Variables Train i w oknie dialogowym Variables -- Meta zmieniamy rolę zmiennej Default na (New Role) Rejected, a rolę zmiennej I_Default na Target. Zmienna I_Default zawiera wartości przewidywane przez sieć. 40
Objaśnianie sieci neuronowych przez drzewa decyzyjne Po uruchomieniu węzła Metadata w oknie wynikowym Output widzimy, jakie parametry zmiennych zostały zmodyfikowane. 41
Objaśnianie sieci neuronowych przez drzewa decyzyjne W węźle Decision Tree wybieramy Update. Po uruchomieniu węzła z domyślnymi parametrami otrzymujemy drzewo decyzyjne, którego fragment jest pokazany: Reguły uzyskane za pomocą sieci neuronowej znajdują się na pogrubionej ścieżce. 42