Asociační pravidla
Asociační pravidla hledání zajímavých asociací i korelací ve velkém množství dat původně pro transakční data obchodní transakce analýza nákupního košíku podpora rozhodování
Analýza nákupního košíku MBA: Market Basket Analysis Analýza prodeje: Které položky jsou v košíku pohromadě? Výsledky: vyjádřené formou pravidel lze bezprostředně použít Použití: Plánování a rozvržení obchodu nabídka kupónu,omezení slev balení produktu
Asociační pravidla Jak spolu jednotlivé produkty navzájem souvisejí? asociační pravidla by měla být snadno pochopitelná je-li nějaký vztah nalezen, lze ho snadno ověřit použitelná obsahují užitečné informace, které mohou vést k dalším intervencím asociační pravidla by neměla být: triviální výsledky už stejně každý zná nevysvětlitelná neexistuje k nim žádné vysvětlení a nevedou k žádné akci
MBA jak se to dělá? Položka produkt nebo nabídka služeb Transakce obsahuje jednu nebo více položek Tabulka četností udává počet výskytu libovolných dvou položek v některé z provedených transakcí (tj. kolikrát byly tyto dva produkty zakoupeny najednou) hodnoty na diagonále odpovídají počtu transakcí obsahujících příslušnou položku
Příklad MBA Nákupní transakce Id Položky 1 pečivo, káva, minerálka 2 pečivo, sýr, minerálka 3 pečivo, sýr, máslo, káva 4 pečivo, máslo, sýr 5 pečivo, máslo, káva 6 pečivo, máslo, mléko 7 pečivo, káva, sušenky 8 káva, minerálka Tabulka četností pečivo minerálsýr máslo káva mléko suš. pečivo 8 2 3 4 3 2 0 minerál 2 4 1 0 3 0 1 sýr 3 1 3 2 1 0 0 máslo 4 0 2 4 2 1 0 káva 3 3 1 2 6 0 2 mléko 2 0 0 1 0 2 0 sušen. 0 1 0 0 2 0 2 9 pečivo, mléko 10 káva, minerálka, sušenky pečivo se kupuje často s máslem, sýrem a kávou káva se kupuje často s minerálkou a pečivem
MBA asociační pravidla Pravidlo IF Podmínka THEN Výsledek. Pravidlo_r IF Položka_i THEN Položka_j. Otázky Jak dobrá jsou nalezená asociační pravidla? podpora spolehlivost zlepšení Jak hledat asociační pravidla automaticky?
Podpora a spolehlivost Podpora jak často lze pravidlo použít Podpora ( Pravidlo_r ) Pocet transakcí obsahující Pocet všech transakcí ch i a j *100 % Spolehlivost jak moc se můžeme na výsledky pravidla spolehnout? Spolehlivo st ( Pravidlo_r ) Pocet transakcí Pocet transakcí obsahující ch i a obsahující ch i j *100 %
Zlepšení pravidla Zlepšení nakolik je lepší pravidlo při predikci použít než výsledek prostě předpokládat Zlepšení ( Pravidlo_r ) p( i _ a _ p( i) * p( j) j) je-li Zlepšení < 1 pravidlo při predikci je horší než náhodná volba negace výsledku může vést k lepšímu pravidlu IF podmínka THEN NOT výsledek
Hlavní kroky MBA zvolit odpovídající položky na adekvátní úrovni vytvořit pravidla na základe údajů z tabulky četností spočítat (podmíněné) pravděpodobnosti výskytu položek a jejich kombinací v transakcích omezit prohledávání prahovou hodnotou pro podporu určit nejlepší pravidla analýzou vypočtených pravděpodobností překonat omezení daná počtem položek a jejich kombinací v zajímavých transakcích
MBA analýza jasné a srozumitelné výsledky IF-THEN pravidla s bezprostředním použitím dobývání znalostí (bez požad. výstupu) důležité při zpracovávání velkého množství dat bez dalších apriorních znalostí zpracování dat s variabilní délkou snadné a srozumitelné výpočty Výpočetní nároky rostou exponenciálně s počtem položek!
Analýza log záznamu server www.einnews.com prezentace studentů MFF (Ševčíková, Zoulek)
Asociační pravidla podobná klasifikačním pravidlům v důsledku pravidla muže být predikce jakéhokoliv atributu (i kombinace predikcí pro více atributu) Příklady: if teplota = chladno then vlhkost = normální if pohlaví = žena then tv_žánr = romantika if pohlaví = muž then tv_žánr = sport if mouka then máslo and vajíčka if kolo then helma if brusle then helma and chrániče klasifikační pravidla implikace znamená společný výskyt, nikoliv příčinu a důsledek!!!
Využití asociačních pravidel analýza nákupního košíku podpora marketingu, inzerování produktu umístění zboží regálech detekce chyb v telekomunikačních sítích analýza bankovních služeb kombinace nabízených produktů analýza služeb mobilních operátorů
Asociační pravidla Velké množství asociačních pravidel X => Y Bereme v úvahu ty, které pokrývají dostatečné množství instancí podpora (support) jsou dostatečně přesné - spolehlivost (confidence) Podpora - podíl těch instancí, které vyhovují pravidlu X Y oproti všem instancím (n) Spolehlivost - podíl těch instancí, které vyhovují pravidlu X Y oproti těm, na které se dá pravidlo aplikovat (X)
Příklad volitelné předměty Studentský výběr předmětů id Kombinace S1 ANK, ESV, LIS S2 ANK, SPJ, DEG S3 ANK, ESV, DEG S4 ANK, LIS S5 ANK, IVT S6 ANK, IVT, MAS S7 ANK, MAS,MPC S8 ANK, MAS, PRA S9 PRA, LIS, NEK S10 ANK, IVT,MPC Možné skupiny položek Skupiny Podpora ANK 90 % IVT 30 % ANK, DEG 20 % ANK, ESV 20 % ANK, MPC 10 % ANK, PRA 10 % ANK, SPJ 20 % ANK, LIS 20 % ANK, MAS 30 % ANK, IVT, MPC 10 % ANK, MAS, MPC 10 %
Triviální algoritmus Je dána množina transakcí, máme najít všechna relevantní pravidla tj. taková, že Hrubá síla: podpora prahová hodnota s p spolehlivost prahová hodnota c p 1. Nakombinujeme všechny dvojice, trojice, položek a zjistíme seznam všech možných pravidel 2. Určíme podporu a spolehlivost pro každé pravidlo 3. Vyloučíme irelevantní pravidla
Triviální algoritmus Transakční tabulka s booleovskými daty A B C D E t1 1 1 0 0 1 t2 0 1 0 1 0 t3 0 1 1 0 0 t4 1 1 0 1 0 t5 1 0 1 0 0 t6 0 1 1 0 0 t7 1 0 1 0 0 t8 1 1 1 0 1 t9 1 1 1 0 0 9 transakcí, 5 druhů zboží [1] B C => A (s=0.22 ; c= 0.5) [2] A B => E (s=0.22 ; c= 0.5) [3] B => E (s = 0.55 ; c = 0.71) [4] C => D (s = 0.67 ; c = 1) Pro prahové hodnoty: s p = 0.2 ; c p = 0.75 jsou zjištěná pravidla 1-3 irelevantní, 4 je relevantní
Možné kombinace pro 5 položek null 5 1 A B C D E 5 2 AB AC AD AE BC BD BE CD CE DE 5 3 ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE 5 4 ABCD ABCE ABDE ACDE BCDE 5 5 ABCDE
Příklad s 5 položkami celkem 2 5 = 32 kombinací celkem 180 pravidel 60000 Počet pravidel R 3 d d k 1 1 j 1 2 d k d 1 1 d k d j k 50000 40000 30000 20000 Výpočetně složité!!! 10000 0 0 2 4 6 8 10
TID Položky 1 Chleba, Mléko 2 Chleba, Plenky, Pivo, Vejce 3 Mléko, Plenky, Pivo, Cola 4 Chleba, Mléko, Plenky, Pivo 5 Chleba, Mléko, Plenky, Cola Pozorování Dolování asociační pravidel Příklady pravidel {Mléko, Plenky} {Pivo} (s=0.4, c=0.67) {Mléko, Pivo} {Mléko} (s=0.4, c=1.0) {Plenky, Pivo} {Mléko} (s=0.4, c=0.67) {Pivo} {Mléko, Plenky} (s=0.4, c=0.67) {Plenky} {Mléko, Pivo} (s=0.4, c=0.5) {Mléko} {Plenky, Pivo} (s=0.4, c=0.5) položky všech uvedených pravidel jsou prvky téže množiny FIS: {Mléko, Plenky, Pivo} pravidla vycházející ze stejné množiny mají stejnou podporu, ale různou spolehlivost lze tedy oddělit požadavky na podporu a spolehlivost 21
Dolování asociačních pravidel vytvoření klasifikačního pravidla pro každý možný důsledek pravidla není efektivní dvoufázový postup: 1. hledání frekventovaných množin položek (frequent itemsets) 2. generování pravidel z frekventovaných množin položek
Frekventované množiny položek Frekventované množiny položek (frequent (large) itemsets) množiny položek, které mají větší podporu než prahová hodnota s p Dolování asociačních pravidel (upřesnění): 1. hledání frekventovaných množin položek 2. generování pravidel z frekventovaných množin položek
Frekventované množiny položek pro každé asociační pravidlo X => Y, musí platit, že X Y je frekventovaná množina položek platí: podmnožina každé frekventované množiny je frekventovaná množina nalézání frekventovaných množin položek jednoduché, časově náročné!!! pro m položek: 2 m-1 kandidátu Příklad: pro m = 30 počet kandidátu je 1073741823
Faktory ovlivňující složitost Stanovení prahové podpory nižší hodnota vede k většímu počtu FIS vyšší počet kandidátů a větší množiny frek. položek Dimenze (počet položek) množiny dat nutnost většího prostoru pro ukládání výsledků delší výpočet a IO operace Velikost databáze Průměrná šířka (velikost) transakce transakční šířka se zvyšuje s vyšší hustotou datových množin to může zvýšit max. délku FIS a průchod hash stromem
Strategie generování FIS Redukce počtu kandidátů (M) úplné vyhledávání: M=2 d redukce M s použitím prořezávacích technik Redukce počtu transakcí (N) redukce velikosti N, pokud narůstá velikost množin položek použití DHP a vertikálně-založených dolovacích algoritmů Redukce počtu porovnání (NM) použití efektivních dat. struktur pro uložení kandidátů či transakcí není nutné porovnávat každého kandidáta vůči každé transakci
Redukce počtu kandidátů Apriori princip je-li množina položek frekventovaná množina položek (FIS), pak i její podmnožiny jsou FIS Apriori princip platí díky následující vlastnosti podpory X, Y : ( X Y ) s( X ) s( Y ) podpora množiny položek nikdy nepřekročí podporu jejích podmnožin tzv. antimonotónní vlastnost podpory
Příklad Apriori principu Jednoprvkové množiny Položka Počet Chleba 4 Cola 2 Mléko 4 Pivo 3 Plenky 4 Vejce 1 Minimální podpora FIS je 3 Dvojice Množina položek Počet Chleba, Mléko 3 Chleba, Pivo 2 Chleba, Plenky 3 Mléko, Pivo 3 Mléko, Plenky 2 Pivo, Plenky 3 Trojice Uvažujeme-li všechny kombinace, C 1 (6) + C 2 (6) + C 3 (6) = 41 Vynecháním 2 položek (redukce), 6 + 4 + 1 = 11 Množina položek Počet Chleba, Mléko, Pivo 2
Apriori algoritmus nechť k=1 generuj množiny frekventovaných položek délky 1 opakuj, dokud už nelze určit žádnou FIS z množin frekventovaných položek obsahující k položek generuj množiny o velikosti (k+1) položek (kandidátní množiny na FIS) prořež kandidátní množiny položek obsahující podmnožiny velikosti k, které nejsou frekventované spočti podporu pro každou kandidátní množinu eliminuj kandidáty, které nepatří k často se vyskytujícím
Problémy Problémy získávání FIS Opakované procházení (prohledávání) transakční databáze Obrovský počet kandidátů Otravný výpočet podpory pro kandidáty Vylepšení Apriori: základní myšlenky Redukovat počet průchodů databází Zmenšit počet kandidátů Ulehčit výpočet podpory pro kandidáty
Kompaktní reprezentace FIS některé množiny položek jsou redundantní, neboť mají stejnou podporu jako jejich nadmnožiny TID A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 Počet FIS Potřeba kompaktní reprezentace 3 10 k 1 10 k
Maximalní FIS Množina položek je maximální množina frekventovaných položek, pokud žádná její přímá nadmnožina není FIS null Maximální množina FIS A B C D E AB AC AD AE BC BD BE CD CE DE ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE Množiny nefrekv. položek ABCD ABCE ABDE ACDE BCDE ABCD E Hranice
Uzavřená množina položek Množina položek je uzavřená, pokud žádná její přímá nadmnožina nemá stejnou podporu TID Položky 1 {A,B} 2 {B,C,D} 3 {A,B,C,D} 4 {A,B,D} 5 {A,B,C,D} MnožinyP Podpora {A} 4 {B} 5 {C} 3 {D} 4 {A,B} 4 {A,C} 2 {A,D} 3 {B,C} 3 {B,D} 4 {C,D} 3 MnožinyP Podpora {A,B,C} 2 {A,B,D} 3 {A,C,D} 2 {B,C,D} 3 {A,B,C,D} 2
Maximální versus uzavřené množiny položek null Transakční Ids TID Položky 1 ABC 2 ABCD 3 BCE 4 ACDE 5 DE 124 123 1234 245 345 A B C D E 12 124 24 4 123 2 3 24 34 45 AB AC AD AE BC BD BE CD CE DE 12 2 24 4 4 2 3 4 ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE 2 4 ABCD ABCE ABDE ACDE BCDE Ne podporováno žádnou transakcí ABCDE
Maximální versus uzavřené FIS Minimální podpora = 2 null Uzavřené, ale ne maximální 124 123 1234 245 345 A B C D E Uzavřené a zároveň maximální 12 124 24 4 123 2 3 24 34 45 AB AC AD AE BC BD BE CD CE DE 12 2 24 4 4 2 3 4 ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE 2 4 ABCD ABCE ABDE ACDE BCDE # Uzavřené = 9 # Maximální = 4 ABCDE
Maximální versus uzavřené FIS Frequent Itemsets Closed Frequent Itemsets Maximal Frequent Itemsets
Alternativní metoda pro generování FIS Reprezentace databáze Horizontal Data Layout TID Items 1 A,B,E 2 B,C,D 3 C,E 4 A,C,D 5 A,B,C,D 6 A,E 7 A,B 8 A,B,C 9 A,C,D 10 B horizontální versus vertikální data layout Vertical Data Layout A B C D E 1 1 2 2 1 4 2 3 4 3 5 5 4 5 6 6 7 8 9 7 8 9 8 10 9
ECLAT Uložení seznamu transakcí pro každou položku Horizontal Data Layout TID Items 1 A,B,E 2 B,C,D 3 C,E 4 A,C,D 5 A,B,C,D 6 A,E 7 A,B 8 A,B,C 9 A,C,D 10 B Vertical Data Layout A B C D E 1 1 2 2 1 4 2 3 4 3 5 5 4 5 6 6 7 8 9 7 8 9 8 10 9
ECLAT Určit podporu pro každou k-množinu položek průnikem seznamů TID dvou (k-1) podmnožin A 1 4 5 6 7 8 9 B 1 2 5 7 8 10 AB 1 5 7 8
FP-growth algoritmus využití zhuštěné reprezentace databáze využitím FP-stromů zkonstruuje se FP-strom a rekurzivně metodou rozděl-panuj se dolují FIS
FP-strom konstrukce Po přečtení TID=1: null TID Items 1 {A,B} 2 {B,C,D} 3 {A,C,D,E} 4 {A,D,E} 5 {A,B,C} 6 {A,B,C,D} 7 {B,C} 8 {A,B,C} 9 {A,B,D} 10 {B,C,E} Po přečtení TID=2: A:1 B:1 B:1 null A:1 B:1 C:1 D:1
FP-Tree konstrukce TID Items 1 {A,B} 2 {B,C,D} 3 {A,C,D,E} 4 {A,D,E} 5 {A,B,C} 6 {A,B,C,D} 7 {B,C} 8 {A,B,C} 9 {A,B,D} 10 {B,C,E} Transakční databáze B:5 A:7 C:1 null D:1 B:3 C:3 Header table Item A B C D E Pointer C:3 D:1 D:1 D:1 E:1 E:1 D:1 E:1
FP-growth D:1 C:3 B:5 A:7 D:1 null C:1 D:1 D:1 B:1 C:1 D:1 Podmíněný základ pro D: P = {(A:1,B:1,C:1), (A:1,B:1), (A:1,C:1), (A:1), (B:1,C:1)} Rekurzivně aplikuj FP-growth na P Nalezeny množiny FIS (podpora > 1): AD, BD, CD, ACD, BCD
Generování pravidel Nechť L je FIS. Najdi všechny neprázdné podmnožiny f L takové, že f => L f splňuje minimální požadavky spolehlivosti je-li {A,B,C,D} množina FIS, kandidátní pravidla jsou: ABC => D, ABD => C, ACD => B, BCD => A, A => BCD, B => ACD, C => ABD, D => ABC AB => CD, AC => BD, AD => BC, BC => AD, BD => AC, CD => AB, Pokud L = k, pak existuje 2 k 2 kandidátních asociačních pravidel (ignorujme L and L)
Generování pravidel Jak efektivně generovat pravidla z množin FIS? obecně, podpora nemusí mít antimonotónní vlastnost c(abc D) může být větší či menší než c(ab D) ale spolehlivost pravidle generovaných z téže množiny položek musí mít antimonotónní vlastnost tj. L = {A,B,C,D}: c(abc => D) c(ab => CD) c(a => BCD)
Generování pravidel Apriori algoritmem Low Confide nce Rule ABCD=>{ } BCD=>A ACD=>B ABD=>C ABC=>D CD=>AB BD=>AC BC=>AD AD=>BC AC=>BD AB=>CD Prořezávání pravidel D=>ABC C=>ABD B=>ACD A=>BCD
Generování pravidel Apriori algoritmem Kandidátní pravidla jsou generována sloučením dvou pravidel, které sdílení stejný prefix v důsledku pravidla spojení (CD=>AB,BD=>AC) vytvoří kandidátní pravidlo D => ABC CD=>AB BD=>AC prořež pravidlo D=>ABC pokud jeho podmnožina AD=>BC nemá vysokou spolehlivost D=>ABC