Plan laboratorium. Eksploracja danych. Co to jest eksploracja danych. Wprowadzenie do eksploracji danych



Podobne dokumenty
Plan laboratorium. Eksploracja danych. Co to jest eksploracja danych. Wprowadzenie do eksploracji danych

Laboratorium 12. Odkrywanie osobliwości.

Ćwiczenie 5. Eksploracja danych

Laboratorium 10. Odkrywanie cech i algorytm Non-Negative Matrix Factorization.

Implementacja metod eksploracji danych - Oracle Data Mining

Laboratorium 11. Regresja SVM.

1. Przygotowanie danych do analizy. Transformacja danych

Laboratorium 4. Naiwny klasyfikator Bayesa.

Laboratorium 3. Odkrywanie reguł asocjacyjnych.

Laboratorium 6. Indukcja drzew decyzyjnych.

Laboratorium 13. Eksploracja danych tekstowych.

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Określanie ważności atrybutów. OracleData Miner

Laboratorium 5. Adaptatywna sieć Bayesa.

Laboratorium 2. Określanie ważności atrybutów.

Informacje i materiały dotyczące wykładu będą publikowane na stronie internetowej wykładowcy, m.in. prezentacje z wykładów

Baza danych dla potrzeb zgłębiania DMX

4.1. Wprowadzenie Podstawowe definicje Algorytm określania wartości parametrów w regresji logistycznej...74

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Oracle Data Mining 10g

Eksploracja Danych. wykład 4. Sebastian Zając. 10 maja 2017 WMP.SNŚ UKSW. Sebastian Zając (WMP.SNŚ UKSW) Eksploracja Danych 10 maja / 18

Tworzenie raportów XML Publisher przy użyciu Data Templates

Wprowadzenie do technologii informacyjnej.

ALGORYTM RANDOM FOREST

Integracja technik eksploracji danych ]V\VWHPHP]DU]G]DQLDED]GDQ\FK QDSU]\NáDG]LH2UDFOHi Data Mining

Ewelina Dziura Krzysztof Maryański

Pakiety podprogramów Dynamiczny SQL

Algorytmy metaheurystyczne Wykład 11. Piotr Syga

SAS wybrane elementy. DATA MINING Część III. Seweryn Kowalski 2006

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

CLUSTERING. Metody grupowania danych

Data Mining podstawy analizy danych Część druga

Bazy danych. dr inż. Arkadiusz Mirakowski

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

INDUKOWANE REGUŁY DECYZYJNE ALORYTM APRIORI JAROSŁAW FIBICH

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

1. Cele eksploracyjnej analizy danych Rapid Miner zasady pracy i wizualizacja danych Oracle Data Miner -zasady pracy.

Drzewa decyzyjne i lasy losowe

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Ćwiczenie 5. Metody eksploracji danych

data mining machine learning data science

SYLABUS. Dotyczy cyklu kształcenia Realizacja w roku akademickim 2016/2017. Wydział Matematyczno - Przyrodniczy

Bazy danych. Andrzej Łachwa, UJ, /15

Klasyfikacja obiektów Drzewa decyzyjne (drzewa klasyfikacyjne)

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Szczegółowy opis przedmiotu zamówienia

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

Klasyfikacja i regresja Wstęp do środowiska Weka

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Metody klasyfikacji danych - część 1 p.1/24

Wykład 8. SQL praca z tabelami 5

Algorytmy klasyfikacji

1. Odkrywanie asocjacji

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Analiza danych. TEMATYKA PRZEDMIOTU

1. Grupowanie Algorytmy grupowania:

projekt zaliczeniowy Eksploracja Danych

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu

Analiza danych i data mining.

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Systemy uczące się wykład 1

Mail: Pokój 214, II piętro

Systemy pomiarowo-diagnostyczne. Metody uczenia maszynowego wykład I dr inż. 2015/2016

Data Mining Wykład 4. Plan wykładu

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Wprowadzenie Sformułowanie problemu Typy reguł asocjacyjnych Proces odkrywania reguł asocjacyjnych. Data Mining Wykład 2

