• Nem Talált Eredményt

4. Gyakori elemhalmazok 53

5.4. Az APRIORI m´odszer

Az eredeti APRIORI algoritmust gyakori elemhalmazok kinyer´es´ere haszn´alt´ak, ´es mint az AIS algoritmus [5] tov´abbfejlesztett v´altozata adt´ak k¨ozre. Rakesh Agrawal ´es Ramakrishnan Srikant [7] publik´alt´ak 1993-ban, de t˝ol¨uk f¨uggetlen¨ul, szinte ugyanezt az algoritmust javasolta

1A sz´eless´egi bej´ar´ast megval´os´ıt´o algoritmusokat szintenk´ent halad´o (levelwise) algoritmusoknak is h´ıvj´ak.

Heikki Mannila, Hannu Toivonen ´es A. Inkeri Verkamo [114]-ben. Az 5 szerz˝o v´eg¨ul egyes´ıtette a k´et ´ır´ast [6]. Kis m´odos´ıt´assal az algoritmust gyakori sorozatok kinyer´es´ere is (APRIORIALL, GSP algoritmusok), s˝ot, alapelv´et b´armely t´ıpus´u gyakori minta (epiz´od, fa stb.) keres´es´en´el is alkalmazhatjuk.

Az algoritmus rendk´ıv¨ul egyszer˝u, m´egis gyors ´es kicsi a mem´oriaig´enye. Tal´an emiatt a mai napig ez az algoritmus a legelterjedtebb ´es legismertebb gyakori mintakinyer˝o algoritmus.

Az APRIORI sz´eless´egi bej´ar´ast val´os´ıt meg. Ez azt jelenti, hogy a legkisebb mint´ab´ol kiin-dulva szintenk´ent halad el˝ore a nagyobb m´eret˝u gyakori mint´ak meghat´aroz´as´ahoz. A k¨ovetkez˝o szinten (iter´aci´oban) az eggyel nagyobb m´eret˝u mint´akkal foglalkozik.

Az algoritmusban k¨ozponti szerepet t¨oltenek be az ´un. jel¨oltek. Jel¨oltnek h´ıvjuk egy adott iter´aci´oban azt a mint´at, amelynek t´amogatotts´ag´at meghat´arozzuk, azaz, aminek figyelm¨unket szentelj¨uk. Hamis jel¨olteknek h´ıvjuk azokat a jel¨olteket, amelyekr˝ol ki fog der¨ulni, hogy ritka mint´ak, elhanyagolt mint´ak pedig azok a gyakori mint´ak, amelyeket nem v´alasztunk jel¨oltnek (nem foglalkozunk vel¨uk,). Nyilv´anval´o, hogy csak azokr´ol a mint´akr´ol tudjuk eld¨onteni, hogy gyakoriak-e, amelyeknek meghat´arozzuk a t´amogatotts´ag´at, teh´at amelyek jel¨oltek valamikor.

Ez´ert elv´arjuk az algoritmust´ol, hogy minden gyakori mint´at felvegyen jel¨oltnek. A teljess´eg felt´etele, hogy ne legyen elhanyagolt minta, a hat´ekonys´ag pedig ann´al jobb, min´el kevesebb a hamis jel¨olt.

A jel¨oltek defini´al´as´an´al a 5.5 tulajdons´agot haszn´aljuk fel, ami ´ıgy sz´olt :

”Gyakori minta minden r´eszmint´aja gyakori.”. Az ´all´ıt´ast indirekten n´ezve elmondhatjuk, hogy egy minta bizto-san nem gyakori, ha van ritka r´eszmint´aja ! Ennek alapj´an ne legyen jel¨olt az a minta, amelynek van ritka r´eszmint´aja. Az APRIORI algoritmus ez´ert ´ep´ıtkezik lentr˝ol. Egy adott iter´aci´oban pontosan tudjuk, hogy a r´eszmint´ak gyakoriak vagy sem ! Az algoritmus onnan kapta a nev´et, hogy az `-elem˝u jel¨olteket a bemeneti adat `-edik ´atolvas´as´anak megkezd´ese el˝ott (a priori)

´all´ıtja el˝o.

Az algoritmus pszeudok´odja a k¨ovetkez˝o ´abr´an l´athat´o. Kezdeti ´ert´ekek be´all´ıt´asa ut´an bel´ep¨unk egy ciklusba. A ciklus akkor ´er v´eget, ha az `-elem˝u jel¨oltek halmaza ¨ures. A cik-luson bel¨ul el˝osz¨or a t´amogatotts´ag meghat´aroz´as elj´ar´ast h´ıvjuk meg, amely a jel¨oltek t´amogatotts´ag´at hat´arozza meg. Ha ismerj¨uk a jel¨oltek t´amogatotts´ag´at, akkor ki tudjuk v´alasztani bel˝ol¨uk a gyakoriakat. Ajel¨olt el}o´all´ıt´asf¨uggv´eny az`-elem˝u gyakori mint´akb´ol

