• Nem Talált Eredményt

Az FP-growth algoritmus

In document Magyar nyelv˝ u irodalom (Pldal 87-91)

4. Gyakori elemhalmazok 61

4.4. Az FP-growth algoritmus

Az FP-growth algoritmus2[72] egy m´elys´egi jelleg˝u, rekurz´ıv algoritmus, a keres´esi t´er bej´ar´asa tekintet´eben megegyezik az Eclat-tal. A t´amogatotts´agok meghat´aroz´as´at az egye-lem˝u gyakori halmazok meghat´aroz´as´aval, majd a bemenet sz˝ur´es´evel ´es vet´ıt´es´evel val´os´ıtja meg rekurz´ıv m´odon. A bemenet sz˝ur´ese azt jelenti, hogy az egyes tranzakci´okb´ol t¨or¨olj¨uk a benn¨uk el˝ofordul´o ritka elemeket. AT elemhalmaz P elemhalmazra vet´ıt´es´et (jel¨ol´esbenT |P) pedig ´ugy kapjuk, hogy vessz¨uk a P-t tartalmaz´o tranzakci´okat, majd t¨or¨olj¨uk bel˝ol¨uk a P -t. P´eld´aul hACD, BCE, ABCE, BE, ABCEi|B=hCE, ACE, E, ACEi. Az algoritmus pszeu-dok´odja a k¨ovetkez˝okben olvashat´o.

Algorithm 5FP-growth

Require: T : tranzakci´ok sorozata, min supp: t´amogatotts´agi k¨usz¨ob, FP-growth-seg´ed(T, min supp,∅)

A seg´edelj´ar´as harmadik param´etere (P) egy prefix elemhalmaz, az els˝o param´eter pedig az eredeti bemenet P-re vet´ıt´ese. Az eredeti bemenet ∅-ra vet´ıt´ese megegyezik ¨onmag´aval.

Egy rekurzi´os l´ep´es h´arom f˝o l´ep´esb˝ol ´all. El˝osz¨or meghat´arozzuk azon elemek t´amogatotts´ag´at, amelyek el˝ofordulnak valamelyik tranzakci´oban. Ezekb˝ol kiv´alasztjuk a gya-koriakat. Ezut´an minden gygyakori elemet egyes´evel vesz¨unk. Meghat´arozzuk agy-hez tartoz´o vet´ıtett bemenetet, majd megh´ıvjuk az algoritmust rekurz´ıvan a T |gy bemenetre. T¨or¨oln¨unk kell a gy elemet a T-beli tranzakci´ok elemei k¨oz¨ul annak ´erdek´eben, hogy egy jel¨oltet csak egyszer ´all´ıtsunk el˝o.

A jel¨oltek el˝o´all´ıt´as´anak tekintet´eben az FP-growth algoritmus a legegyszer˝ubb. Ha az I elemhalmaz gyakori, akkor a k¨ovetkez˝o rekurzi´os szinten azonI∪j halmazok lesznek a jel¨oltek, ahol j az I-re vet´ıtett bemenetben el˝ofordul´o elem ´es I∪j nem volt jel¨olt kor´abban. Tu-lajdonk´eppen az FP-growth a nagy elemsz´am´u jel¨oltek t´amogatotts´ag´anak meghat´aroz´as´at visszavezeti h´arom egyszer˝u m˝uveletre : egyelem˝u gyakori elemhalmazok kiv´alogat´asa, sz˝ur´es ´es vet´ıtett bemenet el˝o´all´ıt´asa.

2Az FP a Frequent Pattern r¨ovid´ıt´ese, ami miatt az algoritmust mintan¨ovel˝o algoritmusnak is h´ıvj´ak. Ez az elnevez´es azonban f´elrevezet˝o, ugyanis szinte az ¨osszes GYEK algoritmus mintan¨ovel˝o abban az ´ertelemben, hogy egy ´uj jel¨olt a gener´atorainak egyelem˝u b˝ov´ıt´ese, vagy m´as sz´oval n¨ovel´ese. Az FP-growth saj´ats´aga nem a jel¨oltek el˝all´ıt´asa, hanem a jel¨oltek t´amogatotts´ag-meghat´aroz´as´anak m´odja.