Modelowanie wymiarów

PODYPLOMOWE STUDIA ZAAWANSOWANE METODY ANALIZY DANYCH I DATA MINING W BIZNESIE

Relacyjne bazy danych. Podstawy SQL

Wykład 5. SQL praca z tabelami 2

Systemy GIS Tworzenie zapytań w bazach danych

Optymalizacja systemów

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

Algorytm grupowania danych typu kwantyzacji wektorów

Krzysztof Kawa. empolis arvato. e mail: krzysztof.kawa@empolis.com

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Wykład XII. optymalizacja w relacyjnych bazach danych

Sztuczna Inteligencja Projekt

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

2. Ocena dokładności modelu klasyfikacji:

Drzewa klasyfikacyjne algorytm podstawowy

Relacyjne bazy danych. Podstawy SQL

Indeksowanie w bazach danych

Inżynieria biomedyczna

Bloki anonimowe w PL/SQL

Wprowadzenie do technologii Business Intelligence i hurtowni danych

Ćwiczenie 12. Metody eksploracji danych

Optymalizacja poleceń SQL Wprowadzenie

A Zadanie

Przestrzenne bazy danych Podstawy języka SQL

Język PL/SQL Pakiety podprogramów

Nauczycielem wszystkiego jest praktyka Juliusz Cezar. Nauka to wiara w ignorancję ekspertów Richard Feynman

Transkrypt:

Plan laboratorium Eksploracja danych Wprowadzenie do eksploracji danych Pakiety PL/SQL i funkcje SQL Transformacja danych Algorytmy eksploracji danych określanie ważności atrybutów 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

Statystyka dla niedouczonych Ostrożnie z optymizmem Eksperymenty J.B.Rhine a z kartami Zenera jak często udaje się zgadnąć kolor karty (czarna/czerwona) 10 razy z rzędu? co się dzieje, jeśli osoba posiadająca ESP dowie się o tym? Ostrożnie z optymizmem Ostrożnie z optymizmem

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 supervised binning: przedziały obliczane automatycznie przez DT 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) v shift przeskalowanie domeny atrybutu ciągłego v' = scale wspierane metody min-max scale z-score min v' = v (max' min') + min' max min v v ' = max{ abs(min), abs(max)} v' = v µ σ

Metody transformacji (2/2) 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 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ą Przykład transformacji danych (1/8) Dyskretyzacja atrybutu JOB metodą top-n DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_CAT( bin_table_name => 'categorical_binning', bin_schema_name => 'ploug_odm'); 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; tabela z definicją transformacji 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/8) Dyskretyzacja atrybutu SAL metodą quantile Przykład transformacji danych (3/8) Wygenerowanie wyniku dyskretyzacji DBMS_DATA_MINING_TRANSFORM.CREATE_BIN_NUM( bin_table_name => 'numerical_binning', bin_schema_name => 'ploug_odm'); 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/8) Normalizacja atrybutu SAL metodą z-score Przykład transformacji danych (5/8) Wygenerowanie wyniku normalizacji DBMS_DATA_MINING_TRANSFORM.CREATE_NORM_LIN( norm_table_name => 'linear_normalization', norm_schema_name => 'ploug_odm'); DBMS_DATA_MINING_TRANSFORM.INSERT_NORM_LIN_ZSCORE( norm_table_name data_table_name => 'EMP', exclude_list => 'linear_normalization', => DBMS_DATA_MINING_TRANSFORM.Column_List( 'EMPNO','MGR','COMM','DEPTNO')); SELECT * FROM linear_normalization; tabela z definicją normalizacji wyznaczenie współczynników normalizacji lista atrybutów, które nie mają podlegać normalizacji DBMS_DATA_MINING_TRANSFORM.XFORM_NORM_LIN( norm_table_name=>'linear_normalization', data_table_name=>'emp', xform_view_name=>'v_emp_3'); SELECT * FROM v_emp_3; utworzenie perspektywy pokazującej dane po normalizacji atrybutów ciągłych Przykład transformacji danych (6/8) Przycięcie atrybutu SAL Przykład transformacji danych (7/8) Wygenerowanie wyniku przycinania DBMS_DATA_MINING_TRANSFORM.CREATE_CLIP( clip_table_name => 'clipping', clip_schema_name => 'ploug_odm'); 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( 'EMPNO','MGR','COMM','DEPTNO')); tabela z definicją przycięcia wyznaczenie granic przycięcia lista atrybutów, które nie mają podlegać przycięciu DBMS_DATA_MINING_TRANSFORM.XFORM_CLIP( clip_table_name=>'clipping', data_table_name=>'emp', xform_view_name=>'v_emp_4'); SELECT * FROM v_emp_4 ORDER BY sal; utworzenie perspektywy pokazującej dane po przycięciu atrybutów numerycznych SELECT * FROM clipping;

