• Nem Talált Eredményt

Az APRIORI módszer

In document Bodon Ferenc (Pldal 43-46)

4. Gyakori minták kinyerése 33

4.4. Az APRIORI módszer

Az eredeti APRIORI algoritmust gyakori elemhalmazok kinyerésére használták, és mint az AIS algoritmus [3] továbbfejlesztett változata adták közre. Rakesh Agrawal és Ramakrishnan Srikant [5]

publikálták 1993-ban, de t ˝olük függetlenül, szinte ugyanezt az algoritmust javasolta Heikki Mannila, Hannu Toivonen és A. Inkeri Verkamo [70]-ben. Az 5 szerz ˝o végül egyesítette a két írást [4]. Kis módosítással az algoritmust gyakori sorozatok kinyerésére is (APRIORIALL, GSP algoritmusok), s˝ot, alapelvét bármely típusú gyakori minta (epizód, fa stb.) keresésénél is alkalmazhatjuk.

Az algoritmus rendkívül egyszer˝u, mégis gyors és kicsi a memóriaigénye. Talán emiatt a mai napig ez az algoritmus a legelterjedtebb és legismertebb gyakori mintakinyer ˝o algoritmus.

Az APRIORI szélességi bejárást valósít meg. Ez azt jelenti, hogy a legkisebb mintából kiindulva szintenként halad el ˝ore a nagyobb méret˝u gyakori minták meghatározásához. A következ ˝o szinten (iterációban) az eggyel nagyobb méret˝u mintákkal foglalkozik.

Az algoritmusban központi szerepet töltenek be az ún. jelöltek. Jelöltnek hívjuk egy adott iteráci-óban azt a mintát, amelynek támogatottságát meghatározzuk, azaz, aminek figyelmünket szenteljük.

Hamis jelölteknek hívjuk azokat a jelölteket, amelyekr ˝ol ki fog derülni, hogy ritka minták, elhanya-golt minták pedig azok a gyakori minták, amelyeket nem választunk jelöltnek (nem foglalkozunk ve-lük,). Nyilvánvaló, hogy csak azokról a mintákról tudjuk eldönteni, hogy gyakoriak-e, amelyeknek meghatározzuk a támogatottságát, tehát amelyek jelöltek valamikor. Ezért elvárjuk az algoritmustól, hogy minden gyakori mintát felvegyen jelöltnek. A teljesség feltétele, hogy ne legyen elhanyagolt minta, a hatékonyság pedig annál jobb, minél kevesebb a hamis jelölt.

A jelöltek definiálásánál a 4.5 tulajdonságot használjuk fel, ami így szólt : „Gyakori minta min-den részmintája gyakori.”. Az állítást indirekten nézve elmondhatjuk, hogy egy minta biztosan nem

1A szélességi bejárást megvalósító algoritmusokat szintenként haladó (levelwise) algoritmusoknak is hívják.

gyakori, ha van ritka részmintája ! Ennek alapján ne legyen jelölt az a minta, amelynek van ritka rész-mintája. Az APRIORI algoritmus ezért építkezik lentr ˝ol. Egy adott iterációban pontosan tudjuk, hogy a részminták gyakoriak vagy sem ! Az algoritmus onnan kapta a nevét, hogy az`-elem˝u jelölteket az bemeneti adat`-edik átolvasásának megkezdése el ˝ott (a priori) állítja el ˝o.

Az algoritmus pszeudokódja a következ ˝o ábrán látható. Kezdeti értékek beállítása után belépünk egy ciklusba. A ciklus akkor ér véget, ha az`-elem˝u jelöltek halmaza üres. A cikluson belül el ˝oször a 0 . $*! 3*0* +# .* *+0)$03

eljárást hívjuk meg, amely a jelöltek támogatottságát határozza meg. Ha ismerjük a jelöltek támogatottságát, akkor ki tudjuk választani bel ˝olük a gyakoriakat. A

$;6; +#+;0$;;+03

függvény az`-elem˝u gyakori mintákból`+1-elem˝u jelölteket állít el ˝o.

+ .!/8

Az APRIORI elvet adaptáló algoritmusok mind a fenti lépéseket követik. Természetesen a kü-lönböz˝o típusú mintáknál különböz ˝o módon kell elvégezni a támogatottság-meghatározás, gyakoriak kiválogatása, jelöltek el ˝oállítása lépéseket.

Az algoritmus hatékonyságának egyik alapfeltétele, hogy a jelöltek elférjenek a memóriában. El-lenkez˝o esetben ugyanis rengeteg id ˝o menne el az olyan I/O m˝uveletekkel, amelynek során a jelölteket a háttér és a memória között ide-oda másolgatjuk. A fenti pszeudokód az eredeti APRIORI egyszer˝u-sített változatát írja le. Valójában ugyanis addig állítjuk el ˝o az`-elem˝u jelölteket, amíg azok elférnek a memóriában. Ha elfogy a memória, akkor`növelése nélkül folytatjuk az algoritmust, majd a követ-kez˝o iterációban ott folytatjuk a jelöltek el ˝oállítását, ahol abbahagytuk.

4.4.1. Jelöltek el ˝ oállítása

Az`-elem˝u jelöltek el ˝oállításának egyszer˝u módja az, hogy vesszük az összes`-elem˝u mintát, és azokat választjuk jelöltnek, amelyekre teljesül, hogy minden részmintájuk gyakori. Szükségtelen az összes részmintát ellen ˝orizni, ugyanis a támogatottság anti-monotonitásából következik az, hogy ha az összes(`−1)-elem˝u részminta gyakori, akkor az összes valódi részminta is gyakori.

