• Nem Talált Eredményt

Gyakori algoritmusok

4. Adatbányászat 40

4.2. Gyakori elemhalmazok és asszociációs szabályok feltárása

4.2.3. Gyakori algoritmusok

A vizsgált adathalmazok, melyekb˝ol gyakori elemhalmazokat szeretnénk kinyerni nagyon változatosak. Ezek az adatbázisok különbözhetnek például a vizsgált tranzakciók számossá-gában, a tartalmazott gyakori elemhalmazok számában, abban, hogy a legnagyobb gyakori elemhalmaz hány elemet tartalmaz, illetve mekkorák (hány elem˝uek) a leggyakoribb gya-kori elemhalmazok. Különböz˝oségeket fedezhetünk fel továbbá abban is, hogy a gyagya-kori elemhalmazok ritkák, vagy s˝ur˝uek-e, tehát elemszámuk hogyan viszonyul az összes elemek számához.

Számos olyan algoritmus létezik, amely a gyakori elemhalmazok adatbázisból történ˝o ki-nyerését teszi lehet˝ové. Mivel azonban a vizsgált adathalmazok nagy eltéréseket mutatnak, ezért nem létezik olyan algoritmus, amely minden esetben a leghatékonyabb lenne. Összeha-sonlító vizsgálatok azt mutatják, hogy az Apriori, az ECLAT és az FP-growth algoritmusok rendelkeznek a legjobb mutatókkal ezen a területen. Míg a memóriahasználat terén a klasszi-kus Apriori algoritmus büszkélkedik kiemelked˝o eredményekkel, addig a sebesség terén az ECLAT és az FP-growth algoritmusok emelkednek ki.

AzApriori algoritmusa 4.2.1fejezetben ismertetett Apriori elv alapján dolgozik. Ezen elvet felhasználva az algoritmus a k+1 elem˝u gyakori elemhalmazokat a k elem˝u gyako-ri elemhalmazokból állítja el˝o oly módon, hogy a k elem˝u gyakori elemhalmazokbólk+1 elem˝u gyakori elemhalmaz jelölteket generál, majd minden jelöltre megvizsgálja, hogy gya-korisága nagyobb-e a küszöbszámként meghatározott minimális gyakoriságnál. Amennyiben igen, akkor a vizsgáltk+1 elem˝u elemhalmaz már nem csak jelölt, hanem valóban gyakori elemhalmaz, ellenkez˝o esetben viszont nem az, ezért az algoritmus törli, s ak+2 elemszámú jelöltek generálásakor már nem veszi figyelembe. Jellegét tekintve az Apriori algoritmus egy szélességi keresést hajt végre, melynek során el˝obb el˝oállít mindenkelem˝u gyakori elemhal-mazt, majd csak ezt követ˝oen lép tovább a k+1 elem˝u gyakori elemhalmazok feltárásának irányába. Az algoritmus m˝uködésének kulcskérdése a jelöltek generálása. A jelöltek gene-rálásához az algoritmus egy rendezést hoz létre az elemek listájában, s a tranzakciók elemeit sorba rendezi. Egyk+1 elem˝u jelölt generálása oly módon történik, hogy megkeresi azonk elem˝u rendezett gyakori elemhalmazokat, amelyek az els˝ok−1 elemükben azonosak, s csak az utolsó elemükben térnek el. Ekkor ak+1 elem˝u jelölt két gyakorikelem˝u halmazból úgy áll el˝o, hogy az els˝o k−1 eleme a közös rész lesz, a k.eleme azonkelem˝u gyakori halmaz utolsó eleme lesz, amely az elemek rendezett listájában el˝obbre található, ak+1-dik eleme c Fogarassyné Vathy Ágnes, Starkné Werner Ágnes c www.tankonyvtar.hu

46 4. FEJEZET. ADATBÁNYÁSZAT

pedig a másikkelem˝u gyakori halmaz utolsó eleme lesz.