Przykład transformacji danych (8/8) 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 Określanie ważności atrybutów Uwagi: NTILE() jest funkcją niedeterministyczną WIDTH_BUCKET() tworzy przedziały prawostronnie otwarte WIDTH_BUCKET() tworzy przedziały nadmiarowe Wycieczka w odległą przeszłość William z Ockham (c.1288-c.1348) entia non sunt multiplicanda praeter necessitatem Odkrywanie ważności atrybutów (1/2) SELECT * FROM VOTES; predyktory Andrei N. Kolmogorov (1903-1987) K(s)= d(s) Jorma Rissanen (1932-) Minimum Description Length DESC VOTES; atrybut decyzyjny

Odkrywanie ważności atrybutów (2/2) nazwa modelu DBMS_DATA_MINING.CREATE_MODEL( funkcja eksploracji model_name => 'Attribute_Importance', mining_function => DBMS_DATA_MINING.ATTRIBUTE_IMPORTANCE, data_table_name => 'VOTES', case_id_column_name => 'id', target_column_name => 'class'); atrybut decyzyjny Algorytmy eksploracji danych SELECT * FROM TABLE(DBMS_DATA_MINING. GET_MODEL_DETAILS_AI( 'Attribute_Importance')) ORDER BY RANK; Odkrywanie reguł asocjacyjnych Model reguł asocjacyjnych Wykorzystanie 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 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 reguły asocjacyjne

Odkrywanie reguł asocjacyjnych (1/5) Odkrywanie reguł asocjacyjnych (2/5) SELECT * FROM MOVIES NATURAL JOIN RATINGS; CREATE OR REPLACE VIEW ar_vertical AS SELECT cid, title FROM movies NATURAL JOIN ratings WHERE rating = 5; pionowa baza danych pozioma baza danych DESC MOVIES; DESC RATINGS; CREATE OR REPLACE VIEW ar_horizontal AS SELECT A.cid, CAST ( MULTISET ( SELECT DM_Nested_Numerical(title,1) FROM ar_vertical WHERE cid = A.cid ) AS DM_Nested_Numericals ) Movies FROM ar_vertical A GROUP BY A.cid; SELECT * FROM ar_vertical WHERE cid = 744747; SELECT * FROM ar_horizontal WHERE cid = 744747; Odkrywanie reguł asocjacyjnych (3/5) Odkrywanie reguł asocjacyjnych (4/5) 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,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; 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 => 'AR_HORIZONTAL', case_id_column_name => 'cid', settings_table_name => 'settings' );

Odkrywanie reguł asocjacyjnych (5/5) DBMS_FREQUENT_ITEMSET 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; SELECT * FROM bad_movies; CREATE TYPE fi_movies AS TABLE OF VARCHAR2(100); SELECT CAST(itemset AS fi_movies) itemset, support, length, total_tranx FROM TABLE(DBMS_FREQUENT_ITEMSET.FI_TRANSACTIONAL( CURSOR(SELECT cid, title FROM bad_movies), 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_movies('A.I. Artificial Intelligence'))))); 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)