`+ 1-elem˝u jel¨olteket ´all´ıt el˝o.

Az APRIORI elvet adapt´al´o algoritmusok mind a fenti l´ep´eseket k¨ovetik. Term´eszetesen a k¨ul¨onb¨oz˝o t´ıpus´u mint´akn´al k¨ul¨onb¨oz˝o m´odon kell elv´egezni a t´amogatotts´ag-meghat´aroz´as, gyakoriak kiv´alogat´asa, jel¨oltek el˝o´all´ıt´asa l´ep´eseket.

Az algoritmus hat´ekonys´ag´anak egyik alapfelt´etele, hogy a jel¨oltek elf´erjenek a mem´ori´aban.

Ellenkez˝o esetben ugyanis rengeteg id˝o menne el az olyan I/O m˝uveletekkel, amelynek sor´an a jel¨olteket a h´att´er ´es a mem´oria k¨oz¨ott ide-oda m´asolgatjuk. A fenti pszeudok´od az eredeti APRIORI egyszer˝us´ıtett v´altozat´at ´ırja le. Val´oj´aban ugyanis addig ´all´ıtjuk el˝o az `-elem˝u jel¨olteket, am´ıg azok elf´ernek a mem´ori´aban. Ha elfogy a mem´oria, akkor ` n¨ovel´ese n´elk¨ul folytatjuk az algoritmust, majd a k¨ovetkez˝o iter´aci´oban ott folytatjuk a jel¨oltek el˝o´all´ıt´as´at, ahol abbahagytuk.

5.4.1. Jel¨ oltek el˝ o´ all´ıt´ asa

Az `-elem˝u jel¨oltek el˝o´all´ıt´as´anak egyszer˝u m´odja az, hogy vessz¨uk az ¨osszes `-elem˝u mint´at, ´es azokat v´alasztjuk jel¨oltnek, amelyekre teljes¨ul, hogy minden r´eszmint´ajuk

gyako-Bemenet: B : bemeneti adat,

min supp : t´amogatotts´agi k¨usz¨ob, Kimenet: GY : gyakori mint´ak,

´Atmeneti v´altoz´ok: J` : Az `-elem}u jel¨oltek,

`← 0;

J`← az ¨ures minta;

while{ |J`| 6= 0 } {

t´amogatotts´ag_meghat´aroz´as( B, J` );

for all j ∈ J` do

if( supp(j)≥ min supp ) then GY`← j;

J`+1← jel¨olt_el}o´all´ıt´as( GY` );

`← `+ 1;

}

5.2. ´abra. Az APRIORI m´odszer

ri. Sz¨uks´egtelen az ¨osszes r´eszmint´at ellen˝orizni, ugyanis a t´amogatotts´ag anti-monotonit´as´ab´ol k¨ovetkezik az, hogy ha az ¨osszes (`−1)-elem˝u r´eszminta gyakori, akkor az ¨osszes val´odi r´eszminta is gyakori.

Ez a m´odszer azonban nem t´ul hat´ekony, vagy ´ugy is megfogalmazhatn´ank, hogy t´ul sok felesleges munk´at v´egez, t´ul sok olyan mint´at vizsg´al meg, amelyek biztosan nem gyakoriak.

H´ıvjuk potenci´alis jel¨olteknek azon mint´akat, amelyeket el˝o´all´ıtunk, majd ellen˝orizz¨uk, hogy r´eszmint´aik gyakoriak-e. Ha egy potenci´alis minta ´atesik a teszten, akkor jel¨olt´e v´alik.

Tudjuk, hogy ha egy minta jel¨olt lesz, akkor minden (`−1)-elem˝u r´eszmint´aja gyakori, teh´at c´elszer˝u az (`−1)-elem˝u gyakori mint´akb´ol kiindulni. Egy egyszer˝u megold´as lenne, ha sorra venn´enk az (`−1)-elem˝u gyakori mint´ak minim´alis val´odi fels˝o korl´atait, mint po-tenci´alis jel¨olteket. M´eg jobb megold´as, ha a (`−1)-elem˝u gyakori mintap´aroknak vessz¨uk a minim´alis val´odi fels˝o korl´atait. Ekkor ugyanis csak olyan potenci´alis jel¨oltet ´all´ıtunk el˝o, amely-nek van k´et (`−1)-elem˝u gyakori r´eszmint´aja. A minim´alis val´odi fels˝o korl´atot egy illeszt´esi m˝uvelettel fogjuk el˝o´all´ıtani. A k´et gyakori mint´at a potenci´alis jel¨olt gener´atorainak h´ıvjuk.

Az illeszt´esi m˝uveletet a ⊗-el fogunk jel¨olni. Akkor illeszt¨unk k´et mint´at, ha van (`−2)-elem˝u k¨oz¨os r´eszmint´ajuk. Ezt a r´eszmint´at magnak (core) fogjuk h´ıvni.

Ha az el˝o´all´ıt´as m´odja olyan, hogy nem ´all´ıthatjuk el˝o ugyanazt a potenci´alis jel¨oltet k´et k¨ul¨onb¨oz˝o m´odon, akkor ezt jel¨olt-el˝o´all´ıt´astism´etl´es n´elk¨ulinek nevezz¨uk. N´ezz¨unk egy p´eld´at.

Legyenek a mintat´er elemei elemhalmazok. Akkor ´all´ıtsuk el˝o k´et (`−1)-elem˝u gyakori elemhal-maznak a minim´alis val´odi korl´atj´at, ha metszet¨uk (`−2)-elem˝u. A minim´alis val´odi korl´atok halmaza csak egy elemet fog tartalmazni, a k´et halmaz uni´oj´at. Ez a jel¨olt-el˝o´all´ıt´as nem ism´etl´es n´elk¨uli, ugyanis p´eld´aul az ({A, B},{A, C}) p´arnak ugyanaz a legkisebb fels˝o korl´atja, mint az ({A, B},{B, C}) p´arnak.

Az ism´etl´es n´elk¨uli jel¨olt-el˝o´all´ıt´ast mindig a minta elemein ´ertelmezett teljes rendez´es fogja garant´alni, ami a ⊆ rendez´es egy line´aris kiterjeszt´ese lesz. A teljes rendez´esnek megfelel˝oen

v´egigmegy¨unk az (`−1)-elem˝u gyakori mint´akon ´es megn´ezz¨uk, hogy mely sorban ut´ana k¨ovet-kez˝o (`−1)-elem˝u gyakori mint´aval illeszthet˝o, illetve az illeszt´esk´ent kapott potenci´alis jel¨olt minden (`−1)-elem˝u r´eszmint´aja gyakori-e. Sok esetben a ism´etl´es n´elk¨ulis´egnek el´egs´eges felt´etele az lesz, hogy a k´et gyakori minta (`−2)-elem˝u prefixeik megegyezzenek. A minta t´ıpus´anak ismeret´eben a teljess´eget (minden minim´alis val´odi fels˝o korl´atbeli elemet el˝o´all´ıtunk)

´es az ism´etl´es n´elk¨ulis´eget k¨onny˝u lesz bizony´ıtani.

Bemenet: GY`1 : (`−1)-elem}u gyakori mint´ak Kimenet: J` : Az `-elem}u jel¨oltek,