Példaként tekintsük aT ={{cdab},{ac},{eda},{cbd},{ad}}kiindulási tranzakcióhal-mazt. A minimális gyakorisági küszöb legyen 30%. Az elemek rendezése történjen lexiko-grafikus rendezés alapján, tehát a következ˝o sorrend adódik: {{abcd},{ac},{ade},{bcd}, {ad}}. Az algoritmus m˝uködését a4.1ábrán követhetjük nyomon.

4.1. ábra. Példa az Apriori algoritmusra

Az Apriori algoritmus m˝uködésének gyengesége, hogy a jelöltek gyakoriságának

ellen-˝orzésekor mindig végigolvassa az eredeti adatbázist. Ezen probléma megoldására született meg azAprioriTID algoritmus, amely az eredeti adatbázisból folyamatosan törli azon tranz-akciókat és ritka elemhalmazokat, amelyek a kés˝obbiek során már biztos nem járulnak hozzá az újabb gyakori elemhalmazok generálásához.

Az ECLAT (Equivalence CLAss Transformation) algoritmus az Apriori algoritmus szé-lességi keresésével szemben egy mélységi keresést hajt végre. Az ECLAT a jelöltek gya-koriságának ellen˝orzése révén nyújt kimagasló eredményt, mivel a hagyományos vízszintes adattárolást átalakítja függ˝oleges adattárolásra. De mit is jelent ez pontosan? Az adatbázisok a tranzakciókat leggyakrabban horizontális módon tárolják, azaz egy tranzakció azonosítóhoz rendelik hozzá a tranzakció által tartalmazott elemeket. A vertikális adattárolás ezzel ellen-tétben az egyes elemekhez rendeli azon tranzakciók azonosítóját, melyben az adott elemek el˝ofordulnak. Ezeket a tranzakciók azonosítóiból álló listákat nevezzük TID listáknak, vagy TID halmazoknak. A 4.2 ábra egy példán keresztül szemlélteti a horizontális és vertikális adattárolás közti különbséget (az „e” elem TID listáját az ECLAT algoritmus m˝uködéséb˝ol fakadóan nem tüntettük fel).

Az ECLAT által alkalmazott vertikális adatszerkezet nagy mértékben hozzájárul az elem-halmazok gyakoriságának kiszámításához. Egy elemhalmaz gyakorisága a TID elem-halmazok által oly módon számítható ki, hogy vesszük az elemhalmaz két részhalmazát, melyre igaz,

4.2. GYAKORI ELEMHALMAZOK ÉS ASSZOCIÁCIÓS SZABÁLYOK FELTÁRÁSA47

(a) Horizontális szerkezet (b) Vertikális szerkezet

4.2. ábra. Horizontális és vertikális adattárolás

hogy uniójuk a vizsgált elemhalmazt adja, s ezen részhalmazok TID halmazainak metszeté-nek számossága adja a vizsgált elemhalmaz el˝ofordulásainak számát. A el˝ofordulások szá-mának ismeretében a gyakoriság egy osztást követ˝oen könnyen meghatározható.

A 4.2 ábra példáját követve az ECLAT algoritmus els˝o lépésben kiszámolja az egyes elemek gyakoriságát az eredeti adatbázisból, majd a gyakori elemekhez létrehozza a TID halmazukat. Ha a példában feltételezzük, hogy a minimálisan elvárt el˝ofordulások száma 2, akkor az „e” elem nem gyakori, ezért a neki megfelel˝o TID lista már létre sem jön. Ezt követ˝oen az algoritmus veszi az els˝o elemet, vagyis az „a” elemet, s legenerálja hozzá a lehetséges 2 elemszámú gyakori halmaz jelölteket: {ab},{ac},{ad}. Ezen halmazokra a megfelel˝o TID részhalmazok (pl. {a}és {b}) metszeteként meghatározza az el˝ofordulások számát, amely rendre a következ˝o lesz:{ab}: 1,{ac}: 2,{ad}: 3. Mivel az{ab}nem teljesíti a minimális el˝ofordulások számára meghatározott feltételt, ezért ˝o nem gyakori, a másik kett˝o elemhalmaz viszont igen. Ezen két elemhalmazból kiindulva az algoritmus legenerálja az {acd}jelöltet, melynek el˝ofordulása analóg módon 1-nek adódik, tehát szintén nem gyakori.

