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 j ∈ J` 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 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;ˆ
}
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 GYk−1,GYk−2, . . . ,GY0 elemeit. Ham∈GY`-hez tal´alunk olyanm0∈GY`+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.