Plan laboratorium Eksploracja danych Wprowadzenie do eksploracji danych Pakiety PL/SQL i funkcje SQL Transformacja danych Algorytmy eksploracji danych odkrywanie reguł asocjacyjnych klasyfikacja naiwny klasyfikator Bayesa drzewa decyzyjne analiza skupień Narzędzia graficzne: Oracle Data Miner, Weka, RapidMiner Co to jest eksploracja danych Wprowadzenie do eksploracji danych Proces odkrywania wzorców w dużych bazach danych Element procesu odkrywania wiedzy Liczne określenia: data mining, data dredging, data harvesting, data archeology, data pattern analysis, data fishing, data snooping Fayyad, Piatetsky-Shapiro, Smyth, Uthurusamy: Eksploracja danych to nowa dyscyplina badawcza, której celem jest odkrywanie i wydobywanie użytecznych, wcześniej nieznanych, nietrywialnych i zrozumiałych wzorców z dużych baz danych i hurtowni danych
Proces odkrywania wiedzy Metody eksploracji danych Elementy procesu odkrywania wiedzy (Fayyad et al., 1996) określenie problemu wybór danych czyszczenie danych integracja danych transformacja danych eksploracja danych ocena wzorców wykorzystanie wzorców analiza skupień odkrywanie anomalii reguły asocjacyjne odkrywanie cech klasyfikacja regresja ważność atrybutów kmeans OCluster One-Class SVM Apriori Non-Negative Matrix Factorization Naive Bayes Decision Tree Logistic Regression SVM Multiple Regression SVM Minimum Description Length Oracle Data Mining 11g Pakiety PL/SQL i funkcje SQL Pakiety PL/SQL DBMS_DATA_MINING DBMS_DATA_MINING_TRANSFORM DBMS_PREDICTIVE_ANALYTICS DBMS_FREQUENT_ITEMSET Funkcje SQL PREDICTION_* CLUSTER_* FEATURE_* Pakiety Java javax.datamining.* oracle.dmt.jdm.* Metadane
DBMS_DATA_MINING Pakiety PL/SQL zawiera procedury i funkcje do tworzenia i usuwania modeli, testowania modeli, stosowania modeli do nowych danych, wyświetlania szczegółów modeli, wyliczania miar oceny modeli oraz importowania i eksportowania modeli DBMS_DATA_MINING_TRANSFORM zawiera pomocnicze procedury do transformacji danych, umożliwia dyskretyzację, normalizację i przycinanie danych oraz obsługę brakujących wartości DBMS_PREDICTIVE_ANALYTICS zawiera procedury automatycznej eksploracji danych, w tym wyjaśnianie danych, ranking atrybutów i klasyfikację DBMS_FREQUENT_ITEMSET zawiera funkcje odkrywania zbiorów częstych w poziomej i pionowej organizacji bazy danych PREDICTION_* Funkcje SQL rodzina funkcji służących do klasyfikacji, umożliwiają predykcję wartości atrybutu decyzyjnego, szacowanie kosztu i prawdopodobieństwa predykcji, oraz wytłumaczenie predykcji dla modeli pełnych i częściowych CLUSTER_* rodzina funkcji służących do analizy skupień, umożliwiają wskazanie skupienia i wyznaczenie prawdopodobieństwa przynależności do danego skupienia FEATURE_* rodzina funkcji służących do odkrywania cech, umożliwiają odwzorowanie instancji na przestrzeń cech i wyznaczenie wartości nowych cech WIDTH_BUCKET, NTILE funkcje umożliwiające dyskretyzację danych javax.datamining.* Pakiety Java pakiety składające się na standard JSR 73: Java Data Mining, zawierają klasy reprezentujące dane, statystyki, reguły, zadania, asocjacje, algorytmy, szczegóły modelu, analizę skupień, klasyfikację i regresję oracle.dmt.jdm.* pakiety rozszerzające standard JSR 73: Java Data Mining o rozwiązania specyficzne dla dostawcy, zawierają m.in.: szczegóły algorytmów NNMF, ABN, OCluster, GLM, a także pakiety oferujące możliwość transformacji danych ALL_MINING_MODELS Metadane perspektywa przechowująca informacje o wszystkich modelach zbudowanych przez użytkownika, zawiera nazwę właściciela modelu, nazwę modelu, funkcję i algorytm eksploracji, datę utworzenia, czas tworzenia oraz rozmiar modelu ALL_MINING_MODEL_ATTRIBUTES perspektywa przechowująca informacje o wszystkich atrybutach wchodzących w skład modeli i ich roli (atrybut decyzyjny, predyktor, atrybut nieaktywny) ALL_MINING_MODEL_SETTINGS Perspektywa przechowująca informacje o parametrach początkowych, jakie były wykorzystane do utworzenia każdego modelu
Ogólny schemat działania Kroki działania przygotuj dane określ parametry i ustawienia algorytmu uruchom algorytm obejrzyj szczegóły uzyskanego modelu testuj model zastosuj model CREATE TABLE settings ( ); INSERT INTO settings VALUES ( ); Transformacja danych EXECUTE DBMS_DATA_MINING.CREATE_MODEL ( ); SELECT * FROM TABLE ( DBMS_DATA_MINING.GET_MODEL_DETAILS( ) ); EXECUTE DBMS_DATA_MINING.COMPUTE_CONFUSION_MATRIX( ); EXECUTE DBMS_DATA_MINING.COMPUTE_LIFT( ); EXECUTE DBMS_DATA_MINING.APPLY( ); CREATE Ogólne kroki transformacji tworzy tabele przechowujące definicje transformacji INSERT wypełnia tabele przechowujące definicje transformacji parametrami transformacji (np. wyliczonymi przedziałami dyskretyzacji) STACK dodaje polecenie transformacji do stosu transformacji, które mają być zaaplikowane w momencie tworzenia modelu XFORM tworzy perspektywy pokazujące dane źródłowe po zastosowaniu transformacji zdefiniowanych przez polecenia INSERT Metody transformacji (1/2) Dysktretyzacja (ang. binning) podział domeny atrybutu kategorycznego lub ciągłego na przedziały, w wyniku podziału gwałtownie maleje rozmiar domeny atrybutu wspierane metody top-n frequency: pozostawienie określonej liczby najczęstszych wartości equi-width: podział na przedziały o równej szerokości quantile: podział na przedziały o równej głębokości (kwantyle) Normalizacja (ang. normalization) przeskalowanie domeny atrybutu ciągłego wspierane metody min-max scale z-score min v' = v (max' min') + min' max min v v ' = max{ abs(min), abs(max)} v' = v µ σ v shift v' = scale
Metody transformacji (2/2) Przykład transformacji danych (1/4) Osobliwości (ang. outlier treatment) usunięcie ekstremalnych wartości atrybutu wspierane metody trimming: zamiana osobliwości na wartość NULL winsorizing: zamiana osobliwości na wartość brzegowego percentyla Dyskretyzacja atrybutu JOB metodą top-n DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT( bin_table_name => 'categorical_binning', bin_schema_name => 'scott'); tabela z definicją transformacji Wartości brakujące (ang. missing value treatment) wypełnienie wartości brakujących atrybutów, nie dotyczy atrybutów rzadkich (ang. sparse data) wspierane metody atrybuty numeryczne: wypełnienie wartością średnią atrybuty kategoryczne: wypełnienie wartością modalną DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_CAT_FREQ( bin_table_name data_table_name => 'EMP', bin_num => 3, exclude_list => 'categorical_binning', SELECT * FROM categorical_binning; wyznaczenie przedziałów transformacji => DBMS_DATA_MINING_TRANSFORM.Column_List('ENAME')); lista atrybutów, które nie mają podlegać dyskretyzacji Przykład transformacji danych (2/4) Dyskretyzacja atrybutu SAL metodą quantile Przykład transformacji danych (3/4) Wygenerowanie wyniku dyskretyzacji DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_NUM( bin_table_name => 'numerical_binning', bin_schema_name => 'scott'); DBMS_DATA_MINING_TRANSFORM.INSERT_BIN_NUM_QTILE( bin_table_name data_table_name => 'EMP', bin_num => 3, exclude_list => 'numerical_binning', => DBMS_DATA_MINING_TRANSFORM.Column_List( 'EMPNO','MGR','COMM','DEPTNO')); SELECT * FROM numerical_binning; tabela z definicją transformacji wyznaczenie przedziałów transformacji lista atrybutów, które nie mają podlegać dyskretyzacji DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_CAT( bin_table_name=>'categorical_binning', data_table_name=>'emp', xform_view_name=>'v_emp_1'); SELECT * FROM v_emp_1; DBMS_DATA_MINING_TRANSFORM.XFORM_BIN_NUM( bin_table_name=>'numerical_binning', data_table_name=>'v_emp_1', xform_view_name=>'v_emp_2'); utworzenie perspektywy pokazującej dane po dyskretyzacji atrybutów kategorycznych utworzenie perspektywy pokazującej dane po dyskretyzacji atrybutów numerycznych Uwaga: można automatycznie wyznaczyć przedziały przy użyciu procedury DBMS_DATA_MINING_TRANSFORM.INSERT_AUTOBIN_NUM_EQWIDTH SELECT * FROM v_emp_2;
Przykład transformacji danych (4/4) Funkcje SQL przydatne do transformacji danych SELECT ename, sal, NTILE(3) OVER (ORDER BY sal) AS qtile, WIDTH_BUCKET(sal,0,5001,3) AS equi_width FROM emp; Algorytmy eksploracji danych dolna granica górna granica liczba przedziałów Odkrywanie reguł asocjacyjnych Uwagi: NTILE() jest funkcją niedeterministyczną WIDTH_BUCKET() tworzy przedziały prawostronnie otwarte WIDTH_BUCKET() tworzy przedziały nadmiarowe Model reguł asocjacyjnych Zbiór częsty podzbiór elementów występujący wystarczająco często w dużej kolekcji zbiorów Reguła asocjacyjna wyrażenie statystycznie wiążące elementy zbioru częstego kiełbaski musztarda piwo Odkrywanie reguł asocjacyjnych (1/4) pionowa baza danych CREATE OR REPLACE VIEW sales_horizontal AS SELECT S.cust_id, CAST ( MULTISET ( pozioma baza danych SELECT DM_Nested_Numerical(prod_name,1) FROM sales WHERE cust_id = S.cust_id ) AS DM_Nested_Numericals ) products FROM sales S GROUP BY S.cust_id; SELECT * FROM sales WHERE cust_id = 100200; SELECT * FROM sales_horizontal WHERE cust_id = 100200; wsparcie: 2% klientów kupiło kiełbaski, musztardę i piwo ufność: 77% klientów, którzy kupili kiełbaski i musztardę, kupiło także piwo Pionowa baza danych jest wykorzystywana przez Oracle Data Minera, pozioma baza danych jest wykorzystywana przez PL/SQL API
Odkrywanie reguł asocjacyjnych (2/4) Odkrywanie reguł asocjacyjnych (3/4) CREATE TABLE settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(128) ); tabela z parametrami algorytmu ważne są tylko nazwy kolumn INSERT INTO settings VALUES (DBMS_DATA_MINING.ASSO_MAX_RULE_LENGTH,5); 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; 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; DBMS_DATA_MINING.CREATE_MODEL( przekazanie parametrów do algorytmu model_name => 'Associations', mining_function => DBMS_DATA_MINING.ASSOCIATION, data_table_name => 'SALES_HORIZONTAL', case_id_column_name => 'cust_id', settings_table_name => 'settings' ); Odkrywanie reguł asocjacyjnych (4/4) SELECT t.rule_id, t.rule_support, t.rule_confidence, a.attribute_subname AS item_a, c.attribute_subname AS item_b 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; DBMS_FREQUENT_ITEMSET CREATE TYPE fi_products AS TABLE OF VARCHAR2(100); SELECT CAST(itemset AS fi_products) itemset, support, length, total_tranx FROM TABLE(DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL( CURSOR(SELECT cust_id, prod_name FROM sales), 0.005, wsparcie 2, min liczba elementów 5, max liczba elementów NULL, elementy które mają się znaleźć w wyniku CURSOR(SELECT * FROM TABLE(fi_products('Standard Mouse'))))); elementy które nie mają się znaleźć w wyniku
Co to jest klasyfikacja? Algorytmy eksploracji danych Klasyfikacja Kategoryzacja podział bytów na rozłączne klasy (kategorie) zawierające byty tego samego typu Uczenie nadzorowane dedukowanie funkcji na podstawie danych, przeciwdziedzina ciągła (regresja) lub dyskretna (klasyfikacja) Dane wejściowe zbiór uczący (ang. train set) zbiór testujący (ang. test set) atrybut decyzyjny (ang. target attribute) Indukcja drzew decyzyjnych Model drzewa liście reprezentują decyzję modelu (przypisanie do klasy) węzły wewnętrzne reprezentują testy wartości predyktorów krawędzie reprezentują wyniki testów predyktorów Algorytmy eksploracji danych Analiza skupień
Problem znajdowania skupień Analiza skupień (ang. clustering) grupowanie obiektów w skupienia w taki sposób, który maksymalizuje podobieństwo między parami obiektów przydzielonych do jednego skupienia i jednocześnie minimalizuje podobieństwo między parami obiektów przydzielonymi do różnych skupień liczba skupień w danych nie jest znana a priori Fundamentalne pytania co to znaczy, że dwa obiekty są do siebie podobne? skąd wiadomo, że zbudowany model jest poprawny? Miary podobieństwa Miarą podobieństwa może być dowolna metryka d(x,y) spełniająca aksjomaty d(x,x)=0 d(x,y)=d(y,x) d(x,z) d(x,y)+d(y,z) W przestrzeniach metrycznych naturalną miarą podobieństwa jest metryka mierząca odległość (miary Minkowskiego) p L1 ( x, y) = 10 n = ( i= 1 L ( x, y) ( x y ) ) L2 ( x, y) = 52 7.21 3 L3 ( x, y) = 280 6.54 i i p 1/ p 7 3 x 2 8 y Algorytmy k-means i k-medoids wylosuj k punktów jako początkowe centroidy; WHILE (zmiana przypisania punktów) DO przypisz każdy obiekt do najbliższego centroidu; uaktualnij centroidy; END WHILE; Cechy algorytmu k-means centroidem jest średnia geometryczna punktów w klastrze złożoność O(n) bardzo czuły na występowanie wartości osobliwych może wpaść w optimum lokalne zależny od wyboru parametru k Cechy algorytmu k-medoids centroidem jest najbardziej centralny punkt w klastrze złożoność O(n 2 ) nieczuły na występowanie wartości osobliwych Narzędzia graficzne do eksploracji danych
Oracle Data Miner Oracle Data Miner Darmowy graficzny interfejs do Oracle Data Mining Funkcjonalność uruchamianie wszystkich algorytmów ODM w trybie graficznym graficzna prezentacja wyników (krzywe lift, ROC, regresji) SQL Worksheet podgląd zawartości schematu bazy danych dostęp do wcześniejszych modeli i wyników testów możliwość wstępnego przetwarzania danych wersje 10g i 11g http://www.oracle.com/technology/products/bi/odm/odminer.html Weka 3 Weka 3 Projekt open-source rozwijany na Uniwersytecie Waikato "Data Mining: Practical Machine Learning Tools and Techniques", Ian Witten, Eibe Frank Narzędzie graficzne oraz bogate API (Java) Możliwość implementacji własnych algorytmów środowisko do wstępnego przetwarzania danych, znajdowania asocjacji, budowania klasyfikatorów i modeli skupień narzędzie umożliwiające równoległe testowanie różnych algorytmów na tym samym zbiorze danych graficzne środowisko projektowania przepływów pracy uruchamianie programów bezpośrednio z linii poleceń
RapidMiner RapidMiner Środowisko inteligencji biznesowej RapidMiner RapidMiner Enterprise Analytics Server RapidNet RapidSentilyzer RapidDoc Technologie: analiza i eksploracja, ETL, raportowanie Ogromna liczba zaimplementowanych algorytmów Generatory danych syntetycznych Bogate możliwości wizualizacji danych i wyników