Ezáltal az algoritmus ennek a mélységi ágnak a végére ért, s folytatja m˝uködését a „b” elem vizsgálatával (de az „a” elemmel már nem veszi az unióját).

Összességében láthatjuk, hogy az ECLAT a jelöltállítás során nem vizsgálja, hogy a je-lölt összes részhalmaza gyakori-e, s éppen ebb˝ol adódóan legalább annyi jeje-löltet állít, mint az Apriori algoritmus. A jelöltek gyakoriságának meghatározása a TID listáknak köszönhe-t˝oen viszont sokkal gyorsabb az Apriori algoritmusnál, s ez az algoritmus futási idejében is megmutatkozik.

AzFP-growth algoritmusa gyakori elemhalmazok feltárását egy speciális adatszerkeze-ten, az FP-fán (Frequent Pattern Tree) hajtja végre. Az FP-fa a tranzakciókat tárolja rendkívül tömör formában a következ˝o módon. Els˝o lépésben az algoritmus megkeresi a gyakori ele-meket, majd ezeket az el˝ofordulásuk szerint csökken˝o sorrendbe rendezi. Az algoritmus a tranzakciók elemeit szintén csökken˝o gyakoriság szerint sorba rendezi, s törli bel˝olük a ritka elemeket. Ezt követ˝oen veszi a leggyakoribb elemet, majd azon tranzakciók alapján, amelyek tartalmazzák ezt az elemet létrehoz egy faszerkezetet. Ezt oly módon teszi meg, hogy a fa gyökere (null) alá felveszi a leggyakoribb elemet, majd az els˝o tranzakció alapján növeszti a fát úgy, hogy csökken˝o gyakorisági sorrendben egymás alá felveszi az elemeket. Minden csúcs egy elemnek feleltethet˝o meg, ˝oket ágak kötik össze. A csúcsok rendelkeznek egy c Fogarassyné Vathy Ágnes, Starkné Werner Ágnes c www.tankonyvtar.hu

48 4. FEJEZET. ADATBÁNYÁSZAT

számlálóval is, ami az els˝o tranzakció feldolgozása után mindegyiknél 1-es értéket tartalmaz.

Ezután a következ˝o sz˝urt tranzakció alapján folytatódik a fa növesztése, amikor is szintén a gyökért˝ol indul ki, s ha a fa már tartalmazza az adott tranzakció egy részét (pontosabban az elejét, prefixét), akkor ennek a résznek nem növeszt új ágat, hanem megnöveli az érintett csú-csok számlálóját. Ha a tranzakció egy része nem létezik még a fában, akkor ahhoz a részhez az algoritmus a fában a megfelel˝o prefix után új ágat növeszt. Ez az eljárás rekurzív módon folytatódik az összes gyakori elem és a hozzájuk tartozó sz˝urt tranzakciók bejárásával. Az eredményképpen létrejött FP-fa a horizontális tárolás egy tömör formája. Mindemellett az algoritmus a vertikális tárolást is kódolja oly módon, hogy minden gyakori elemhez tárolja a gyakoriságát és egy láncolt listában hivatkozik azon tranzakciókra az FP-fában, amelyek az adott elemet tartalmazzák. Az FP-growth algoritmus ezen tömör és rendkívül hatékony táro-lási formát használja a gyakori elemhalmazok kinyeréséhez. Az algoritmus pontos leírása a [17] irodalomban található meg.

4.3. ábra. Példa az FP-growth által alkalmazott FP-fára és a láncolt listára

A4.3ábra azT ={{cdab},{ac},{eda},{cbd},{ad}}tranzakcióhalmazhoz tartozó FP-fát és a gyakori elemek láncolt listáját szemlélteti. A példában feltételezett minimális gyako-risági küszöb 30%. Láthatjuk, hogy mivel az „e” elem nem gyakori, ezért azt az algoritmus az FP-fa építésénél nem használja fel. Az ábrán látható szaggatott nyilak az elemekhez tartozó tranzakciók láncolt listáját szemléltetik.