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