Wykład z algorytmem FP-Growth
Transkrypt
Wykład z algorytmem FP-Growth
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 A C D T W autor Arbib Coffman Dijkstra Turski Węglarz Ti 10 20 30 40 50 60 Reguły: A −→ C AC −→ T T −→ ACW zakupy A A A A C C C C C C T D T D D D T T W W W W W Reguły asocjacyjne Podstawowe oznaczenia Pozycje (ang. items) opisują dostępne towary. Zbiorem towarów jest: I = {i1 , i2 , · · · , im } Baza transakcji jest zbiorem par postaci (ti , Ti ), gdzie ti jest numerem transakcji, Ti - zbiór zakupionych towarów, Ti ⊂ 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 A −→ B, A ⊂ I , B ⊂ I wraz z dwiema miarami: 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 Ti 10 20 30 40 50 60 autor Arbib Coffman Dijkstra Turski Węglarz Reguła A −→ C C −→ W AC −→ T T −→ ACW wsparcie 4 5 3 3 wiaryg. 100% 83.3% 75% 75% zakupy A A A A C C C C C C T D T D D D T T W W W W W Sformułowanie problemu Problem Dane: zbiór pozycji I , zbiór transakcji D = {(ti , Ti ) : i = 1, . . . , n, Ti ⊂ I } dwie stałe: minimalna wartość wsparcia smin , minimalny stopien wiarygodności cmin Zadanie: znaleźć reguły asocjacyjne o wsparciu ≥ smin oraz wiarygodności ≥ cmin 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 ≥ smin podział: dla każdego częstego zbioru, znajdź podziały tego zbioru na dwa podzbiory, aby otrzymać reguły o wiarygodności ≥ cmin Przykład Ti 10 20 30 40 50 60 zakupy A A A A C C C C C C T D T D D D T T W W W W W przykładowa reguły dla AC : A −→ C wiarygodność 100% C −→ A wiarygodność 66, 6% wsparcie 100% (6) 83, 3% (5) 66.6% (4) 50% (3) częste podzbiory C W, CW A, D, T, AC, AW, CD, CT, ACW 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 C1 := I , F1 := rodzina 1-elem. zbiorów częstych, 2 k:=2, 3 while Fk−1 6= ∅ and Fk−1 6= Fk−2 do 4 Ck :=AprioriGen(Fk−1 ); 5 Fk := {X ∈ Ck : s(X ) ≥ smin }; 6 k:=k+1; 7 end while 8 wynik:=F1 ∪ F2 · · · ∪ Fk Przykład wsparcie minimalne : 3 wiarygodność 80% Ti 10 20 30 40 50 60 zakupy A A A A C C C C C C T D T D D D T T W W W W W F1 C2 F2 C3 F3 C4 częste podzbiory A, C, D, T, W AC, AD,... AC, AT, AW, CD, CT, CW, DW, TW ACT, ACW, ATW, CDW CDT, CTW, DTW ACT, ACW, ATW, CDW CTW ACTW· · · Funkcja AprioriGen Algorytm posiada dwa główne kroki: łączenie - do Ck wstawiamy sumy takich par X , Y ∈ Fk−1 , które mają wspólne k − 2 początkowych elementów. Na przykład dla Fk−1 = {AB, AC , AD, AE , BC , BD, BE } mamy Ck = {ABC , ABD, ABE , ACD, ACE , ADE , BCD, BCE , BDE } obcinanie (ang. pruning): usuwamy z Ck te podzbiory, których nie wszystkie podzbiory k − 1 elementowe są w Fk−1 , np. usuwamy ACD, bo CD 6∈ Fk−1 , mamy Fk = {ABC , ABD, ABE } Generowanie reguł dla zbioru częstego X i minimalnej wiarygodności cmin należy znaleźć Y ⊂ X taki, że reguła (X − Y ) −→ Y ma wiarygodność conajmniej cmin , 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 Ti ∈ D do transakcji skompresowanej TRi , polegajaca na usunięciu z Ti wszystkich elementów, które nie są częste, posortowanie transakcji- dla kazdej transakcji TRi 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 element częstość T2 I2, I4 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 TR1 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 TR2 utwórz ścieżkę rozpoczynającą się od korzenia, jeżeli wspólny prefiks transakcji TR1 , TR2 składa się z elementów l1 , · · · , lk , to ścieżka dla TR2 nie tworzy nowych wierzchołków drzewa, lecz współdzieli istniejącą w FP-drzewie ścieżkę utworzoną przy transformacji TR1 ; pozostałe elementy TR2 tworza nowe wierzchołki - poczatkiem tej ścieżki jest wierzchołek lk , 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 I5:1 I4:1 FP-drzewo pełne null I2:7 I1:2 I1:4 I4:1 I3:2 I5:1 I3:2 I4:1 I5:1 I3:2 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 ai w tablicy nagłówkowej drzewa Tree do 7: generuj wzorzec β = ai ∪ α ze wsparciem wsparcie= wsparcie ai 8:wykonaj wzorzec warunkowy dla β oraz warunkowe FP-drzewo Treeβ 9:if Treeβ 6= ∅ 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 produkty produkt częstość t1 coca, orz, wino orz 4 t2 piwo, orz, piel piwo 3 t3 coca, woda-min coca 3 t4 coca, orz,piwo piel 2 t5 piwo, orz, piel FP-drzewo pełne null orzeszki:4 coca-cola:1 coca-cola:1 piwo:3 pieluszki:2 coca-cola:1 zbiory częste el piel warunkowy wzorzec (orz, piwo:2) war.FP-drzewo orz:2, piwo:2 coca piwo (orz:1); (orz, piwo:1) (orz:3) orz:2,piwo:1 orz:3 zbiory częste orz, piel:2, piel,piwo:2, orz,piwo,piel:2 orz, coca:2 orz,piwo:3 Zbiory częste wraz ze wsparciem zbiór częsty orzeszki piwo coca-coal pieluszki orzeszki, piwo, pieluszki orzeszki, pieluszki orzeszki, piwo piwo, pieluszki orzeszki, coca-cola wsparcie 80% 60% 60% 40% 40% 40% 60% 40% 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 sunny sunny overcast rainy rainy rainy overcast sunny sunny rainy sunny overcast overcast rainy temperature hot hot hot mild cool cool cool mild cool mild mild mild hot mild humidity high high high high normal normal normal high normal normal normal high normal high windy FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE play no no yes yes yes no yes no yes yes yes yes yes no Zadanie - wskazówka Policzyć częstość występowania pojedynczych elementów typu: play=yes play=no windy=false itd