Naiwny klasyfikator Bayesa Thomas Bayes (1702-1761) prawdopodobieństwo a posteriori hipotezy h przy obserwacji D P( D h)* P( h) P ( h D) =, P( D) = P( h i D) P( D) prawdopodobieństwo obserwacji danych D przy założeniu prawdziwości hipotezy h prawdopodobieństwo a priori hipotezy h Przykład za którymi drzwiami jest nagroda? i tylko przy założeniu hipotezy o zamkniętym świecie SELECT * FROM zoo_build; DESC zoo_build Budowa NBC (1/5) atrybut decyzyjny Budowa NBC (2/5) Budowa NBC (3/5) CREATE TABLE priors ( target_value NUMBER, prior_probability NUMBER); INSERT INTO priors VALUES ('fish',0.16); INSERT INTO priors VALUES ('mammal',0.39); INSERT INTO priors VALUES ('insect',0.07); INSERT INTO priors VALUES ('reptile',0.05);... CREATE TABLE settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(30)); prawdopodobieństwa a priori poszczególnych klas ustawienia algorytmu INSERT INTO settings VALUES (DBMS_DATA_MINING.ALGO_NAME,DBMS_DATA_MINING.ALGO_NAIVE_BAYES); INSERT INTO settings VALUES (DBMS_DATA_MINING.CLAS_PRIORS_TABLE_NAME,'priors'); INSERT INTO settings VALUES (DBMS_DATA_MINING.NABS_PAIRWISE_THRESHOLD,0.01); INSERT INTO settings VALUES (DBMS_DATA_MINING.NABS_SINGLETON_THRESHOLD,0.005); w modelu znajdą się tylko atrybuty przekraczające te progi DBMS_DATA_MINING.CREATE_MODEL( model_name => 'NaiveBayes', mining_function => DBMS_DATA_MINING.CLASSIFICATION, data_table_name => 'zoo_build', case_id_column_name => 'name', target_column_name => 'type', settings_table_name => 'settings'); SELECT target_attribute_str_value, prior_probability, c.attribute_name, c.attribute_str_value, c.conditional_probability FROM TABLE(DBMS_DATA_MINING. GET_MODEL_DETAILS_NB('NaiveBayes')) t, TABLE(t.conditionals) c ORDER BY target_attribute_str_value, c.attribute_name, c.attribute_str_value;

Budowa NBC (4/5) Budowa NBC (5/5) DBMS_DATA_MINING.APPLY_MODEL( model_name => 'NaiveBayes', data_table_name => 'zoo_apply', case_id_column_name => 'name', result_table_name => 'zoo_applied'); SELECT name, predykcja pełna PREDICTION(NaiveBayes USING *), PREDICTION_PROBABILITY(NaiveBayes, 'mammal' USING *), PREDICTION(NaiveBayes USING aquatic, predator, toothed), PREDICTION_PROBABILITY(NaiveBayes, 'fish' USING aquatic, predator, toothed) FROM zoo_apply WHERE name='dolphin'; predykcja częściowa SELECT * FROM zoo_applied; SELECT P.name, PS.prediction, PS.probability FROM ( SELECT name, PREDICTION_SET(NaiveBayes USING *) AS pset FROM zoo_apply ) P, TABLE(P.pset) PS; 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 Corrado Gini (1884-1965) Indeks Gini ego Miara nierównomierności rozkładu dochodu wykorzystywany w socjologii, medycynie, ekologii, chemii stosunek powierzchni obszaru między krzywą Lorenza a prostą idealnego rozkładu do powierzchni całego obszaru pod prostą idealnego rozkładu może mierzyć nierównomierność rozkładu wartości atrybutu decyzyjnego wewnątrz węzła drzewa 2 S1 S2 gini( S) = 1 p j gini( S1, S2) = gini( S1) + gini( S2) j S + S S + S Przykład AD92 W9532 7 AKD 84 D87 AK53 10843 1 2 1 2

