ED-4.2-m07-lab

From Studia Informatyczne

Laboratorium 7

Support Vector Machines (klasyfikacja).

1. Uruchom narzędzie Oracle Data Miner i połącz się z serwerem bazy danych.

2. Z menu głównego wybierz Activity→Build. Na ekranie powitalnym kliknij przycisk Dalej>.

3. Z listy Function Type wybierz Classification. Rozwiń listę Algorithm i wybierz z niej algorytm Support Vector Machines. Kliknij przycisk Dalej>.

Image:ED-4_2-m07-labWIKI_01.png

4. Wskaż schemat STUDENT i tabelę MINING_DATA_BUILD_V jako źródło danych do eksploracji. Jako klucz podstawowy wskaż atrybut CUST_ID. Kliknij przycisk Dalej>.

Image:ED-4_2-m07-labWIKI_02.png

5. Jako atrybut decyzyjny zaznacz atrybut AFFINITY_CARD (pole radiowe w kolumnie Target). Zwróć uwagę, aby wartość atrybutu decyzyjnego została wyłączona z budowy klasyfikatora (pole wyboru Input dla atrybutu AFFINITY_CARD musi być odznaczone). Upewnij się, że atrybuty CUST_ID i PRINTER_SUPPLIES są wyłączone z eksploracji (są bezwartościowe i nie niosą żadnej informacji). Kliknij przycisk Dalej>.

Image:ED-4_2-m07-labWIKI_03.png

6. Z listy rozwijanej wybierz wartość 1 jako preferowaną wartość atrybutu decyzyjnego (jest to wartość, której poprawne przewidywanie jest najważniejsze, interesuje nas dokładna identyfikacja klientów którzy prawdopodobnie skorzystają z oferowanej im karty lojalnościowej). Kliknij przycisk Dalej>. Wprowadź nazwę i komentarz do procesu eksploracji. Kliknij przycisk Dalej>.

Image:ED-4_2-m07-labWIKI_04.png

7. Kliknij przycisk Advanced Settings. Upewnij się, że na zakładce Sample opcja próbkowania jest wyłączona (pole wyboru Enable Step jest odznaczone). Przejdź na zakładkę Outlier Treatment. Algorytm SVM jest bardzo czuły na występowanie osobliwości. Oznacz jako osobliwości po 5% wartości z każdego końca przedziału wartości zastępując usuwane osobliwości wartościami brzegowymi.

Image:ED-4_2-m07-labWIKI_05.png

8. Przejdź na zakładkę Missing Values. Upewnij się, że przetwarzanie brakujących wartości jest włączone (pole wyboru Enable Step musi być zaznaczone). Wartości puste występujące w atrybutach numerycznych zamień na wartość średnią (Mean), a wartości puste występujące w atrybutach kategorycznych zamień na wartość modalną (Mode).

Image:ED-4_2-m07-labWIKI_06.png

9. Przejdź na zakładkę Normalize. Algorytm SVM wymaga, aby wszystkie atrybuty numeryczne były znormalizowane. Jako metodę normalizacji wybierz wyrażenie wartości w liczbie odchyleń standardowych od średniej (zaznacz pole radiowe Z-Score).

Image:ED-4_2-m07-labWIKI_07.png

10. Przejdź na zakładkę Split. Dokonaj podziału zbioru wejściowego na zbiór uczący i testujący w proporcjach 60%-40%, podział powinien wykorzystywać tabelę.

Image:ED-4_2-m07-labWIKI_08.png

11. Przejdź na zakładkę Build. Upewnij się, że algorytm będzie się starał osiągnąć maksymalną średnią dokładność (w polu Accuracy Goal wybierz opcję Maximum Average Accuracy). Kliknij na zakładkę Algorithm Settings. Jako rodzaj funkcji jądrowej wskaż funkcję liniową. Koniecznie wyłącz opcję aktywnego uczenia (pole radiowe Do you want Active Learning?, opcja No).

Image:ED-4_2-m07-labWIKI_09.png

12. Przejdź na zakładkę Test Metrics i upewnij się, że generowanie miar oceny jest włączone (pole Enable Step jest włączone). Pozostaw domyślną liczbę kwantyli dla wykresu krzywej lift. Upewnij się, że włączona jest opcja generowania danych do wykresu Receiver-Operator Characteristic (pole ROC result jest włączone). Jako wartość badaną wskaż wartość 1 (lista rozwijana Target Value). Kliknij przycisk Edit aby zdefiniować macierz kosztów.

Image:ED-4_2-m07-labWIKI_10.png

13. Wskaż, że ważniejsze do uniknięcia są błędy klasyfikacji polegające na tym, że osoba potencjalnie zainteresowana kartą lojalnościową (AFFINITY_CARD=1) zostanie niepoprawnie sklasyfikowana jako osoba niezainteresowana ofertą (taki błąd wiąże się z utratą potencjalnego zysku). Zaznacz pole radiowe False Negative: Incorrectly identifying a case as a non-target. W pole Weight wpisz wartość 5 i kliknij przycisk Apply. Kliknij przycisk OK.

