Algorytm DIC Dynamic Itemset Countin Jarosław Janiszewski 83700 Piotr Garbacik 84796 Agata Firlejczyk 84792 Krzysztof Duszczyk 84787
Objaśnienie Algorytmu Algorytm Dynamic Itemset Counting jest modyfikacją algorytmu apriori. Podstawową różnicą w funkcjonowaniu algorytmów DIC oraz apriori jest działanie etapu pierwszego(czyli zliczania zbiorów częstych). Algorytm ten rozpoczyna zliczanie zbiorów częstych (n+1) elementowych przed zakończenie zliczania zbiorów n-elementowych.
Etapy algorytmu Algorytm DIC, tak samo jak apriori, przebiega dwu etapowo Etap wyszukiwania zbiorów częstych Etap generowania reguł asocjacyjnych
Etap wyszukiwania zbiorów częstych Etap ten stanowi o odmienności w stosunku do algorytmu apriori. W algorytmie DIC wprowadza się dodatkowy parametr M, który oznacza liczbę transakcji, po których rozpoczyna się zliczanie zbiorów częstych o większej liczbie elementów. Każdy ze zliczanych zbiorów ma przyporządkowany stan, w zależności od tego, czy jest zbiorem częstym czy nie oraz czy jego zliczanie zostało już zakończone.
Etap wyszukiwania zbiorów częstych Poszczególne stany to: - Dashed Box(0) - zbiór, dla którego liczenie nie zostało zakończone, oraz, jego wsparcie przekracza minimalne. - Dashed Circle(1) – zbiór, dla którego liczenie nie zostało zakończone, oraz, jego wsparcie nie przekracza minimalnego. - Solid Box(2) - zbiór, dla którego liczenie zostało zakończone, oraz, jego wsparcie przekracza minimalne. - Solid Circle(3) – zbiór, dla którego liczenie zostało zakończone, oraz, jego wsparcie nie przekracza minimalnego.
Etap wyszukiwania zbiorów częstych W momencie rozpoczęcia zliczania danego zbioru, jest on zbiorem nieczęstym(1). Po każdym M-transakcyjnym etapie może być zbiorem częstym, o ile jego wsparcie przekroczyło minimalny próg wsparcia, następuje zmiana stanu z 1 na 0. Po zliczeniu danego zbioru przez wszystkie transakcje, jego stan jest zmieniany odpowiednio ze stanu 0 na 2 i 1 na 3, a jego zliczanie zostaje zakończone. Po każdym M-transakcyjnym etapie weryfikuje się, czy którykolwiek ze zbiorów zamienionych na zbiory częste ma nadzbiór, którego wszystkie bezpośrednie podzbiory są zbiorami częstymi. W takim przypadku nadzbiór ten dodaje się do drzewa zbiorów zamienia się na zbiór nieczęsty i rozpoczyna jego zliczanie. Etap kończy się, gdy zakończono zliczanie wszystkich zbiorów
Etap generowania reguł asocjacyjnych Etap ten jest taki sam jak etap algorytmu apriori. Dla każdego zbioru częstego L o mocy większej od 1 sprawdza się wszystkie jego podzbiory sL a następnie w oparciu o dane o wsparciu zbiorów L oraz sL oblicza się ufność reguły sL ⇒ (L − sL). Jeśli ufność ta przekracza podany próg, regułę dodaje się do znalezionych reguł
Algorytm w krokach 1. Zbiory jednoelementowe są zbiorami nieczęstymi 2. Czytaj M transakcji i zwiększaj o +1 liczniki zbiorów, które zawierają się w danej transakcji, jeżeli wszystkie zbiory znajdują się w stanach 2 lub 3 przejdź do 5 3. Gdy nieczęsty zbiór przekroczył próg minimalnego wsparcia, zmień jego zbiór na częsty 4. Sprawdzanie, czy któryś ze zbiorów zamienionych na częste posiada nadzbiór, którego wszystkie bezpośrednie podzbiory są częste. W takim przypadku nadzbiór ten dodaje się do listy zbiorów zamienia się na zbiór nieczęsty i rozpoczyna jego zliczanie. Wróć do kroku 2 5. Dla zbiorów wstanie 2 wygeneruj reguły asocjacyjne.
Implementacja Do implementacji wykorzystano język c#, .Net framework 3.5. Wykorzystano kompilator visual studio 2010. Zbiory przechowywane były jako lista obiektów zawierających takie pola jak: zbiór elementów([]int), stan(int), liczebność(int).
Wyniki Zależność pomiędzy minimalnym wsparciem, a czasem (s). Zbiór Mashroom.
Wyniki Zależność pomiędzy minimalny wsparciem, a pamięcią (bajt). Zbiór Mushroom
Wyniki Zależność pomiędzy minimalnym wsparciem, a czasem (s). Zbiór Kosarak.
Wyniki Zależność pomiędzy minimalny wsparciem, a pamięcią (bajt). Zbiór Kosarak.
Wyniki Zależność pomiędzy minimalnym wsparciem, a czasem (s). Zbiór Accidents.
Wyniki Zależność pomiędzy minimalny wsparciem, a pamięcią (bajt). Zbiór Accidents.
Literatura Dynamic Itemset Counting and Implication Rules for Market Basket Data, S, Brin, R. Motwani, J. D. Ullman, S. Tsu