Entropia Miara niepewności związana ze zmienną losową wartość informacyjna mierzona w bitach strata informacji związana z obecnością zmiennej losowej H ( X ) = n i= 1 p( x i )log2 p( x i ) Koszty błędów i dokładność klasyfikacji Problem wysyłki reklamowej przewidywane rzeczywiste Klasyczny przykład entropia rzutu monetą Problem inseminacji krów Tworzenie drzewa decyzyjnego (1/4) atrybut decyzyjny SELECT * FROM titanic; CREATE TABLE settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(30)); tablica kosztów CREATE TABLE cost ( actual_target_value NUMBER, predicted_target_value NUMBER, cost NUMBER); INSERT INTO cost VALUES ('no','no',0); INSERT INTO cost VALUES ('no','yes',1); INSERT INTO cost VALUES ('yes','no',4); INSERT INTO cost VALUES ('yes', 'yes',0); COMMIT; Tworzenie drzewa decyzyjnego (2/4) INSERT INTO settings VALUES(DBMS_DATA_MINING.ALGO_NAME, DBMS_DATA_MINING.ALGO_DECISION_TREE); INSERT INTO settings VALUES(DBMS_DATA_MINING.CLAS_COST_TABLE_NAME, 'cost'); -- miara czystości węzła wewnętrznego drzewa (dla Gini stala 'TREE_IMPURITY_GINI') INSERT INTO settings VALUES (DBMS_DATA_MINING.TREE_IMPURITY_METRIC, 'TREE_IMPURITY_ENTROPY'); -- maksymalna głębokość wygenerowanego drzewa INSERT INTO settings VALUES (DBMS_DATA_MINING.TREE_TERM_MAX_DEPTH, 5); -- minimalna liczba rekordów w węźle przed podziałem węzła INSERT INTO settings VALUES (DBMS_DATA_MINING.TREE_TERM_MINREC_SPLIT, 5); -- minimalny procent rekordów w węźle przed podziałem INSERT INTO settings VALUES (DBMS_DATA_MINING.TREE_TERM_MINPCT_SPLIT, 0.01); -- minimalna liczba rekordów w węźle/liściu INSERT INTO settings VALUES (DBMS_DATA_MINING.TREE_TERM_MINREC_NODE, 5); -- minimalny procent rekordów w węźle/liściu INSERT INTO settings VALUES (DBMS_DATA_MINING.TREE_TERM_MINPCT_NODE, 0.005); COMMIT;

Tworzenie drzewa decyzyjnego (3/4) Tworzenie drzewa decyzyjnego (4/4) DBMS_DATA_MINING.CREATE_MODEL( SELECT model_name mining_function data_table_name => 'DecisionTree', => DBMS_DATA_MINING.CLASSIFICATION, => 'titanic', case_id_column_name => 'id', target_column_name => 'survived', settings_table_name => 'settings'); DBMS_DATA_MINING.GET_MODEL_DETAILS_XML('DecisionTree').extract('/') FROM dual; SELECT survived AS actual_target_value, PREDICTION(DecisionTree USING *) AS predicted_target_value, COUNT(*) AS value FROM titanic GROUP BY survived, PREDICTION(DecisionTree USING *) ORDER BY 1,2; SELECT survived AS actual_target_value, PREDICTION(DecisionTree COST MODEL USING *) AS predicted_target_value, COUNT(*) AS value FROM titanic GROUP BY survived, PREDICTION(DecisionTree COST MODEL USING *) ORDER BY 1,2; eksport modelu do PMML 2.1 Problem znajdowania skupień Algorytmy eksploracji danych 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 Analiza skupień Fundamentalne pytania co to znaczy, że dwa obiekty są do siebie podobne? skąd wiadomo, że zbudowany model jest poprawny?

