Ćwiczenie 5. Eksploracja danych 1. Uruchomienie i skonfigurowanie środowiska do ćwiczeń Czas trwania: 15 minut Zadaniem niniejszych ćwiczeń jest przedstawienie podstawowych zagadnień dotyczących wykorzystywania funkcji analitycznych w języku SQL. 1. Uruchom środowisko wirtualizacji kliknij na umieszczoną na pulpicie komputera-gospodarza ikonę Oracle VM VirtualBox. 2. Spróbuj uruchomić maszynę wirtualną. W tym celu zaznacz w lewym panelu środowiska pozycję ASBD i naciśnij umieszczony na pasku narzędzi przycisk Uruchom (możesz również wybrać pozycję Uruchom z menu kontekstowego, dostępnego po kliknięciu prawym klawiszem myszy na pozycji ASBD). 3. Po pomyślnym uruchomieniu maszyny wirtualnej powinien zostać wyświetlony ekran logowania (jeśli ekran maszyny wirtualnej nie zajmuje całego ekranu komputera-gospodarza, użyj odpowiedniego skrótu klawiszowego aby to zmienić).
4. Zaloguj się do systemu operacyjnego maszyny wirtualnej jako użytkownik Oracle z hasłem oracle. Podaj powyższe informacje i naciśnij przycisk OK. 5. Uruchom terminal. Można to wykonać przez kliknięcie prawym klawiszem myszki na pulpit i wybranie z menu kontekstowego pozycji Otwórz terminal. 6. Sprawdź wartości zmiennych środowiskowych dotyczących instancji Oracle. Wykorzystaj w tym celu polecenie: set grep ORACLE 7. Jeśli zmienne środowiskowe nie są ustawione poprawnie, to wczytaj ich wartości z pliku.bashrc umieszczonym w Twoim katalogu domowym [oracle@localhost ~] source.bashrc 8. Jeśli zmienne środowiskowe są ustawione poprawnie, uruchom program opcję nolog: sqlplus /nolog sqlplus. Wykorzystaj 9. Następnie zaloguj się korzystając z autoryzacji użytkownika administracyjnego przez system operacyjny. Wykonaj w tym celu polecenie: connect / as sysdba
Następnie uruchom bazę danych poleceniem startup 10. Będąc zalogowany jako administrator bazy danych nadaj użytkownikowi scott potrzebne przywileje: GRANT CREATE PROCEDURE, CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE JOB, CREATE TYPE, CREATE SYNONYM, CREATE MINING MODEL TO scott; 11. Pobierz ze strony WWW studium podyplomowego plik spbd_eksploracja.dmp 12. Uruchom drugi terminal i zaimportuj całą zawartość pobranego pliku do schematu użytkownika scott. Możesz się posłużyć poniższym poleceniem. imp file=spbd_eksploracja.dmp userid=scott/tiger full=y 13. Zaloguj się jako użytkownik scott z hasłem tiger. Odczytaj ze słownika bazy danych nazwy tabel umieszczonych w schemacie. Upewnij się, że poprawnie zaimportowała(e)ś tabele SURVEY, ANIMALS, i SALES. SELECT table_name FROM user_tables; DESCRIBE ANIMALS DESCRIBE SALES SELECT * FROM survey WHERE ROWNUM < 10; 14. Pobierz ze strony WWW studium podyplomowego plik odminer11104.zip i rozpakuj go do katalogu domowego. unzip odminer11104.zip d odminer 15. Dodaj do ścieżki katalog zawierający JDK w wersji co najmniej 1.5 export PATH=/u01/app/oracle/product/11.2.0/dbhome_1/jdk/bin:$PATH
16. Upewnij się, że uruchamiasz JDK we właściwej wersji java -version 17. Uruchom program Oracle Data Miner za pomocą polecenia java -jar odminer/lib/odminer.jar 18. Po uruchomieniu programu Oracle Data Miner podaj dane do logowania a. Connection Name: scott@localhost b. User: scott c. Password: tiger d. Host: localhost e. Port: 1521 f. SID: orcl I kliknij przycisk OK. Sprawdź, czy poprawnie udało Ci się zalogować do bazy danych.
2. Wstępne przetwarzanie danych Czas trwania: 30 minut Przystąpimy teraz do przeglądu funkcjonalności opcji Oracle Data Mining. Pierwsze ćwiczenie, dotyczące wstępnego przetwarzania danych (dyskretyzacja, normalizacja, usuwanie wartości odstających) przeprowadzimy za pomocą graficznego narzędzia Oracle Data Miner. 1. Uruchom narzędzie Oracle Data Miner. Jeśli w trakcie uruchamiania pojawi się okno dialogowe informujące o brakującym przywileju (EXECUTE) dla eksploracji tekstu, zignoruj komunikat. 2. Rozwiń gałąź Data Sources w oknie nawigacyjnym (Navigator) i zlokalizuj użytkownika SCOTT. Rozwiń gałąź obiektów użytkownika SCOTT i wyświetl dostępne tabele. Zaznacz tabelę EMP i kliknij na niej prawym klawiszem myszy. Z menu kontekstowego wybierz opcję Show Summary Single-Record. Obejrzyj statystykę podsumowującą zbiór danych. Zaznacz atrybut SAL i kliknij przycisk Histogram. Obejrzyj wynik. 3. Z menu Data wybierz Transform Discretize. Na ekranie powitalnym kliknij przycisk Dalej >. Wybierz schemat SCOTT i tabelę EMP. Przejdź dalej. W kroku (2) możesz wybrać nazwę dla perspektywy, która zostanie utworzona. Zaakceptuj zaproponowaną nazwę i opis i przejdź dalej. W kroku (3) możesz określić typ każdego atrybutu (numeryczny lub kategoryczny) oraz zaznaczyć atrybuty unikalne. Ponieważ ODM prawidłowo określił typy i unikalność atrybutów, przejdź dalej. W kroku (4) możesz dokonać dyskretyzacji atrybutów numerycznych. Zaznacz atrybut SAL i kliknij przycisk Equal Width i wybierz podział na 3 równe przedziały. Następnie zaznacz atrybut MGR i kliknij przycisk Quantile Binning, wskazując podział na dwa równoliczne przedziały. Przejdź dalej.
4. W kroku (5) możesz wskazać na preferowany sposób dyskretyzacji atrybutów kategorycznych. Zaznacz atrybut JOB i kliknij przycisk Top N, pozostaw 3 najczęstsze wartości (pozostałe trafią do zbiorczej kategorii). Przejdź dalej. 5. Kliknij przycisk Zakończ i obejrzyj uzyskaną perspektywę. Zwróć uwagę na atrybuty, które zostały dyskretyzowane (przejdź na zakładkę Data u góry ekranu). Przejdź także na zakładkę View Lineage i zobacz, w jaki sposób fizycznie realizowana jest dyskretyzacja. 6. Kolejnym krokiem będzie normalizacja atrybutów numerycznych. Ponownie wybierz z menu Data pozycję Transform, a następnie pozycję Normalize. Pomiń ekran powitalny i wskaż schemat SCOTT. Upewnij się, że normalizacji będzie podlegała tabela EMP. Kliknij przycisk Dalej >. 7. W kroku (2) zaakceptuj sugerowaną nazwę perspektywy i komentarz i przejdź dalej. Zaznacz atrybut EMPNO i kliknij przycisk Define. Wybierz skalowanie liniowe (pierwsza propozycja) i wskaż nowy zakres wartości atrybutu <0,1>. Kliknij przycisk OK. Następnie zaznacz atrybut SAL i kliknij przycisk Define. Wybierz normalizację przez odchylenia standardowe (druga propozycja) i kliknij przycisk OK. Przejdź dalej. 8. Kliknij przycisk Zakończ i obejrzyj efekt normalizacji.
9. Operacje transformacji danych można także wykonać z poziomu języka PL/SQL. Otwórz konsolę, uruchom program sqlplus i wykonaj następujące operacje: BEGIN -- utworz tabele do przechowywania parametrow przyciecia DBMS_DATA_MINING_TRANSFORM.CREATE_CLIP( clip_table_name => 'clipping', clip_schema_name => 'scott'); -- uruchom procedure przyciecia 30% odstajacych wartosci -- atrybutu SAL DBMS_DATA_MINING_TRANSFORM.INSERT_CLIP_WINSOR_TAIL( clip_table_name => 'clipping', data_table_name => 'EMP', tail_frac => 0.3, exclude_list => DBMS_DATA_MINING_TRANSFORM.Column_List( END; / 'EMPNO','MGR','COMM','DEPTNO')); -- wyswietlenie wyliczonych granic przyciecia SELECT * FROM clipping; -- utworzenie perspektywy pokazującej wynik przycięcia atrybutu SAL BEGIN DBMS_DATA_MINING_TRANSFORM.XFORM_CLIP( clip_table_name=>'clipping', data_table_name=>'emp', xform_view_name=>'v_emp_clippin'); END; / SELECT * FROM v_emp_clippin ORDER BY sal;
3. Odkrywanie reguł asocjacyjnych 1. Uruchom narzędzie Oracle Data Miner i połącz się z serwerem bazy danych. 2. Z menu głównego wybierz Tools SQL Worksheet. W górnym oknie wprowadź i wykonaj komendę: CREATE SYNONYM market_basket_data FOR sales; 3. Z menu głównego wybierz Activity Build. Na ekranie powitalnym kliknij przycisk Dalej>. 4. Z listy Function Type wybierz Association Rules. Jedyny dostępny algorytm, Apriori, zostaje automatycznie wybrany jako algorytm przetwarzający. Kliknij przycisk Dalej>. 5. Oracle Data Miner wymaga do odkrywania asocjacji pionowej organizacji bazy danych, przykład takiej organizacji przedstawiono na rysunku poniżej.
6. Wskaż schemat SCOTT i tabelę MARKET_BASKET_DATA jako źródło danych do eksploracji. Jako atrybut Item ID wybierz z listy atrybut PROD_NAME. Kliknij przycisk Dalej>.
7. Jako identyfikator transakcji wskaż atrybut CUST_ID. Kliknij przycisk Dalej>. 8. Podaj nazwę i opis dla procesu eksploracji. Uwaga: nie używaj polskich liter w nazwie i opisie. Kliknij przycisk Dalej>.
9. Kliknij przycisk Advanced Settings. Upewnij się, że na zakładce Sample opcja Enable Step jest wyłączona (eksploracja zostanie przeprowadzona na całym zbiorze danych). Przejdź na zakładkę Build. Zmień wartość parametru minimalnego wsparcia (Minimum Suport %) na 2, a wartość parametru minimalnej ufności (Minimum Confidence %) na 50. Ogranicz długość znajdowanych reguł asocjacyjnych do 4 (Limit Number of Attributes in each Rule). Kliknij przycisk OK. Upewnij się, że opcja Run upon finish jest zaznaczona. Kliknij przycisk Zakończ i poczekaj na zakończenie wykonywania się algorytmu Apriori. 10. Kliknij odnośnik Results w bloku Build. Kliknij przycisk Get Rules w prawym górnym rogu okna. Kliknij przycisk Edit umieszczony pod lewym oknem, zaznacz wartość Mouse Pad i przenieś ją do prawego panelu. Podobnie wybierz element Standard Mouse. Kliknij przycisk OK.
11. W prawym panelu w oknie pobierania reguł pozostaw wpisaną tam wartość <Any>. Upewnij się, że pola wyboru związane z filtrowaniem reguł według wsparcia i ufności są odznaczone. Kliknij przycisk OK.
12. Wybierz dowolną regułę z listy i zaznacz ją. W dolnym oknie pojawi się szczegółowy raport na temat znalezionej reguły asocjacyjnej. Kliknij na (ikonkę eksportu) umieszczoną w prawym górnym rogu tuż nad listą znalezionych reguł asocjacyjnych. Jako format pliku eksportu wybierz CSV. Kliknij przycisk OK. Zapisz plik w lokalnym systemie plików. Obejrzyj zawartość pliku. 13. Ten sam algorytm możesz także uruchomić z poziomu języka SQL. Otwórz konsolę i uruchom w niej, krok po kroku, poniższy program: -- -- odkrywanie reguł asocjacyjnych -- -- utworzenie poziomej organizacji danych CREATE OR REPLACE VIEW ar_horizontal AS SELECT A.cust_id, CAST ( MULTISET ( SELECT DM_Nested_Numerical(SUBSTR(prod_name,1,30),1) FROM market_basket_data B WHERE B.cust_id = A.cust_id ) AS DM_Nested_Numericals ) Products FROM market_basket_data A GROUP BY A.cust_id; -- porównanie poziomej i pionowej organizacji danych SELECT * FROM market_basket_data WHERE cust_id = 100200; SELECT * FROM ar_horizontal WHERE cust_id = 100200;
-- utworzenie tabeli do przechowywania ustawień algorytmu CREATE TABLE settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(128) ); BEGIN INSERT INTO settings VALUES (dbms_data_mining.asso_max_rule_length,3); INSERT INTO settings VALUES (dbms_data_mining.asso_min_support,0.01); INSERT INTO settings VALUES (dbms_data_mining.asso_min_confidence,0.5); COMMIT; END; / -- utworzenie modelu (uruchomienie algorytmu okrywania reguł asocjacyjnych) BEGIN dbms_data_mining.create_model( model_name => 'Associations', mining_function => dbms_data_mining.association, data_table_name => 'ar_horizontal', case_id_column_name => 'cust_id', settings_table_name => 'settings' ); END; / -- wyświetlenie wszystkich znalezionych zbiorów częstych SELECT t.itemset_id, i.attribute_subname AS item, t.support, t.number_of_items FROM TABLE (dbms_data_mining.get_frequent_itemsets('associations')) t, TABLE (t.items) i GROUP BY t.itemset_id, i.attribute_subname, t.support, t.number_of_items ORDER BY t.itemset_id, i.attribute_subname, t.support, t.number_of_items; -- wyświetlenie wszystkich znalezionych reguł asocjacyjnych SELECT t.rule_id, t.rule_support, t.rule_confidence, a.attribute_subname, c.attribute_subname FROM TABLE (dbms_data_mining.get_association_rules('associations')) t, TABLE (t.antecedent) a, TABLE (t.consequent) c ORDER BY t.rule_id, t.rule_support DESC, t.rule_confidence;
4. Budowa drzewa decyzyjnego 1. Z menu głównego wybierz Activity Build. Na ekranie powitalnym kliknij przycisk Dalej>. 2. Z listy Function Type wybierz Classification. Rozwiń listę Algorithm i wybierz z niej algorytm Decision Tree. Kliknij przycisk Dalej>. 3. Wskaż schemat STUDENT i tabelę SURVEY jako źródło danych. Jako klucz podstawowy wskaż atrybut CUST_ID. Kliknij przycisk Dalej>.
4. Jako atrybut decyzyjny zaznacz atrybut AFFINITY_CARD (pole radiowe w kolumnie Target). 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>. 5. 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>.
6. Kliknij przycisk Advanced Settings. Przejdź na zakładkę Split i podziel zbiór danych na zbiór uczący i zbiór testujący, w proporcjach 70/30. Upewnij się, że na zakładce Sample opcja próbkowania jest wyłączona (pole wyboru Enable Step jest odznaczone). 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. Wybierz metodę podziału węzła (w Homogeneity Metric wybierz metodę opartą na mierze zysku informacyjnego wykorzystującego entropię - Entropy). Pozostałe parametry pozostaw bez zmian. Przejdź na zakładkę Test Metrics i wyłącz krok generowania miar oceny dokładności i jakości klasyfikatora. Kliknij przycisk OK. Upewnij się, że opcja Run upon finish jest włączona. Kliknij przycisk Zakończ.
7. Kliknij na odnośnik Results w bloku Build. Zakładka Tree przedstawia zbudowany klasyfikator. Zaznacz opcję Show Leaves Only. Przeanalizuj otrzymany model pod względem rozkładu wartości atrybutu decyzyjnego w liściach.
8. Kliknij na odnośnik Results w bloku Test Metrics. Przeanalizuj parametry zbudowanego modelu. Zakładka Predictive Confidence pokazuje, o ile Twój model jest lepszy od najprostszego modelu opartego na głosowaniu większościowym. Przejdź na zakładkę Accuracy i kliknij na przycisk More Detail. Macierz pomyłek pokazuje, w którym miejscu Twój model popełnia pomyłki (w wierszach znajduje się rzeczywiste przypisanie przypadków do klas, w kolumnach znajduje się przypisanie generowane przez Twój model, na głównej przekątnej widać liczbę przypadków poprawnie klasyfikowanych przez model.