Gyakori elemhalmazok és asszociációs szabályok Nagyméretű adathalmazok kezelése Ilsinszki Balázs! 2014. 03. 10.
Anyag felosztása 1. Gyakori elemhalmazok 2. Asszociációs szabályok
Anyag felosztása 1. Gyakori elemhalmazok 2. Asszociációs szabályok Pelenka valószínűleg Sör
Probléma Melyik termékeket veszi együtt sok vásárló? Közös polcra Kedvezmény Árúkapcsolás...
Probléma Melyik termékeket veszi együtt sok vásárló? Közös polcra Kedvezmény Árúkapcsolás... Van jobb ötlet?
Probléma Melyik termékeket veszi együtt sok vásárló? Haszon Pelenka valószínűleg Sör Akció: vásárlói elégedettség Pszt!
Anyag felosztása 1. Gyakori elemhalmazok 2. Asszociációs szabályok
Anyag felosztása 1. Gyakori elemhalmazok 1.1 Fogalmak 1.2 Előkészítés és adatok tárolása 1.3 A probléma matematikai oldala 1.4 Egyszerű algoritmus 1.5 GYEK algoritmusok 1.6 APRIORI algoritmus 1.7 További GYEK algoritmusok
Anyag felosztása 1. Gyakori elemhalmazok 1.1 Fogalmak 1.2 Előkészítés és adatok tárolása
1.1 Fogalmak Termék Vásárlás Vizsgált vásárlások I = {i1,i2,...,im} tranzakció: tj I bemeneti sorozat:
J I elemhalmaz fedése: azon tranzakciók sorozatával, aminek részhalmaza a J. támogatottsága: a fedés elemszáma. supp(j) gyakori: támogatottsága nem kisebb egy előre megadott támogatottsági küszöbnél. min_supp gyakoriság és gyakorisági küszöb: supp(j) / T
Anyag felosztása 1. Gyakori elemhalmazok 1.1 Fogalmak 1.2 Előkészítés és adatok tárolása 1.3 A probléma matematikai oldala
1.2 Előkészítés Tranzakció elemeket lexikografikusan lehet rendezni, azaz lehet rendezést definiálni az elemek I halmazán. E l e m e k h e z c í m k e r e n d e z é s e : A, B, C hozzárendelése egy-egy elemhez. Vásárlások: T := <{ABD},{CE},{AFG},{BDCE}>
Tárolás Bemeneti sorozat tárolása: Horizontális adatbázis Vertikális adatbázis: Előnyös Relációs adatbázis
Anyag felosztása 1. Gyakori elemhalmazok 1.2 Előkészítés és adatok tárolása 1.3 A probléma matematikai oldala 1.4 Egyszerű algoritmus
Irányított gráf: 1. 3 Keresési tér Csúcsok: elemhalmazok, például: I1, I2, I3, I4. Élek: I1 I2, I1 + 1 = I2 A, B A I1 A, B, C I7 B, C I4 A, C I5 C B I2 I6 I3
1.3 Keresési tér mérete Elemek száma: 10^5-10^6 Tranzakciók száma:10^9-10^10 Szerencsére: Gyakori elemhalmazok mérete kicsi tj << I
Simplicity is the ultimate sophistication. Leonardo da Vinci
Anyag felosztása 1. Gyakori elemhalmazok 1.3 A probléma matematikai oldala 1.4 Egyszerű algoritmus 1.5 GYEK algoritmusok
1.4 Egyszerű algoritmus Minden tranzakciót egyszer olvasunk be. Minden tranzakció minden részhalmazához számlálót hozunk létre vagy létező számláló esetén növeljük az értéket. Eredmény: Optimális IO művelet szempontjából. Számlálók száma 2^ tj miatt nagy memóriaigény.
Anyag felosztása 1. Gyakori elemhalmazok 1.4 Egyszerű algoritmus 1.5 GYEK algoritmusok 1.6 APRIORI algoritmus
1.5 GYEK algoritmusok Gyakori elemhalmazokat kinyerő algoritmus! Két elvárás: Teljes: ha minden gyakori elemhalmazt megtalál. Helyes: ha csak a gyakori elemhalmazokat találja meg.
1.5 GYEK működése Három lépés ismételgetése: Jelöltek állítása: ismétlés nélkül! Támogatottság meghatározása Gyakoriak kiválasztása
Anyag felosztása 1. Gyakori elemhalmazok 1.5 GYEK algoritmusok 1.6 APRIORI algoritmus 1.7 További GYEK algoritmusok
1.6 APRIORI algoritmus Jellemzői: Egyik legkorábbi GYEK algoritmus. Szélességi bejárást valósít meg a keresési térben. Minden iterációban az adott szint elemeivel foglalkozik. A halmaz elemszáma minden iterációban eggyel nő.
1.6 APRIORI működése Jelölések: l szintszám Jl: az l-elemű jelöltek halmaza Gyl: az l-elemű gyakori elemhalmazok Bodon Ferenc, Buza Krisztián: Adatbányászat
1.6 APRIORI működése Jelölések: l szintszám Jl: az l-elemű jelöltek halmaza Gyl: az l-elemű gyakori elemhalmazok Bodon Ferenc, Buza Krisztián: Adatbányászat
1.6.1 Jelöltek előállítása l-elemű gyakori elemhalmazok ismertek. Olyan párokat keresünk J1, J2, amire teljesül: J1 lexikografikusan megelőzi J2-t. J1-ből és J2-ből a legnagyobb elemet törölve ugyanazt a halmazt kapjuk. Új jelölt := J1 U J2. Az új jelölt l+1 elemű lesz. Az új jelölt generátorai J1 és J2.
1.6.1 Jelöltek előállítása 2. Jelölt előállítás kulcsa: Gyakori elemhalmaz minden részhalmaza gyakori! Ezért tudunk szintenként építkezni. A jelölt előállítása ismétlés nélküli.
1.6.1 Jelölt előállítás példa GY3 = {ABC, ABD, ACD, ACE, BCD} ACD, ACE pár generálja ACDE-t jelöltnek?
Jelölt előállítás példa GY3 = {ABC, ABD, ACD, ACE, BCD} ACD, ACE pár: ACD lexikografikusan megelőzi ACE-t. ACD/D = ACE/E ACDE halmaz NEM jelölt, mert nem minden részhalmaza gyakori: ACD, ACE, ADE, CDE.
1.6.1 Jelölt előállítás példa 2. GY3 = {ABC, ABD, ACD, ACE, BCD} ABC, ABD pár: ABC lexikografikusan megelőzi ABD-t. ABC/C = ABD/D Tehát: ABC és ABD generálja ABCD-t. ABCD halmaz jelölt, mert minden részhalmaza gyakori: ABC, ABD, ACD, BCD.
1.6.1 Jelölt előállítás észrevétel Tehát: ABC és ABD generálja ABCD-t. ABCD halmaz jelölt, mert minden részhalmaza gyakori: ABC, ABD, ACD, BCD. Kérdések: A B C D m i é r t j e l ö l t m i é r t n e m g y a k o r i elemhalmaz? Az algoritmus miért három lépést ismételget?
1.6.1 Jelölt előállítás észrevétel 2. Tehát: ABC és ABD generálja ABCD-t. ABCD halmaz jelölt, mert minden részhalmaza gyakori: ABC, ABD, ACD, BCD. Válasz: ABCD nem feltétlenül gyakori: ABC min_supp tranzakcióban szerepel, ahogy ABD, ACD, BCD is. ABCD támogatottsága 0.
1.6 APRIORI működése Jelölések: l szintszám Jl: az l-elemű jelöltek halmaza Gyl: az l-elemű gyakori elemhalmazok Bodon Ferenc, Buza Krisztián: Adatbányászat
1.6 APRIORI működése Jelölések: l szintszám Jl: az l-elemű jelöltek halmaza Gyl: az l-elemű gyakori elemhalmazok Bodon Ferenc, Buza Krisztián: Adatbányászat
Szófa segítségével: 1.6.2 Támogatottság meghatározása É l e k e n e l e m e k c í m k é i találhatók. Csúcsok élei rendezve vannak. Működése: A szófa bizonyos részeit rekurzívan járjuk be. L e v é l e l e m e k n e k v a n számlálója. Bodon Ferenc, Buza Krisztián: Adatbányászat
1.6 APRIORI működése Jelölések: l szintszám Jl: az l-elemű jelöltek halmaza Gyl: az l-elemű gyakori elemhalmazok Bodon Ferenc, Buza Krisztián: Adatbányászat
1.6.3 Gyakoriak kiválasztása Szófában töröljük azokat a leveleket, amiknek a támogatottsága kisebb mint min_supp. Bodon Ferenc, Buza Krisztián: Adatbányászat! Az egész algoritmus során elég egy szófát karban tartani!
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 0: kezdő lépés min_supp = 3
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO min_supp = 3 l szintszám 0: jelölt állítás A Y Mivel l=0, ezért a jelölt állítás során 1-elemű jelölteket kaptunk.
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO min_supp = 3 l szintszám 1: támogatottság meghatározása A 1 2 1 4 1 5 3 2 3 1 3 Y A tranzakciókat egyesével megvizsgálva növeljük a szófa leveleinek számlálóját.
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO min_supp = 3 l szintszám 1: gyakoriak kiválasztása A 1 2 1 4 1 5 3 2 3 1 3 Y Szófában töröljük azokat a leveleket, amiknek a támogatottsága kisebb mint min_supp.
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO min_supp = 3 l szintszám 1: gyakoriak kiválasztása A 1 2 1 4 1 5 3 2 3 1 3 Y
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO min_supp = 3 l szintszám 1: gyakoriak kiválasztása Y E K M O 4 5 3 3 3 GY1={E, K, M, O, Y}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 1: jelölt állítás E K M O Y min_supp = 3 K M O Y M O Y O Y Y Mivel l=1, ezért a jelölt állítás során 2-elemű jelölteket kaptunk. A szófában a gyökérből induló Y élre nincs szükség.
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 1: jelölt állítás E K M O min_supp = 3 K M O Y M O Y O Y Y
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: támogatottság meghatározása E K M O min_supp = 3 K M O Y M O Y O Y Y 4 2 3 2 3 3 3 1 2 2
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: gyakoriak kiválasztása E K M O min_supp = 3 K M O Y M O Y O Y Y 4 2 3 2 3 3 3 1 2 2
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: gyakoriak kiválasztása E K M O min_supp = 3 K O M O Y 4 3 3 3 3 A szófában az gyökérből induló M, O élekre nincs szükség.
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: gyakoriak kiválasztása E K min_supp = 3 K O M O Y 4 3 3 3 3
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 EK és EO generálja EKO-t? K O M O Y 4 3 3 3 3 GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 K O M O Y GY2={EK, EO, KM, KO, KY} 4 3 3 3 3
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 Lehetséges jelöltek K M O O O Y Y GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 EKO jelölt: K M O EK, EO, KO O O Y Y GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 KMO NEM jelölt: K M O KM, KO, MO O O Y Y GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 KMO NEM jelölt: K M O KM, KO, MO O Y Y GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 KMY NEM jelölt: K M O KM, KY, MY O Y Y GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E K min_supp = 3 KOY NEM jelölt: K O KO, KY, OY O Y GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 2: jelölt állítás E min_supp = 3 KOY NEM jelölt: K KO, KY, OY O GY2={EK, EO, KM, KO, KY}
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 3: támogatottság meghatározása E min_supp = 3 K O 3
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 3: gyakoriak kiválasztása E min_supp = 3 K O GY3={EKO} 3
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO l szintszám 3: jelölt állítás E min_supp = 3 K O Nincsenek halmazpárok, akik új jelöltet tudnának generálni: ciklus vége! 3
1.6.4. Példa szófával T1 EKMNOY T2 DEKNOY T3 T4 T5 AEKM CKMUY CEIKOO min_supp = 3 Eredmény A ciklus futása során ezekkel a gyakori elemhalmazokkal találkoztunk: GY1={E, K, M, O, Y} GY2={EK, EO, KM, KO, KY} GY3={EKO}
1.6 APRIORI memóriaigény A cél a szófa csúcsszámának minimalizálása.! Té t e l : A m i n i m á l i s s z ó f a probléma NP-nehéz. Bodon Ferenc, Buza Krisztián: Adatbányászat
1.6 APRIORI trükkök Gyorsítási lehetőségek: Tranzakciók első végigolvasása után a ritka elemek törlése. l. iterációban az l-nél kisebb elemszámú tranzakciók törlése. Tranzakció törlése ha már nincs benne jelölt. Tranzakcióban a nem jelölt elemek törlése.
Anyag felosztása 1. Gyakori elemhalmazok 1.6 APRIORI algoritmus 1.7 További GYEK algoritmusok
1.7 Más GYEK algoritmusok Eclat és FP-Growth: Mélységi keresést hajtanak végre. Rekurzív Gyorsabbak, de nagyobb memóriaigény.
Anyag felosztása 1. Gyakori elemhalmazok 1.1 Fogalmak 1.2 Előkészítés és adatok tárolása 1.3 A probléma matematikai oldala 1.4 Egyszerű algoritmus 1.5 GYEK algoritmusok 1.6 APRIORI algoritmus 1.7 További GYEK algoritmusok
Anyag felosztása 1. Gyakori elemhalmazok 2. Asszociációs szabályok
Anyag felosztása 2. Asszociációs szabályok 2.1 Fogalmak 2.2 Szabályok előállítása 2.3 Probléma 2.4 Probléma forrása 2.5 Hierarchikus asszociációs szabályok 2.6 Asszociációs szabályok használata
Anyag felosztása 2. Asszociációs szabályok 2.1 Fogalmak 2.2 Szabályok előállítása
2.1 Asszociációs szabályok Asszociációs szabály: I elemehalmaz és T bementi sorozat. R egy c bizonyosságú és s támogatottságú asszociációs szabály, ahol I1 és I2 diszjunkt halmazok: Érvényes asszociációs szabály: min_supp támogatottság felett min_conf bizonyosság felett
Anyag felosztása 2. Asszociációs szabályok 2.1 Fogalmak 2.2 Szabályok előállítása 2.3 Probléma
2.2 Szabályok előállítása Lépések: 1. lépés: Gyakori elemhalmazok meghatározása (APRIORI algoritmus) s min_supp 2. lépés: Igy elemhalmazt bontsuk fel I1 és I2 diszjunk halmazokra: Igy = I1 U I2, majd a bizonyosság ellenőrzése. Ha c min_conf, akkor érvényes asszociációs szabályt kaptunk. Hány bontás van?
2.2 Szabályok előállítása Elemhalmaz bontása: I gyakori elemhalmaz bontása során I1 kiválasztva, ahol I1 I kiválasztva. I1 -> I/I1 nem érvényes. Kell-e vizsgálni I1' -> I/I1', ahol I1' I1 szabályt? Például: I gyakori halmazra = { alma, banán, kolbász } alma, banán c < min_conf kolbász banán c'? min_conf alma, kolbász I1 I/I1 I1' I/I1'
2.2 Anti-monoton tulajdonság I1 -> I/I1 nem érvényes. Kell-e vizsgálni I1' I1 szabályt? A támogatottság anti-monoton tulajdonsága miatt nem. I1' I1 a támogatottságok viszonya: supp(i1') supp(i1) alma, banán c < min_conf kolbász banán c'? min_conf alma, kolbász I1 I/I1 I1' I/I1'
2.2 Anti-monoton tulajdonság I1 -> I/I1 nem érvényes. Kell-e vizsgálni I1' I1 szabályt? A támogatottság anti-monoton tulajdonsága miatt nem. I1' I1 a támogatottságok viszonya: supp(i1') supp(i1) Példa: I1 := {alma, banán}. Összesen öten vették ezt a kombinációt. I1' := {banán}. Öten vettek {alma, banán} kombinációt és lehet, hogy van olyan, aki vett banánt, de nem vett almát.
2.2 Anti-monoton tulajdonság I1 -> I/I1 nem érvényes. Kell-e vizsgálni I1' I1 szabályt? A támogatottság anti-monoton tulajdonsága miatt nem. I1' I1 a támogatottságok viszonya: supp(i1') supp(i1) c bizonyosság:
Anyag felosztása 2. Asszociációs szabályok 2.2 Szabályok előállítása 2.3 Probléma 2.4 Probléma forrása
2.3 Levezetési szabály Levezetési szabály, érvényes szabály I1 -> I2: Minden I1 -> I2' is érvényes, ahol I2' I2. Minden I1 i -> I2'\{i} is érvényes.! Melyik szabályokat használjuk?
2.3 Problémák Sok az érdektelen szabály. Asszociációs szabályok száma túl nagy. Asszociációs szabályok félrevezetőek lehetnek.
2.3 Problémák Sok az érdektelen szabály. Pontosabban a levezetési szabályok létezése miatt vannak szabályok, amiknek érdektelen speciális esetei vannak.
2.3 Problémák Asszociációs szabályok száma túl nagy. A küszöbértékek emelésével kevesebb lesz a szabály, de ekkor érdekes szabályokat is elveszíthetünk.
2.3 Problémák Asszociációs szabályok félrevezetőek lehetnek. Büfé példa: 100 ember HAmburgert, 100 ember HOt dogot és 100 ember HA és HO-ot vesz. Minden HA vételhez vesznek MAjoznézt is. Más nem vesz MA-t. HO -> MA egy érvényes asszociációs szabály. Nem szabad csökkenteni a HO árát!
Anyag felosztása 2. Asszociációs szabályok 2.3 Probléma 2.4 Probléma forrása 2.5 Hierarchikus asszociációs szabályok
2.4 Szabályok függetlensége A bizonyosság a feltétele valószínűséget próbálja meg vizsgálni. Ha I1 és I2 elemhalmazok függetlenek, akkor a bizonyosság nem hordoz hasznos információt. c bizonyosság: Függetlenségi mutatók bevezetése.
2.4 Szabályok függetlensége X és Y események függetlenek egymástól, ha P(X, Y) = P(X) P(Y) A lift függetlenségi mutató ezt igyekszik megragadni.
2.4 Szabályok függetlensége További függetlenségi mutatók: Empirikus kovariancia Binomiális próba Fisher-féle egzakt próba
2.4 Szabályok rangsora Három paraméter, amit egyszerre kell figyelembe venni: Támogatottság Bizonyosság Függetlenség Hogyan rangsoroljuk az érdekes és érvényes szabályokat?
Anyag felosztása 2. Asszociációs szabályok 2.4 Probléma forrása 2.5 Hierarchikus asszociációs szabályok 2.6 Asszociációs szabályok használata
2.5 Hierarchikus asszociációs szabályok Kategóriákat figyelembe vevő asszociációs szabályok. A hierarchiát a termék-taxonómia rögzíti. Hierarchikus asszociációs szabály: I2 egyetlen eleme sem őse I1 valamely elemének
2.5 Hierarchikus asszociációs szabályok Módosítások: Gyakori elemhalmazok meghatározásánál a tranzakciókat ki kell egészíteni az elemek őseivel is. A tranzakciók első vizsgálatakor csak a taxonómia gyökérelemeivel foglalkozunk. Eredmény: A szabályok száma tovább nő!
Anyag felosztása 2. Asszociációs szabályok 2.5 Hierarchikus asszociációs szabályok 2.6 Asszociációs szabályok használata
2.6 Korreláció vs ok-okozati kapcsolat A és B között korreláció van. Ez azért lehet, mert: A okozza B-t. B okozza A-t. C okozza A-t és B-t. A és B egymást erősítik. Véletlenek különös együttállása.
2.6 Korreláció vs ok-okozati kapcsolat 1. példa: Cipőben alvás fejfájással való ébredést okoz.
Korreláció vs ok-okozati kapcsolat 1. példa: Cipőben alvás fejfájással való ébredést okoz. Alkohol
2.6 Korreláció vs ok-okozati kapcsolat 1. példa: Cipőben alvás fejfájással való ébredést okoz. 2. példa: A magassarkú cipő skizofréniát okoz. 3. példa: Azok a gyereket rövidlátók lesznek, akik égő lámpa mellett alszanak. [Nature, 1993]
2.6 Korreláció vs ok-okozati kapcsolat 1. példa: Cipőben alvás fejfájással való ébredést okoz. 2. példa: A magassarkú cipő skizofréniát okoz. 3. példa: Azok a gyereket rövidlátók lesznek, akik égő lámpa mellett alszanak. [Nature, 1993] Valóság másként működhet: Ha elfogy a tok akkor nem lehet egy helyen megvenni a három terméktípust. fényképezőgép -> memóriakártya fényképezőgép -> tok
Köszönöm a figyelmet! Bodon Ferenc, Buza Krisztián: Adatbányászat