• Nem Talált Eredményt

Az APRIORI m´odszer

In document 1.1. A tud´asfelt´ar´as folyamata (Pldal 50-53)

4. Gyakori mint´ak kinyer´ese 43

4.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 Heikki Mannila, Hannu Toivonen ´es A. Inkeri Verkamo [99]-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 kiindulva 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 szen-telj¨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 foglal-kozunk 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 4.5 tulajdons´agot haszn´aljuk fel, ami ´ıgy sz´olt: ”Gyakori minta min-den r´eszmint´aja gyakori.”. Az ´all´ıt´ast indirekten n´ezve elmondhatjuk, hogy egy minta biztosan nem

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

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¨olte-ket 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 cikluson 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. A jel¨olt el}o´all´ıt´as f¨uggv´eny az`-elem˝u gyakori mint´akb´ol`+1-elem˝u jel¨olteket ´all´ıt el˝o.

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 jJ` do

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

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

`← `+1;

}

4.2. ´abra. Az APRIORI m´odszer

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, gya-koriak 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. El-lenkez˝o esetben ugyanis rengeteg id˝o menne el az olyan I/O m˝uveletekkel, amelynek sor´an a jel¨olte-ket a h´att´er ´es a mem´oria k¨oz¨ott ide-oda m´asolgatjuk. A fenti pszeudok´od az eredeti APRIORI egy-szer˝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.

4.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 gyakori. 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´ıvjukpotenci ´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 potenci´alis jel¨olte-ket. 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, amelynek van k´et(`−1)-elem˝u gyakori r´eszmint´aja. A minim´alis val´odi fels˝o korl´atot egyilleszt´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´atmagnak (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¨ulineknevezz¨uk. N´ezz¨unk egy p´eld´at. Le-gyenek a mintat´er elemei elemhalmazok. Akkor ´all´ıtsuk el˝o k´et(`−1)-elem˝u gyakori elemhalmaznak 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, ugyan-is 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 fog-ja 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¨ovetkez˝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 gyGY`1 do

for all gy0GY`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;ˆ

}

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

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

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

4.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. HamGY`-hez tal´alunk olyanm0GY`+1 ele-met, amelynek t´amogatotts´aga megegyezikm t´amogatotts´ag´aval, akkorm nem z´art. Ha nincs ilyen tulajdons´ag´um0, akkormz´art.

Az APRIORI-CLOSE menete teljes m´ert´ekben megegyezik az APRIORI algoritmus menet´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˝um minta gyakori, megvizsg´alja az ¨osszes(`− 1)-elem˝u r´eszmint´aj´at m-nek. Amennyiben van olyan r´eszhalmaz, aminek t´amogatotts´aga egyenl˝o m t´amogatotts´ag´aval, akkor ez a r´eszminta nem z´art, ellenkez˝o esetben z´art.

In document 1.1. A tud´asfelt´ar´as folyamata (Pldal 50-53)