Miary podobieństwa (1/2) 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) L1 ( x, y) = 10 Lp ( x, y) = ( ( xi yi ) ) n i= 1 L2 ( x, y) = 52 7.21 3 L3 ( x, y) = 280 6.54 p 1/ p 7 3 x 2 8 y Miary podobieństwa (2/2) Co zrobić, gdy dane nie są opisane przez atrybuty numeryczne? zmienne binarne symetryczne i niesymetryczne zmienne kategoryczne zmienne stanowiące serie wartości ( x, y) = x + y 2* LCS( x, y) wektory wartości kategorycznych i liczbowych L cos x = ( x, y) = 1 n 2 x i i= 1 xo y x * y xo y = n i= 1 ( x i * y i ) L S rozrywka sport polityka Algorytmy k-means i k-medoids Przykładowy zbiór danych 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

Tworzenie modelu k-means (1/3) Tworzenie modelu k-means (2/3) INSERT INTO settings VALUES(DBMS_DATA_MINING.ALGO_NAME, DBMS_DATA_MINING.ALGO_KMEANS); -- miara podobieństwa (alternatywnie 'KMNS_COSINE') INSERT INTO settings VALUES(DBMS_DATA_MINING.KMNS_DISTANCE, DBMS_DATA_MINING.KMNS_EUCLIDEAN); -- miara wyboru partycji do podziału (alternatywnie 'KMNS_SIZE') INSERT INTO settings VALUES (DBMS_DATA_MINING.KMNS_SPLIT_CRITERION, DBMS_DATA_MINING.KMNS_VARIANCE); -- tolerancja konwersji INSERT INTO settings VALUES (DBMS_DATA_MINING.KMNS_CONV_TOLERANCE, 0.01); -- liczba przedziałów do obowiązkowej dyskretyzacji INSERT INTO settings VALUES (DBMS_DATA_MINING.KMNS_NUM_BINS, 100); -- próg minimalnego wsparcia wartości kaŝdego atrybutu INSERT INTO settings VALUES (DBMS_DATA_MINING.KMNS_MIN_PCT_ATTR_SUPPORT, 0.01); -- maksymalna liczba iteracji INSERT INTO settings VALUES (DBMS_DATA_MINING.KMNS_ITERATIONS, 10); COMMIT; DBMS_DATA_MINING.CREATE_MODEL( model_name mining_function data_table_name => 'kmeans', => DBMS_DATA_MINING.CLUSTERING, => 'clouds', case_id_column_name => 'id', settings_table_name => 'settings'); SELECT cluster_id, SYS_CONNECT_BY_PATH(cluster_id,'/') AS path FROM TABLE( DBMS_DATA_MINING.GET_MODEL_DETAILS_KM('kMeans') ) WHERE tree_level = 5 CONNECT BY PRIOR cluster_id = parent START WITH tree_level = 1; SELECT cluster_id, C.attribute_name, C.mean FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_KM('kMeans')) T, TABLE(T.centroid) C WHERE tree_level = 5 ORDER BY cluster_id, C.attribute_name; Tworzenie modelu k-means (3/3) Pakiet DBMS_PREDICTIVE_ANALYTICS (1/2) One-click data mining czyli eksploracja dla leniwych DBMS_PREDICTIVE_ANALYTICS.EXPLAIN('zoo','type','explain_table'); DBMS_PREDICTIVE_ANALYTICS.PROFILE('zoo','type','profile_table'); SELECT x1, x2, CLUSTER_ID(kMeans USING *) AS cnum, CLUSTER_PROBABILITY(kMeans, 16 USING *) AS prob FROM clouds WHERE x1 BETWEEN 65 AND 70 ORDER BY cnum, prob DESC;

Pakiet DBMS_PREDICTIVE_ANALYTICS (2/2) One-click data mining czyli eksploracja dla leniwych DECLARE v_accuracy NUMBER := 0; DBMS_PREDICTIVE_ANALYTICS.PREDICT( accuracy => v_accuracy, data_table_name => 'zoo', case_id_column_name => 'name', target_column_name => 'type', result_table_name => 'predict_table'); Narzędzia graficzne do eksploracji danych DBMS_OUTPUT.PUT_LINE(v_accuracy); SELECT name, type, prediction FROM zoo NATURAL JOIN predict_table WHERE type!= prediction; 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