Algorithm 6FP-growth-seg´ed Require: T : vet´ıtett bemenet,

min supp: t´amogatotts´agi k¨usz¨ob, P: prefix elemhalmaz,

for all t∈ T do for all i∈t do

J1 ← {i}

i.sz´aml´al´o ←i.sz´aml´al´o + 1 end for

end for

for all j∈J1 do

if j.sz´aml´al´o ≥min supp then GY1←GY1∪{j}

end if end for

T← sz˝ur´es(T, GY1) for all gy∈GY1 do

T|gy← vet´ıt´es(T, gy)

GY ←GY ∪{P∪{gy}}FP-growth(T|gy,min supp, P∪{gy}) T← t¨orl´es(T, gy)

end for returnGY

A sz˝ur´es ut´an egyes´evel vessz¨uk a gyakori elemeket. Ezt valamilyen rendez´es szerint kell tenn¨unk ´es ez a rendez´es hat´arozza meg, hogy milyen sorban j´arjuk be a keres´esi teret, milyen vet´ıtett bemeneteket ´all´ıtunk el˝o ´es mely elemhalmazok lesznek a hamis jel¨oltek. AzEclat-n´al elmondottak itt is ´elnek ; v´arhat´oan abban az esetben lesz a hamis jel¨oltek sz´ama minim´alis, amennyiben a prefixben a legritk´abb elemek vannak, azaz a 9. sorban gyakoris´ag szerint n¨ovekv˝o sorban vessz¨uk az elemeket.

Az FP-growth algoritmus szerves r´esze az FP-fa, amelyben a sz˝urt bemenetet t´aroljuk.

Az FP-fa seg´ıts´eg´evel k¨onnyen el˝o´all´ıthatjuk a vet´ıtett bemeneteket, azokban k¨onnyen meg-hat´arozhatjuk az elemek t´amogatotts´ag´at, amib˝ol el˝o´all´ıthatjuk a vet´ıtett, majd sz˝urt bemene-tet. Ezt a vet´ıtett ´es sz˝urt bemenetet szint´en egy FP-f´aban t´aroljuk, amelyet vet´ıtett FP-f´anak h´ıvunk.

Az FP-fa egy kereszt´elekkel ´es egy fejl´ec t´abl´aval kib˝ov´ıtett sz´ofa. Az ´elek c´ımk´ei gyakori elemek. Az egyszer˝ubb le´ır´as kedv´e´ert egy (nemgy¨ok´er) cs´ucs c´ımk´ej´en a cs´ucsba mutat´o ´el c´ımk´ej´et ´ertj¨uk. Minden cs´ucs egy elemhalmazt reprezent´al, amelynek elemei a gy¨ok´erb˝ol a cs´ucsig vezet˝o ´ut cs´ucsainak c´ımk´eivel egyeznek meg. Minden cs´ucshoz egy sz´aml´al´ot rendel¨unk.

Ez a sz´aml´al´o adja meg, hogy a cs´ucs ´altal reprezent´alt halmaz mennyi bemeneti (vagy vet´ıtett) elemhalmaznak a prefixe. Az azonos c´ımk´ej˝u cs´ucsok l´ancolt listaszer˝uen ¨ossze vannak k¨otve keresztir´any´u ´elekkel. A l´anc legels˝o elem´ere mutat a fejl´ect´abl´anak az adott elem´ehez tartoz´o mutat´oja.

4.16. p´elda. Tegy¨uk fel, hogy bemenetk´ent a hACDF M Q, ABCF M O, BF O, BCKSQ, ACF M Q, CS, DF J, F HIi sorozat van adva, ´es min supp= 3. A gyakori elemek : A, B, C, F, M, Q, amelyek t´amogatotts´aga rendre 3, 3, 5, 6, 3, 3. Ekkor a sz˝urt bemenetet (hACF M Q,

F C

Egy FP-f´at hasonl´o m´odon ´ep´ıt¨unk fel, mint egy sz´of´at. K¨ul¨onbs´eg, hogy egy I elemhalmaz besz´ur´as´an´al nem csak azI-t reprezent´al´o lev´elnek a sz´aml´al´oj´at n¨ovelj¨uk eggyel, hanem minden olyan cs´ucs´et, amelyet ´erint¨unk a besz´ur´as sor´an (hiszen ezen cs´ucsokat reprezent´al´o halmazok az I prefixei). A keresztir´any´u ´eleket ´es a fejl´ect´abl´at is egyszer˝uen megkaphatjuk. Legyen a fejl´ect´abla mutat´oinak kezdeti ´ert´eke NIL. Amikor besz´urunk egy ´uj, i c´ımk´ej˝u cs´ucsot, akkor k´et dolgot kell tenn¨unk. Az ´uj cs´ucs kereszt´el mutat´oja felveszi a fejl´ect´abla i-hez tartoz´o bejegyz´es´et, majd ezt a bejegyz´est az ´uj cs´ucs c´ım´ere cser´elj¨uk. Ezzel tulajdonk´eppen olyan l´ancot k´esz´ıt¨unk, amelyben a cs´ucsok a besz´ur´asi idej¨uk szerint cs¨okken˝oen vannak rendezve (az el˝osz¨or besz´urt elem van legh´atul) ´es a lista a fejl´ect´abl´aban kezd˝odik.

A fejl´ec mutat´okb´ol kiindulva ´es a kereszt´eleket k¨ovetve megkaphatjuk a vet´ıtett bemenetet

´es meghat´arozhatjuk a vet´ıtett bemenetben gyakori elemeket. Az adott tranzakci´ok el˝ofordul´asa megegyezik a kereszt´elek ´altal mutatott pontok sz´aml´al´oj´aval. Ezek alapj´an a vet´ıtett bemenetet sz˝urhetj¨uk ´es bel˝ole egy ´ujabb FP-f´at ´ep´ıthet¨unk fel. Ezt a f´at vet´ıtett FP-f´anak h´ıvjuk. A k¨ovetkez˝o ´abr´an az M elemhez tartoz´o vet´ıtett ´es sz˝urt bemenet FP-f´aj´at l´athatjuk (amelyet a Qelem feldolgoz´asa ut´an kapunk).

Az FP-fa m´erete – hasonl´oan a sz´ofa m´eret´ehez – f¨ugg az elemeken defini´alt rendez´est˝ol. Az FP-growth algoritmus akkor lesz hat´ekony, ha a fa elf´er a mem´ori´aban, ez´ert fontos lenne azt a rendez´est haszn´alni, ami v´arhat´oan a legkisebb f´at eredm´enyezi. Az Apriori eset´eben m´ar elmondtuk, hogy az a heurisztika, amely az elemek gyakoris´ag szerint cs¨okken˝o rendez´es´et haszn´alja, ´altal´aban kis m´eret˝u f´at eredm´enyez.

Egyszer˝u lesz a vet´ıtett bemenet el˝o´all´ıt´asa ´es a sz˝urt bemenetb˝ol egy elem t¨orl´ese, amennyi-ben a legritk´abb gyakori elemet (gyr) vessz¨uk el˝osz¨or. Ez ¨osszhangban ´all azzal, hogy a pszeu-dok´od 9. sor´aban az elemeket gyakoris´ag szerint n¨ovekv˝o sorrendben vessz¨uk. A gyr csak lev´el c´ımk´eje lehet. Mivel a f´ab´ol t¨or¨olni fogjuk a gyr c´ımk´ej˝u cs´ucsokat a rekurzi´os m˝uvelet ut´an (13. sor), a k¨ovetkez˝o elem is csak lev´el c´ımk´eje lesz.

F

4.8. ´abra. p´elda : vet´ıtett FP-fa

N´ezz¨uk most meg, hogy amennyiben a sz˝urt bemenet egy FP-f´aban van t´arolva, akkor hogyan kaphatjuk meg a gyr elemre vett vet´ıt´esben az elemek t´amogatotts´ag´at. A fejl´ect´abla gyrelem´ehez tartoz´o mutat´ob´ol kiindulva a kereszt´elek alkotta l´ancban pontosan azok a cs´ucsok vannak, amelyek gyr-t tartalmaz´o bemeneti elemet reprezent´alnak. Az egyes elemhalmazok el˝ofordul´as´at agyrc´ımk´ej˝u cs´ucsokhoz rendelt sz´aml´al´o adja meg, az elemeiket pedig a gy¨ok´erig fels´et´alva kaphatjuk. A lista utols´o cs´ucs´anak feldolgoz´asa ut´an rendelkez´es¨unkre ´allnak a gyr elemhez tartoz´o vet´ıtett bemenetben valahol el˝ofordul´o elemek t´amogatotts´agai, amely alapj´an kiv´alogathatjuk a vet´ıtett bemenetben gyakori elemeket.

”A nyugalom meg´ov az UV sugarakt´ol Amerikai kutat´ok szerint a stressz

´es az UV-sug´arz´as egy¨uttesen tud-nak csak igaz´an vesz´elyesek lenni.

Ez az eredm´eny azt az ismert t´enyt er˝os´ıti meg, hogy a kr´onikus stressz lecs¨okkenti a b˝or v´edekez˝o k´epess´eg´et.

Ha teh´at nem idegesked¨unk, nem kell f´eln¨unk a napsugarakt´ol.” Forr´as : http://www.habostorta.hu/hab/

tomy/tudomany/200507/a_nyugalom_

megov_az_uvsugaraktol?print=1 Ugyanilyen bej´ar´assal kaphatjuk meg a vet´ıtett,

majd sz˝urt bemenetet tartalmaz´o FP-f´at. A fejl´ect´abl´ab´ol kiindulva v´egigmegy¨unk a l´ancolt lista elemein. A cs´ucs ´altal reprezent´alt elemhalmazb´ol t¨or¨olj¨uk a ritka elemeket, majd a kapott elemhal-mazt besz´urjuk az ´uj FP-f´aba. A kis mem´oriaig´eny

´erdek´eben a gyakoris´ag szerint cs¨okken˝o sorrendet haszn´aljuk. Ezt a sorrendet a vet´ıtett bemenet alapj´an ´all´ıtjuk fel (l´ev´en az ´uj fa a vet´ıtett ´es sz˝urt bemenetet fogja t´arolni), ami k¨ul¨onb¨ozhet az eredeti FP-f´aban alkalmazott rendez´est˝ol.

4.17. p´elda. Folytassuk az el˝oz˝o p´eld´at ´es ´all´ıtsuk el˝o a legritk´abb gyakori elemhez (Q) tartoz´o vet´ıtett

´es sz˝urt bemenetet. A fejl´ect´abla Q elem´ehez tartoz´o mutat´ob´ol kiindulva mind¨ossze k´et cs´ucsot l´atogatunk

meg, ami azt jelenti, hogy a vet´ıtett bemenet k´et k¨ul¨onb¨oz˝o elemhalmazt tartalmaz : az F CAM -et k´-etszer, a CB-t egyszer. Ez alapj´an a vet´ıtett bemenetben egyetlen gyakori elem van, C.

Ez a rekurzi´os ´ag nem folytat´odik, hanem visszat´er a QC gyakori elemhalmazzal. Az FP-f´ab´ol t¨or¨olhetj¨uk a fejl´ect´ablaQ bejegyz´es´ehez tartoz´o mutat´ob´ol, keresztir´any´u ´elek seg´ıts´eg´evel el´erhet˝o cs´ucsokat. A k¨ovetkez˝o vizsg´alt elem az M. Az M vet´ıtett bemenet´eben h´arom gyako-ri elem van, ´es a vet´ıtett sz˝urt bemenet az F CA elemhalmazt tartalmazza h´aromszor. Ezt a vet´ıtett, sz˝urt bemenetet egy egyetlen ´utb´ol ´all´o FP-fa fogja reprezent´alni. A t¨obbi FP-fa ugyan-ilyen egyszer˝uen megkaphat´o.

Hat´ekonys´agi szempontb´ol rendk´ıv¨ul fontos, hogy a rekurzi´ot ne folytassuk, ha a vizsg´alt

FP-fa egyetlen ´utb´ol ´all. A rekurzi´o helyett k´epezz¨uk ink´abb az ´ut ´altal reprezent´alt elemhalmaz minden r´eszhalmaz´at. A r´eszhalmaz t´amogatotts´ag´at annak a cs´ucsnak a sz´aml´al´oja adja meg, amely a legm´elyebben van a r´eszhalmazt meghat´aroz´o cs´ucsok k¨oz¨ott.

4.4.1. Az FP-growth* algoritmus

2003 november´eben megszervezt´ek az els˝o gyakori elemhalmaz-kinyer˝o algoritmusok ver-seny´et [65]. B´arki benevezhetett egy ´altala k´esz´ıtett programot. Ezeket k¨ozpontilag tesz-telt´ek k¨ul¨onb¨oz˝o adatb´azisokon, k¨ul¨onb¨oz˝o t´amogatotts´agi k¨usz¨ob¨okkel. Nem volt olyan imple-ment´aci´o, amely minden esetben a legjobban szerepelt, de ki lehet emelni n´eh´any olyat, amelyek szinte mindig az els˝ok k¨oz¨ott v´egeztek. A szervez˝ok v´eg¨ul annak adt´ak a f˝od´ıjat (egy s¨ort ´es egy pelenk´at !), aki az FP-growth* algoritmust [67] k¨uldte be.

Az FP-growth* algoritmus az FP-growth m´odos´ıt´asa. El˝onye, hogy gyorsabban ´all´ıtja el˝o a vet´ıtett f´at, ami´ert viszont mem´ori´aval fizet. N´ezz¨uk meg, hogy pontosan mi t¨ort´enik egy rekurzi´os l´ep´esben. El˝osz¨or ellen˝orizz¨uk, hogy a fa egyetlen ´utb´ol ´all-e. Ha nem, akkor a legritk´abb elemb˝ol kiindulva el˝o´all´ıtjuk a vet´ıtett f´akat, ´es rekurz´ıvan megh´ıvjuk az algorit-must. A vet´ıtett f´aban els˝o l´ep´esk´ent meg kell hat´arozni a vet´ıtett bemenetben szerepl˝o elemek t´amogatotts´ag´at, m´asodik l´ep´esk´ent pedig el˝o´all´ıtjuk a vet´ıtett FP-f´at. Ez tulajdonk´eppen az aktu´alis fa adott elemhez tartoz´o ´againak k´etszeri bej´ar´as´at jelenti. Az els˝o bej´ar´ast lehet meg-gyors´ıtani egy seg´edt¨omb haszn´alat´aval.

Az FP-fa ´ep´ıt´es´en´el t¨olts¨unk fel egy, kezdetben 0 ´ert´ekeket tartalmaz´o t¨omb¨ot is. Amikor besz´urunk egy t (ak´ar vet´ıtett) tranzakci´ot az (ak´ar vet´ıtett) FP-f´aba, n¨ovelj¨uk eggyel a t¨omb (i, j)-edik cell´aj´at, amennyiben az i´es j elemei t-nek. A fa fel´ep´ıt´ese ut´an rendelkez´es¨unkre ´all egy t¨omb, ami tartalmazza az elemp´arok el˝ofordul´as´at. Ha ezek ut´an egy vet´ıtett f´at akarunk k´esz´ıteni, akkor sz¨uks´egtelen id˝ot t¨olten¨unk az els˝o l´ep´essel, hiszen a t¨omb megfelel˝o sor´ab´ol k¨ozvetlen megkaphatjuk a t´amogatotts´agokat. ¨Osszess´eg´eben az els˝o l´ep´es gyorsabb (nem kell a f´aban bolyonganunk, csak a t¨omb elemeit kiolvasni), a m´asodik lassabb (a t¨omb¨ot is fel kell t¨olteni), a mem´oriafogyaszt´as pedig nagyobb (a t¨omb m´eret´evel).

4.4.2. Patricia

In document Magyar nyelv˝ u irodalom (Pldal 87-91)