Image:ED-4_2-m07-labWIKI_11.png

14. Kliknij przycisk OK. Upewnij się, że opcja Run upon finish jest włączona. Kliknij przycisk Zakończ.

Image:ED-4_2-m07-labWIKI_12.png

15. Kliknij na odnośnik Result w bloku Build. Współczynniki przy każdej wartości predyktorów definiują hiperpłaszczyznę najlepiej separującą instancje należące do klas decyzyjnych. Zauważ, że uzyskany wynik w praktyce nie poddaje się naturalnej interpretacji i stanowi rodzaj „czarnej skrzynki".

Image:ED-4_2-m07-labWIKI_13.png

16. Zamknij okno z wynikami budowy klasyfikatora i powróć do głównego okna. Kliknij odnośnik Result w bloku Test Metrics. Na zakładce Predictive Confidence przedstawiona jest dokładność klasyfikatora liczona względem naiwnego klasyfikatora 0-R, który zawsze przewiduje najczęstszą wartość atrybutu decyzyjnego.

Image:ED-4_2-m07-labWIKI_14.png

17. Przejdź na zakładkę Accuracy. Zaznacz pole wyboru Show Cost. Kliknij przycisk More Detail…. Przeanalizuj uzyskaną macierz pomyłek. Zauważ, że instancje należące do klasy 1 są praktycznie wszystkie przewidywane prawidłowo (98,68%), natomiast instancje należące do klasy 0 są przewidywane prawidłowo w połowie przypadków (50,8%).

Image:ED-4_2-m07-labWIKI_15.png

18. Przejdź na zakładkę ROC. Obejrzyj uzyskaną krzywą Receiver-Operator-Characteristic przedstawiającą stosunek liczby poprawnie sklasyfikowanych instancji (przykładów z wartością atrybutu decyzyjnego 1) do liczby pomyłek (instancji sklasyfikowanych jako należące do klasy 1 podczas gdy w rzeczywistości należą do klasy 0). Zauważ, że klasyfikator SVM bardzo szybko i z dużym prawdopodobieństwem oznacza instancje należące do klasy 1. Z wykresu wynika, że wybranie ok. 80% instancji należących do klasy 1 pociągnie za sobą popełnienie jedynie 20% pomyłek.

Image:ED-4_2-m07-labWIKI_16.png

19. Powróć do głównego okna programu. Zaobserwuj zmianę jakości wygenerowanego klasyfikatora po korekcie parametrów algorytmu. Kliknij przycisk Reset w bloku Build (spowoduje to zresetowanie tego i wszystkich kolejnych kroków procesu odkrywania wiedzy).

Image:ED-4_2-m07-labWIKI_17.png

20. Kliknij przycisk Options w bloku Build. Przejdź na zakładkę Algorithm Settings. Zmień rodzaj funkcji jądrowej na Gaussowską. Upewnij się, że opcja aktywnego uczenia się jest wyłączona.

Image:ED-4_2-m07-labWIKI_18.png

21. Powróć do głównego okna programu. Kliknij przycisk Run Activity (prawy górny okna). Po zakończeniu się procesu odkrywania wiedzy kliknij odnośnik Result w bloku Test Metrics. Czy nowy klasyfikator jest lepszy czy gorszy od poprzedniego?

22. Przejdź do okna nawigatora z lewej strony. Rozwiń gałęzie Miting Activities→Classification. Kliknij prawym klawiszem myszy w nazwę SVM_MINING_DATA_BUILD i z menu kontekstowego wybierz opcję Apply Activity…

Image:ED-4_2-m07-labWIKI_19.png

23. Kliknij przycisk Dalej> na ekranie powitalnym. W drugim kroku wybierz tabelę MINING_DATA_APPLY_V. Kliknij przycisk Dalej>. Jako atrybuty które powinny zostać przekopiowane do tabeli wynikowej wybierz CUST_ID oraz AGE.

Image:ED-4_2-m07-labWIKI_20.png

24. Zaznacz pole radiowe Number of Best Target Values z wartością 2. Kliknij przycisk Dalej>.

Image:ED-4_2-m07-labWIKI_21.png

25. Podaj nazwę i opis czynności. Kliknij przycisk Dalej>. Upewnij się, że zaznaczona jest opcja Run upon finish. Kliknij przycisk Zakończ. Kliknij odnośnik Result. Obejrzyj wynik zastosowania klasyfikatora do danych wejściowych.

Image:ED-4_2-m07-labWIKI_22.png

Ćwiczenie samodzielne

Korzystając z programu iSQLPlus połącz się z bazą danych i wykonaj skrypt svm.clas.sql. Przeanalizuj uzyskane współczynniki hiperpłaszczyzny i na ich podstawie, korzystając z poniższej wizualizacji danych, narysuj uzyskaną hiperpłaszczyznę. Dodaj dane testowe i przetestuj jakość klasyfikatora. Zwróć uwagę na wykorzystanie funkcji PREDICTION do zastosowania modelu do danych.

ED-4_2-m07-labWIKI_23.png