Ez a módszer azonban nem túl hatékony, vagy úgy is megfogalmazhatnánk, hogy túl sok felesleges munkát végez, túl sok olyan mintát vizsgál meg, amelyek biztosan nem gyakoriak. Hívjuk potenciális jelölteknek azon mintákat, amelyeket el ˝oállítunk, majd ellen ˝orizzük, hogy részmintáik gyakoriak-e.

Ha egy potenciális minta átesik a teszten, akkor jelölté válik.

Tudjuk, hogy ha egy minta jelölt lesz, akkor minden(`−1)-elem˝u részmintája gyakori, tehát cél-szer˝u az(`−1)-elem˝u gyakori mintákból kiindulni. Egy egyszer˝u megoldás lenne, ha sorra vennénk az (`−1)-elem˝u gyakori minták minimális valódi fels ˝o korlátait, mint potenciális jelölteket. Még jobb megoldás, ha a(`−1)-elem˝u gyakori mintapároknak vesszük a minimális valódi fels ˝o korlátait.

Ekkor ugyanis csak olyan potenciális jelöltet állítunk el ˝o, amelynek van két (`−1)-elem˝u gyakori részmintája. A minimális valódi fels ˝o korlátot egy illesztési m˝uvelettel fogjuk el ˝oállítani. A két gya-kori mintát a potenciális jelölt generátorainak hívjuk. Az illesztési m˝uveletet a ⊗-el fogunk jelölni.

Akkor illesztünk két mintát, ha van(`−2)-elem˝u közös részmintájuk. Ezt a részmintát magnak (core) fogjuk hívni.

Ha az el˝oállítás módja olyan, hogy nem állíthatjuk el ˝o ugyanazt a potenciális jelöltet két külön-böz˝o módon, akkor ezt jelölt-el ˝oállítást ismétlés nélkülinek nevezzük. Nézzünk egy példát. Legyenek a mintatér elemei elemhalmazok. Akkor állítsuk el ˝o két(`−1)-elem˝u gyakori elemhalmaznak a mi-nimális valódi korlátját, ha metszetük (`−2)-elem˝u. A minimális valódi korlátok halmaza csak egy elemet fog tartalmazni, a két halmaz unióját. Ez a jelölt-el ˝oállítás nem ismétlés nélküli, ugyanis pél-dául az({A,B},{A,C})párnak ugyanaz a legkisebb fels ˝o korlátja, mint az({A,B},{B,C})párnak.

Az ismétlés nélküli jelölt-el ˝oállítást mindig a minta elemein értelmezett teljes rendezés fogja garantálni, ami a ⊆ rendezés egy lineáris kiterjesztése lesz. A teljes rendezésnek megfelel ˝oen vé-gigmegyünk az (`−1)-elem˝u gyakori mintákon és megnézzük, hogy mely sorban utána következ ˝o (`−1)-elem˝u gyakori mintával illeszthet ˝o, illetve az illesztésként kapott potenciális jelölt minden (`−1)-elem˝u részmintája gyakori-e. Sok esetben a ismétlés nélküliségnek elégséges feltétele az lesz, hogy a két gyakori minta(`−2)-elem˝u prefixeik megegyezzenek. A minta típusának ismeretében a teljességet (minden minimális valódi fels ˝o korlátbeli elemet el ˝oállítunk) és az ismétlés nélküliséget könny˝u lesz bizonyítani.

4.4.2. Zárt minták kinyerése, az APRIORI-CLOSE algoritmus

A zárt minták jelent ˝oségét a 4.2.1 részben már tárgyaltuk. Itt most két feladat megoldásával fog-lalkozunk. Megnézzük, hogy az összes gyakori mintából hogyan tudjuk el ˝oállítani a zártakat, illetve bemutatjuk az APRIORI-CLOSE [79–81] algoritmust, amely már eleve csak a zárt mintákat határoz-za meg. Mindkét módszerhez az alábbi észrevételt használjuk fel :

4.17. észrevétel. Ha az m minta nem zárt, akkor van olyan m-et tartalmazó eggyel nagyobb méret˝u minta, amelynek támogatottsága megegyezik m támogatottságával.

Tegyük fel, hogy a legnagyobb méret˝u gyakori minta mérete k. A GYk elemei zártak. Egy egyszer˝u algoritmus menete a következ ˝o :

Nézzük sorban GYk1,GYk2, . . . ,GY0 elemeit. Ha mGY`-hez találunk olyan m0GY`+1 ele-met, amelynek támogatottsága megegyezik m támogatottságával, akkor m nem zárt. Ha nincs ilyen tulajdonságú m0, akkor m zárt.

Az APRIORI-CLOSE menete teljes mértékben megegyezik az APRIORI algoritmus menetével.

Az egyetlen különbség, hogy az`-elem˝u gyakori minták meghatározása után törli az (`−1)-elem˝u nem zártakat. Miután eldöntötte, hogy az `-elem˝u m minta gyakori, megvizsgálja az összes (`− 1)-elem˝u részmintáját m-nek. Amennyiben van olyan részhalmaz, aminek támogatottsága egyenl ˝o m támogatottságával, akkor ez a részminta nem zárt, ellenkez ˝o esetben zárt.

In document Bodon Ferenc (Pldal 43-46)