Ćwiczenie 4: Odkrywanie reguł asocjacyjnych

W tym ćwiczeniu zapoznajemy się z metodami odkrywania reguł asocjacyjnych. Analizujemy własności algorytów Apriori i FP-Growth i sprawdzamy, jak parametry minimalnego wsparcia (minsup) i minimalnej ufności (minconf) wpływają na uzyskiwane wyniki.

literatura
  • Fast Algorithms for Mining Association Rules, R.Agrawal, R.Srikant, In Proc. 20th Int. Conf. Very Large Data Bases, VLDB (December–JanuaryMay~ 1994), pp. 487-499
  • Mining Frequent Patterns Without Candidate Generation, J.Han, J.Pei, Y.Yin, SIGMOD '00 Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data ACM New York, NY, USA ISBN:1-58113-217-4 DOI:10.1145/342009.335372
  • Dynamic itemset counting and implication rules for market basket data, S.Brin, R.Motwani, J.Ullman, SIGMOD '97 Proceedings of the 1997 ACM SIGMOD International Conference on Management of Data ACM New York, NY, USA ISBN:0-89791-911-4
  • Comparing Rule Measures for Predictive Association Rules, Azevedo, Paulo J., and Alípio M. Jorge. Machine Learning: ECML 2007. Springer Berlin Heidelberg, 2007. 510-517.
Rapid Miner
  • Uruchom narzędzie Rapid Miner 5
  • Utwórz nowy przepływ. Użyj operatora Read CSV aby załadować plik marketbasket.csv. Jako separator między kolumnami wskaż znak średnika. Zaznacz także, że pierwszy wiersz w pliku zawiera nazwy atrybutów. Po załadowaniu pliku uruchom przepływ i obejrzyj metadane.
  • Dodaj do przepływu operator Numerical to Nominal aby zamienić każdy atrybut na atrybut binarny. Następnie umieść na przepływie operator FP-Growth i ustal liczbę poszukiwanych zbiorów częstych na 100 (parametr find min number of itemsets). Uruchom przepływ i obejrzyj wyniki. Porównaj wyniki z sytuacją w której wyłączysz parametr find min number of itemsets i ustalisz próg minimalnego wsparcia na min support=0.01.
  • Dodaj do przepływu operator Create Association Rules, wskazując jako kryterium selekcji reguł miarę ufności (ang.confidence) z wartością progową 0.8. Uruchom przepływ. Obejrzyj znalezione reguły asocjacyjne, uruchom wizualizację reguł (zakładka Graph View), porównaj kilka sposobów wyświetlania reguł. Znajdź reguły tłumaczące, dlaczego ludzie kupują jajka i biały chleb.
  • Zapoznaj się z miarami oceny reguł.
  • Utwórz nowy przepływ i załaduj przykładowy zbiór danych Iris. Zapoznaj się z charakterystyką tego zbioru. Wykorzystaj operator Discretize do dyskretyzacji wszystkich atrybutów numerycznych na trzy przedziały o równej szerokości. Następnie dokonaj konwersji atrybutów nominalnych na atrybuty binarne.
  • Umieść w przepływie operator W-Apriori i skonfiguruj go w następujący sposób:
    • liczba reguł do znalezienia: 100
    • użyta miara oceny reguł: ufność (0)
    • próg minimalnej ufności: 50%
    • górny próg minimalnego wsparcia: 100%
    • dolny próg minimalnego wsparcia: 10%
    • zmiana progu minimalnego wsparcia: 1%
    • wyświetlanie zbiorów częstych
  • Włącz opcję umożliwiającą generowanie reguł asocjacyjnych w odniesieniu do zmiennej zależnej. Przed operatorem W-Apriori dodaj operator Set Role którego zadaniem będzie włączenie atrybutu label do procesu eksploracji (zmień rolę tego atrybutu na zwykły atrybut). Jako indeks zmiennej zależnej wskaż ostatni atrybut (C = -1) i obejrzyj uzyskane wyniki. Twój przepływ powinien wyglądać następująco:

Oracle Data Mining
  • Zaloguj się do bazy danych: iSQLPlus korzystając z konta EDXX. Identyfikator połączenia do DBLAB01.
  • Utwórz perspektywy która będzie zawierała dane do eksploracji. Posłuż się tabelami SALES i PRODUCTS w schemacie przykładowego użytkownika SH. Perspektywa MARKET_BASKET_DATA będzie wykorzystana przez narzędzie Oracle Data Miner, perspektywa MARKET_BASKET_DATA_AR będzie wykorzystywana przez PL/SQL API.
SET PAGESIZE 1000
 
CREATE OR REPLACE VIEW MARKET_BASKET_DATA AS 
SELECT cust_id, prod_name, 1 has_it 
FROM (SELECT a.cust_id, b.prod_name 
      FROM SH.SALES a, SH.PRODUCTS b 
      WHERE a.prod_id = b.prod_id)
WHERE cust_id BETWEEN 100000 AND 100500
GROUP BY cust_id, prod_name ;
 
CREATE OR REPLACE VIEW MARKET_BASKET_DATA_AR AS 
SELECT D.CUST_ID, CAST(MULTISET( SELECT DM_Nested_Numerical(SUBSTR(C.PROD_NAME, 1, 30), has_it) 
                                 FROM MARKET_BASKET_DATA C 
                                 WHERE C.CUST_ID = D.CUST_ID ) AS DM_Nested_Numericals) CUSTPRODUS 
FROM MARKET_BASKET_DATA D
GROUP BY D.CUST_ID;
  • Porównaj format pionowy i poziomy bazy danych
SELECT * FROM MARKET_BASKET_DATA WHERE cust_id = 100001;
 
SELECT * FROM MARKET_BASKET_DATA_AR WHERE cust_id = 100001;
  • Jeżeli wcześniej wykonywa(e)łeś to ćwiczenie, to usuń model eksploracji z repozytorium.
BEGIN
  DBMS_DATA_MINING.DROP_MODEL('Associations');
END;
  • Utwórz tabelę do przechowywania parametrów algorytmu odkrywania reguł asocjacyjnych
DROP TABLE settings;
 
CREATE TABLE settings (
  setting_name VARCHAR2(30),
  setting_value VARCHAR2(128) 
);
  • Wypełnij tabelę parametrami dla algorytmu Apriori. Ogranicz maksymalną długość znajdowanych reguł do 3 produktów, ustaw minsup=10% i minconf=50%
BEGIN
  INSERT INTO settings VALUES (dbms_data_mining.asso_max_rule_length,3);
  INSERT INTO settings VALUES (dbms_data_mining.asso_min_support,0.1);
  INSERT INTO settings VALUES (dbms_data_mining.asso_min_confidence,0.5);
  COMMIT; 
END;
  • Zbuduj model, który będzie zawierał znalezione reguły asocjacyjne
BEGIN
  DBMS_DATA_MINING.CREATE_MODEL(
    model_name          => 'Associations',
    mining_function     => DBMS_DATA_MINING.ASSOCIATION,
    data_table_name     => 'market_basket_data_ar',
    case_id_column_name => 'cust_id',
    settings_table_name => 'settings' );
END;
  • Wyświetl ustawienia modelu, tzn. odczytaj z repozytorium wartości parametrów z jakimi model został zbudowany
SELECT * FROM TABLE (
  DBMS_DATA_MINING.GET_MODEL_SETTINGS('Associations'))
ORDER BY setting_name;
  • Wyświetl znalezione zbiory częste
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świetl znalezione reguły asocjacyjne
SELECT t.rule_id, t.rule_support, t.rule_confidence, a.attribute_subname AS antecedent, c.attribute_subname AS consequent
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;
 
pisbi-association.rules.txt · Last modified: 2015/05/10 08:14 by Mikołaj Morzy
 
Except where otherwise noted, content on this wiki is licensed under the following license:Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki