Reguły asocjacyjne, wykł. 11 Joanna Jędrzejowicz Instytut Informatyki
Przykłady reguł Analiza koszyka sklepowego (ang. market basket analysis) - jakie towary kupowane są razem, Jakie towary sprzedają się najlepiej w poszczególnych porach roku, Jacy klienci telefonii komórkowej są zainteresowani zwiększeniem standardu usług, itd... jakie nieodkryte zależności występują między atrybutami w bazie danych
Przykład - zakupy książek skrót autor A Arbib C Coffman D Dijkstra T Turski W Węglarz Reguły: A C AC T T ACW T i zakupy 10 A C T W 20 C D W 30 A C T W 40 A C D W 50 A C D T W 60 C D T
Reguły asocjacyjne Podstawowe oznaczenia Pozycje (ang. items) opisują dostępne towary. Zbiorem towarów jest: I = {i 1, i 2,, i m } Baza transakcji jest zbiorem par postaci (t i, T i ), gdzie t i jest numerem transakcji, T i - zbiór zakupionych towarów, T i I, itemset - dowolny podzbiór I, k-itemset - podzbiór o k elementach, s(x )- liczba transakcji zawierajacych X, w przykładzie s(a) = 4
Postać reguł asocjacyjnych Reguła wraz z dwiema miarami: A B, A I, B I wsparcie (ang. support) dla reguły: s(a B) ufność lub wiarygodność (ang. confidence): s(a B) s(a)
skrót A C D T W autor Arbib Coffman Dijkstra Turski Węglarz T i zakupy 10 A C T W 20 C D W 30 A C T W 40 A C D W 50 A C D T W 60 C D T Reguła wsparcie wiaryg. A C 4 100% C W 5 83.3% AC T 3 75% T ACW 3 75%
Sformułowanie problemu Problem Dane: zbiór pozycji I, zbiór transakcji D = {(t i, T i ) : i = 1,..., n, T i I } dwie stałe: minimalna wartość wsparcia s min, minimalny stopien wiarygodności c min Zadanie: znaleźć reguły asocjacyjne o wsparciu s min oraz wiarygodności c min
Problem obliczeniowy Sprawdzanie wszystkich reguł nie jest wykonalne! Większość algorytmów działa w dwóch krokach: znajdź częste zbiory: podzbiory o wsparciu s min podział: dla każdego częstego zbioru, znajdź podziały tego zbioru na dwa podzbiory, aby otrzymać reguły o wiarygodności c min
Przykład T i zakupy 10 A C T W 20 C D W 30 A C T W 40 A C D W 50 A C D T W 60 C D T przykładowa reguły dla AC: A C wiarygodność 100% C A wiarygodność 66, 6% wsparcie częste podzbiory 100% (6) C 83, 3% (5) W, CW 66.6% (4) A, D, T, AC, AW, CD, CT, ACW 50% (3) AT, DW, TW, ACT, ATW, CDW, CTW, ACTW
Jak wyznaczać częste podzbiory? Korzysta się z nast. własności: jeśli itemset nie jest częsty, to żaden jego nadzbiór nie jest częsty - czyli nie trzeba generować. Metoda: znajdź wszystkie 1-elementowe zbiory częste, generuj 2-elementowe zbiory częste z 1-elementowych częstych zbiorów generuj k-elementowe zbiory częste z k-1-elementowych częstych zbiorów
Algorytm apriori Apriori 1 C 1 := I, F 1 := rodzina 1-elem. zbiorów częstych, 2 k:=2, 3 while F k 1 and F k 1 F k 2 do 4 C k :=AprioriGen(F k 1 ); 5 F k := {X C k : s(x ) s min }; 6 k:=k+1; 7 end while 8 wynik:=f 1 F 2 F k
Przykład wsparcie minimalne : 3 wiarygodność 80% T i zakupy 10 A C T W 20 C D W 30 A C T W 40 A C D W 50 A C D T W 60 C D T częste podzbiory F 1 A, C, D, T, W C 2 AC, AD,... F 2 AC, AT, AW, CD, CT, CW, DW, TW C 3 ACT, ACW, ATW, CDW CDT, CTW, DTW F 3 ACT, ACW, ATW, CDW CTW C 4 ACTW
Funkcja AprioriGen Algorytm posiada dwa główne kroki: łączenie - do C k wstawiamy sumy takich par X, Y F k 1, które mają wspólne k 2 początkowych elementów. Na przykład dla mamy F k 1 = {AB, AC, AD, AE, BC, BD, BE} C k = {ABC, ABD, ABE, ACD, ACE, ADE, BCD, BCE, BDE} obcinanie (ang. pruning): usuwamy z C k te podzbiory, których nie wszystkie podzbiory k 1 elementowe są w F k 1, np. usuwamy ACD, bo CD F k 1, mamy F k = {ABC, ABD, ABE}
Generowanie reguł dla zbioru częstego X i minimalnej wiarygodności c min należy znaleźć Y X taki, że reguła (X Y ) Y ma wiarygodność conajmniej c min, korzysta się z własności: jeśli AB CD jest wiarygodną regułą, to reguły ABC D oraz ABD C też są wiarygodne, strategia: przerzucać po kolei na prawą stronę implikacji pojedyńcze elementy
Jakie reguły mają wiarygodność 80% Tylko kilka znalezionych reguł spełnia warunek minimalnej wiarygodnosci: A C wiarygodność 100%, C W wiarygodność 83.3%,
Algorytm FP Growth FP Growth Baza danych jest zapamietana w oszczednej strukturze, zwanej FP-drzewo. Częste zbiory są obliczane z tej struktury. Baza danych jest przeskanowana 2 razy: za pierwszym razem liczy się częstość występowania każdego elementu (item), za drugim razem konstruuje się FP drzewo. Algorytm działa w 2 krokach: kompresja - baza danych transakcji jest kompresowana i przekształcana do FP-drzewa, eksploracja FP-drzewa w celu znalezienia zbiorów częstych
Kompresja bazy danych- kolejne kroki znajdowanie wszystkich 1-elementowych zbiorów częstych w bazie danych D, transformacja każdej transakcji T i D do transakcji skompresowanej TR i, polegajaca na usunięciu z T i wszystkich elementów, które nie są częste, posortowanie transakcji- dla kazdej transakcji TR i elementy sa sortowane według malejacych wartości ich wsparcia tworząc listę elementów, posortowane transakcje są transformowane do FP-drzewa
Przykład baza transakcji (wsparcie minimalne 2) id elementy T1 I1, I2, I5 T2 I2, I4 element częstość T3 I2, I3 I1 6 T4 I1, I2, I4 I2 7 T5 I1, I3 I3 6 T6 I2, I3 I4 2 T7 I1, I3 I5 2 T8 I1, I2, I3, I5 T9 I1, I2, I3 po pierwszym skanowaniu całej bazy oblicza się częstość występowania każdego elementu
Przykład cd ponownie skanuje się bazę, odrzuca się elementy o niskim wsparciu sortuje się elementy wg malejącej częstości id T1 T2 T3 T4 T5 T6 T7 T8 T9 elementy I2, I1, I5 I2, I4 I2, I3 I2, I1, I4 I1, I3 I2, I3 I1, I3 I2, I1, I3, I5 I2, I1, I3
Transformacja do FP-drzewa utwórz korzeń drzewa i przypisz mu etykietę null odczytaj bazę danych (po kompresji) i dla transakcji TR 1 utwórz ścieżkę w FP-drzewie, której początkiem jest korzeń drzewa, kolejność występowania elementów w posortowanej transakcji odpowiada kolejnosci wierzchołków w ścieżce reprezentyjacej transakcje, dla każdego wierzchołka należącego do ścieżki wartość licznika transakcji jest, początkowo, równa 1
Transformacja do FP-drzewa,cd dla kolejnej transakcji TR 2 utwórz ścieżkę rozpoczynającą się od korzenia, jeżeli wspólny prefiks transakcji TR 1, TR 2 składa się z elementów l 1,, l k, to ścieżka dla TR 2 nie tworzy nowych wierzchołków drzewa, lecz współdzieli istniejącą w FP-drzewie ścieżkę utworzoną przy transformacji TR 1 ; pozostałe elementy TR 2 tworza nowe wierzchołki - poczatkiem tej ścieżki jest wierzchołek l k, jednocześnie w etykiecie aktualizuje sie (przez dodanie 1) wartość licznika
Przyklad cd FP-drzewo po dołączeniu dwóch pierwszych transakcji: null I2:2 I1:1 I4:1 I5:1
FP-drzewo pełne null I2:7 I1:2 I1:4 I4:1 I3:2 I3:2 I5:1 I3:2 I4:1 I5:1
Transformacja do FP-drzewa pojedyncza ścieżka w FP-drzewie, rozpoczynajaca się w korzeniu drzewa, reprezentuje zbiór transakcji zawierajacych identyczne elementy, licznik transakcji ostatniego wierzchołka danej ścieżki zawiera informacje o liczbie transakcji wspierajacych zbiór elementów reprezentowanych przez wierzchołki grafu należące do ścieżki
Transformacja do FP-drzewa Aby ułatwić przeszukiwanie FP-drzewa algorytm utrzymuje rodzaj katalogu - tablicę nagłówkową, która dla każdego elementu wskazuje na jego lokalizację w FP-drzewie, jeżeli dany element wskazuje wielokrotnie w FP-drzewie, wskaźniki do wierzchołków reprezentujących dany element tworzą listę wskaźników.
Eksploracja FP-drzewa w drugim kroku algorytmu eksploruje się FP-drzewo w celu znalezienia zbiorów częstych, korzysta się z nast. obserwacji: dla każdego 1-elementowego zbioru częstego X, wszystkie częste nadzbiory zbioru X są reprezentowane w FP-drzewie przez ścieżki zawierające wierzchołki X.
Eksploracja FP-drzewa,cd dla każdego 1-elementowego zbioru częstego X znajduje się wszystkie ścieżki z końcowym wierzchołkiem X, pojedyńczą ścieżkę z końcowym wierzchołkiem X nazywamy ścieżką prefiksową wzorca X, ze ścieżką prefiksową wzorca wiąże się licznik częstości ścieżki równy wartości licznika wierzchołka końcowego ścieżki
Eksploracja FP-drzewa,cd zbiór wszystkich ścieżek prefiksowych wzorca tworzy warunkową bazę wzorca, warunkowa baza wzorca służy do konstrukcji warunkowego FP-drzewa wzorca X oznaczanego Tree X, warunkowe drzewo wzorca jest używane w rekurencyjnej procedurze do znalezienia wszystkich zbiorów częstych.
Eksploracja FP-drzewa,cd proces przeszukiwania sprawdza pojedyncze elementy w tablicy nagłówkowej, dla każdego elementu X : skonstruować bazę warunkowych wzorców (ścieżka prefiksowa - to ścieżka prowadząca od korzenia do wierzchołka X ), skonstruować warunkowe FP-drzewo traktuje się bazę warunkowych wzorców dla X jako małą bazę transakcji D(X ) konstruuje sie FP drzewo dla D(X ), jeżeli drzewo posiada tylko jedną ścieżkę, to zatrzymuje się algorytm i wypisuje częste zbiory, w przeciwnym przypadku proces sie powtarza należy wykonać FP-growth(FP-drzewo,null)
Algorytm FP-growth(Tree,α) 1:if Tree zawiera pojedynczą ścieżkę P then 2:for each kombinacja wierzcholków γ w P do 3: generuj wzorzec γ α ze wsparciem wsparcie=minimalne wsparcie wierzcholkow z γ 4:end for 5:else 6:for each a i w tablicy nagłówkowej drzewa Tree do 7: generuj wzorzec β = a i α ze wsparciem wsparcie= wsparcie a i 8:wykonaj wzorzec warunkowy dla β oraz warunkowe FP-drzewo Tree β 9:if Tree β then 10: wywołaj FP-growth(Tree β,β) 11:end if 12:end for 13:end if
Przykład - wsparcie minimalne 2 el warunkowy wzorzec war.fp-drzewo zbiory czeste I5 (I2 I1:1), (I2 I1 I3:1) I2:2, I1:2 I2 I5:2, I1 I5:2, I2 I1 I5:2 I4 (I2 I1:1), (I2:1) I2:2 I2 I4:2 I3 (I2 I1:2), (I2:2), (I1:2) I2:4, I1:2; I1:2 I2 I3:4, I1 I3:4, I2 I1 I3:2 I1 (I2:4) I2:4 I2 I1:4 w pierwszym wierszu w warunkowym drzewie FP nie ma I3, bo wsparcie 2; w drugim wierszu w warunkowym drzewie FP nie ma I1, bo wsparcie 2;
Przykład zastosowania FP-growth poszukujemy zbiorów częstych o wsparciu minimalnym 30% tid t1 t2 t3 t4 t5 produkty coca, orz, wino piwo, orz, piel coca, woda-min coca, orz,piwo piwo, orz, piel produkt częstość orz 4 piwo 3 coca 3 piel 2
FP-drzewo pełne null coca-cola:1 orzeszki:4 piwo:3 coca-cola:1 pieluszki:2 coca-cola:1
zbiory częste el warunkowy wzorzec war.fp-drzewo zbiory częste piel (orz, piwo:2) orz:2, piwo:2 orz, piel:2, piel,piwo:2, orz,piwo,piel:2 coca (orz:1); (orz, piwo:1) orz:2,piwo:1 orz, coca:2 piwo (orz:3) orz:3 orz,piwo:3
Zbiory częste wraz ze wsparciem zbiór częsty wsparcie orzeszki 80% piwo 60% coca-coal 60% pieluszki 40% orzeszki, piwo, pieluszki 40% orzeszki, pieluszki 40% orzeszki, piwo 60% piwo, pieluszki 40% orzeszki, coca-cola 40%
Reguły asocjacyjne - czu uczenie nadzorowane Większość metod zgłębiania danych reprezentuje uczenie nadzorowane, bo jest wyszczególniona zmienna celu, jest dostarczany bogaty zbiór danych, dla którego mogą być odkryte związki między zmienna celu i zmiennymi opisującymi.
Reguły asocjacyjne - czu uczenie nadzorowane Większość metod zgłębiania danych reprezentuje uczenie nadzorowane, bo jest wyszczególniona zmienna celu, jest dostarczany bogaty zbiór danych, dla którego mogą być odkryte związki między zmienna celu i zmiennymi opisującymi. Odkrywanie reguł asocjacyjnych - jakie uczenie? w analizie koszyka, przy odkrywaniu jakie towary są kupowane razem zmienna celu nie jest zidentyfikowana, czyli uczenie nienadzorowane, generowanie reguł może być użyte w klasyfikacji - uczeniu nadzorowanym, np. ankieterzy zbierają dane demograficzne wśród opuszczających punkt wyborczy i reguły asocjacyjne mogą być użyte do generowania do klasyfikacji preferncji wyborczych (poprzednik - dane demograficzne, następnik - preferencje wyborcze)
Zadanie - sporzadzić FP-drzewo dla danych pochodzących ze zbioru weather.arff;wsparcie 6 outlook temperature humidity windy play sunny hot high FALSE no sunny hot high TRUE no overcast hot high FALSE yes rainy mild high FALSE yes rainy cool normal FALSE yes rainy cool normal TRUE no overcast cool normal TRUE yes sunny mild high FALSE no sunny cool normal FALSE yes rainy mild normal FALSE yes sunny mild normal TRUE yes overcast mild high TRUE yes overcast hot normal FALSE yes rainy mild high TRUE no
Zadanie - wskazówka Policzyć częstość występowania pojedynczych elementów typu: play=yes play=no windy=false itd