´Atmeneti v´altoz´ok: Jˆ : potenci´alis jel¨oltek halmaza for all gy ∈ GY`−1 do

for all gy0 ∈ GY`−1, gy gy0 do if( gy ´es gy0 illeszthet}o)

{ Jˆ = minim´alis_val´odi_fels}o_korl´at(gy, gy0);

for all ˆj ∈ Jˆ

if( minden_r´eszhalmaz_gyakori(ˆj , GY`1) ) J` ← ˆj;

}

5.3. ´abra. Jel¨oltek el˝o´all´ıt´asa

5.4.2. Z´ art mint´ ak kinyer´ ese, az APRIORI-CLOSE algoritmus

A z´art mint´ak jelent˝os´eg´et az 5.2.1 r´eszben m´ar t´argyaltuk. Itt most k´et feladat megold´as´aval foglalkozunk. Megn´ezz¨uk, hogy az ¨osszes gyakori mint´ab´ol hogyan tudjuk el˝o´all´ıtani a z´artakat, illetve bemutatjuk az APRIORI-CLOSE [130–132] algoritmust, amely m´ar eleve csak a z´art mint´akat hat´arozza meg. Mindk´et m´odszerhez az al´abbi ´eszrev´etelt haszn´aljuk fel :

5.17. ´eszrev´etel. Ha az m minta nem z´art, akkor van olyan m-et tartalmaz´o eggyel nagyobb m´eret˝u minta, amelynek t´amogatotts´aga megegyezik m t´amogatotts´ag´aval.

Tegy¨uk fel, hogy a legnagyobb m´eret˝u gyakori minta m´erete k. A GYk elemei z´artak. Egy egyszer˝u algoritmus menete a k¨ovetkez˝o:

N´ezz¨uk sorban GYk1, GYk2, . . . , GY0 elemeit. Ha m∈GY`-hez tal´alunk olyan m0 ∈GY`+1

elemet, amelynek t´amogatotts´aga megegyezik m t´amogatotts´ag´aval, akkor m nem z´art. Ha nincs ilyen tulajdons´ag´u m0, akkor m z´art.

Az APRIORI-CLOSE menete teljes m´ert´ekben megegyezik az APRIORI algoritmus me-net´evel. Az egyetlen k¨ul¨onbs´eg, hogy az `-elem˝u gyakori mint´ak meghat´aroz´asa ut´an t¨orli az (`−1)-elem˝u nem z´artakat. Miut´an eld¨ont¨otte, hogy az `-elem˝u m minta gyakori, meg-vizsg´alja az ¨osszes (`−1)-elem˝u r´eszmint´aj´atm-nek. Amennyiben van olyan r´eszhalmaz, aminek t´amogatotts´aga egyenl˝omt´amogatotts´ag´aval, akkor ez a r´eszminta nem z´art, ellenkez˝o esetben z´art.