• Nem Talált Eredményt

2011.03.08. PeregiTamás Gyakorielemhalmazok

N/A
N/A
Protected

Academic year: 2022

Ossza meg "2011.03.08. PeregiTamás Gyakorielemhalmazok"

Copied!
37
0
0

Teljes szövegt

(1)

Gyakori elemhalmazok

Peregi Tamás

BME-SZIT

2011. 03. 08.

(2)

Tartalom

1 Problémafelvetés

2 Az Apriori algoritmus Alapötlet

Algoritmus

Rendezés hatása az algoritmusra Optimalizációs módszerek

3 Az Eclat algoritmus Alapötlet

Algoritmus Elemzés

(3)

Hol tartunk?

1 Problémafelvetés

2 Az Apriori algoritmus Alapötlet

Algoritmus

Rendezés hatása az algoritmusra Optimalizációs módszerek

3 Az Eclat algoritmus Alapötlet

Algoritmus Elemzés

4 Az FP-growth algoritmus Alapfogalmak

Algoritmus

Megvalósítás FP-fával

(4)

Egy érdekes történet

Az egyik áruházlánc komputereinek adataiból kiderült, hogy a kés ˝o este pelenkát vásárló vev ˝ok közül sokan sört is tettek a bevásárlókosarukba. Feltételezve, hogy az esti vásárlók valószín ˝uleg férfiak, akiket a feleségük küld el pelenkáért, az áruházak a pelenkás és sörös polcokat közelebb tették

egymáshoz. Ily módon ösztönözték az apukákat, hogy ne csak a mindennapi pelust, hanem saját söradagjukat is szerezzék be.

(5)

Fogalmak

I ={i1,i2, . . . ,im}az elemek (vásárolható termékek) halmaza

T =ht1,t2, . . . ,tniatranzakciók(vásárlások) sorozata, ti ⊆ I

I⊆ I támogatottságaazon tranzakciók száma, amelyeknekIrészhalmaza. Jele :supp(I)

Igyakori, hasupp(I)≥min_supp (aholmin_supp adott korlát)

Iritka, ha nem gyakori

Kérdés

AdottI,T ésmin_suppesetén melyekI gyakori részhalmazai ?

(6)

Méretek a gyakorlatban

A gyakorlatban|I| ≈106és|T | ≈109is lehet.

A kimenet mérete lehetséges, hogy|I|-ben exponenciális ! Szerencsére a gyakorlati alkalmazásokban a tranzakciók maguk viszonylag kicsik, és a gyakori elemhalmazok mérete (és száma) sem lesz kezelhetetlenül nagy.

(7)

Egy egyszer ˝u algoritmus

Sorban olvassuk beT elemeit, és minden tranzakció minden részhalmazára vizsgáljuk meg, hogy el van-e már tárolva a memóriában.

Ha nem, tároljuk el, és rendeljünk hozzá egy 1 kezdeti érték ˝u számlálót.

Ha igen, növeljük meg a hozzárendelt számláló értékét.

T végigolvasása után már az összes potenciális (legalább egyszer megjelen ˝o) gyakori elemhalmaz támogatottsága ismert, így könnyedén kisz ˝urhet ˝ok a gyakoriak.

Probléma

Nincs elég memória - egy 60-elem ˝u tranzakció

részhalmazainak száma 1018nagyságrend ˝u, azaz csak a számlálók tárolására 106TiB nagyságrend ˝u memóriára lenne szükség.

(8)

Egy egyszer ˝u algoritmus

Javítási ötletek

Csak egy adott számnál kisebb elemszámú részhalmazokat tároljunk.

Ajelölteketés számlálóikat tároljuk szófában.

Problémák

Nem kapunk meg minden gyakori elemhalmazt Túl sok hamis jelölt =⇒ még mindig túl nagy

(9)

Hol tartunk?

1 Problémafelvetés

2 Az Apriori algoritmus Alapötlet

Algoritmus

Rendezés hatása az algoritmusra Optimalizációs módszerek

3 Az Eclat algoritmus Alapötlet

Algoritmus Elemzés

4 Az FP-growth algoritmus Alapfogalmak

Algoritmus

Megvalósítás FP-fával

(10)

Alapötlet

Megfigyelés

Gyakori elemhalmaz minden részhalmaza gyakori.

Ötlet

Az`+1 elem ˝u jelölteket az`elem ˝u gyakori elemhalmazok páronkénti unióiból állítsuk el ˝o.

(11)

Pszeudokód

`:= 0 J`:= {∅}

while J` nem üres do

támogatottság_meghatározás(T,J`)

GY`:= gyakori_kiválogatás(J`,min_supp) J`+1:= jelölt_el˝oállítás(GY`)

`:= `+1

end while

(12)

Támogatottság meghatározása - triviális algoritmus

Minden jelölt támogatottságát külön határozzuk meg,

megvizsgálva minden tranzakciót, hogy tartalmazza-e a jelöltet.

Probléma

Sok jelölt esetén lassú : végig kell nézni mindig a teljes tranzakciót.

(13)

Támogatottság meghatározása szófák segítségével

A jelölteket szófában tároljuk.

Minden jelölthöz (levélhez) egy számláló, amiben a támogatottságuk van.

Egy tranzakció feldolgozásakor bejárjuk a fát

Ha egyd szint ˝u csúcshoz a tranzakciój. elemén keresztül jutunk, akkor azokon az éleken megyünk tovább, amelyek címkéjet[j0], aholj <j0 ≤ |t| −`+d.

`szint ˝u levél elérésekor megnöveljük a számláló értékét.

Az összes tranzakció feldolgozása után a gyakoriságok kiolvashatók a levelek számlálóiból.

(14)

Gyakori elemhalmazok kiválogatása

Bejárjuk a szófát, és amelyik levél számlálója kisebb min_supp-nál, azt töröljük a fából.

A gyakorinak talált elemhalmazokat kiírjuk a kimenetre.

(15)

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

Keressünk olyan`hosszúgyakoriI1,I2elemhalmaz párokat, amikre

I1megel ˝ozi lexikografikusanI2-t

I1utolsó elemét elhagyva ugyanazt kapjuk, mintI2utolsó elemét elhagyva

A pár unióját képezve vizsgáljuk meg, hogy minden részhalmaza gyakori-e. Ehhez elég az`elem ˝u részhalmazokat megvizsgálni.

Ez szófákkal könnyen megoldható : az el ˝oz ˝o fában a testvérlevelek segítségével kell új jelölteket generálni.

(16)

Rendezés hatása az algoritmusra

Eddig mindig feltételeztük, hogy az elemek a jelöltekben és a tranzakciókban valahogy sorrendezve vannak.

A szófa alakja (és pontjainak száma) függ a rendezést ˝ol.

Hogy érdemes megválasztani a sorrendet, hogy minimális memóriát használjunk ?

Tétel

A minimális méret ˝u szófa meghatározásának problémája

(17)

Heurisztikák a rendezésre 1.

Ötlet

Rendezzük az elemeket gyakoriság szerintcsökken ˝o sorrendbe !

Jónak t ˝unik, mert a gyakori elemek kerülnek a sorozatok elejére, és így a gyakori közös prefixeket csak egyszer tárolja a fa.

Tapasztalatok alapján tipikusan kisebb fa, mint a növekv ˝o rendezés, vagy véletlenszer ˝u rendezések esetén.

(18)

Heurisztikák a rendezésre 2.

Ötlet

Rendezzük az elemeket mégis inkább gyakoriság szerint növekv ˝osorrendbe !

Nagyobb memóriaigény (tipikusan) Kevesebb él indul ki egy pontból

A tranzakcióban a gyakori elemek hátrakerülnek, így a támogatottság-meghatározáskor nagyrészt a tranzakció végén kapunk csak találatokat, így kevesebb irányba

(19)

Zsákutca nyesés

Ötlet

Ha egy csúcsból elérhet ˝o összes levelet töröltük, a csúcs felesleges, így ˝o is törölhet ˝o.

A jelöltek el ˝oállítása során egyszer ˝uen töröljük azokat a csúcsokat, akikb ˝ol nem tudunk új jelöltet generálni.

A gyakoriak kiválogatása során minden csúcs törlésekor töröljük a szül ˝ojét, ha ˝o volt az egyetlen gyereke.

(20)

Tranzakciók sz ˝urése 1.

Ötlet

Minden tranzakcióból törölhet ˝ok a ritka elemek.

Ötlet

Az`. iterációbanttörölhet ˝o, ha|t| ≤`. (Nem tartalmaz kés ˝obbi jelöltet.)

Ötlet

(21)

Tranzakciók sz ˝urése 2.

El ˝oz ˝o ötlet finomítása

Egy tranzakcióból törölhet ˝ok azok az elemei, amelyek nem elemei egyetlen általa tartalmazott jelöltnek sem.

El ˝oz ˝o ötlet további finomítása

Egy tranzakcióból törölhet ˝ok azok az elemei, amelyek nem elemei legalább`általa tartalmazott jelöltnek sem.

(22)

Equisupport nyesés

Megfigyelés

LegyenX ⊂Y ⊆ I. Hasupp(X) =supp(Y), akkor supp(X∪Z) =supp(Y∪Z)mindenZ ⊆ I-re.

Ha egy jelölt támogatottsága megegyezik a prefixének támogatottságával, akkor alatta ugyanaz a fa épülne ki, mint a szül ˝o alatt =⇒ felesleges „rendesen megcsinálni”

Vegyük fel a kiegészít ˝o elemet a szül ˝oequisupport halmazába

(23)

Equisupport nyesés implementáció

A ritka elemek törlésekor töröljük az olyan jelölteket, akiknek a támogatottsága megegyezik a szül ˝ojével, és hozzáf ˝uzzük a szül ˝o equisupport halmazához.

Felfoghatók hurokélként

Támogatottság-meghatározáskor nem kell figyelembe venni Jelölt-el ˝oállításkor az ellen ˝orzésnél figyelembe kell venni Zsákutca-nyeséskor a mélységbe bele kell érteni a prefixek és saját equisupport halmazok méretét

(24)

Hol tartunk?

1 Problémafelvetés

2 Az Apriori algoritmus Alapötlet

Algoritmus

Rendezés hatása az algoritmusra Optimalizációs módszerek

3 Az Eclat algoritmus Alapötlet

Algoritmus Elemzés

(25)

Alapötlet

Ha az Apriori „szélességi bejárás” volt, akkor ez „mélységi”

lesz.

Mindig egy elemet állít el ˝o, és azonnal meghatározza a támogatottságát.

Egy elemTID-halmaza : azon tranzakciók sorszámai, amelyek tartalmazzák az adott elemhalmazt.

A TID-halmaz mérete a támogatottság

Jelölt TID-halmaza a generátorok TID-halmazainak metszete

(26)

Az algoritmus el ˝okészítése

Gy ˝ujtsük ki a gyakori elemeket

Építsük fel a gyakori elemek TID-halmazait

Hívjuk meg az ECLAT-SEGÉD eljárást, paraméterül az egy elem ˝u gyakori elemhalmazok halmazát átadva.

A jelöltgenerálás ugyanaz, mint az Apriori esetén.

GYP aP prefix ˝u, annál eggyel hosszabb gyakori elemhalmazokat tartalmazza

(27)

ECLAT_SEGÉD(GYP) : for all gy∈GYP do

for all gy’∈GYP, gy<gy’ do j :=gy ∪ gy’

j.TID := gy.TID ∩ gy’.TID if |j.TID| ≥ min_supp then

GYgy:= GYgy∪{j}

end if end for

if |GYgy| ≥ 2 then

GY := GY ∪ GYgy ∪ ECLAT_SEGÉD(GYgy) else

GY := GY ∪ GYgy end if

end for return GY

(28)

Elemzés

Megfigyelés

Az Eclat legalább annyi jelöltet állít el ˝o, mint az Apriori, ilyen szempontból tehát rosszabb annál.

El ˝onyök az Apriorihoz képest

A jelöltek TID-halmazának el ˝oállítása egyszer ˝u és gyors Ahogy egyre mélyebbre jutunk, a TID-halmazok mérete csökken =⇒ a támogatottság meghatározásának ideje is

(29)

Hogyan rendezzünk ?

A cél az, hogy minél kevesebb olyan jelölt legyen, aki az Aprioriban nem kerül el ˝o, vagyis van ritka részhalmaza.

A jelöltek prefixe gyakori, így akkor nagy az esélye a jelöltnek, ha a leggyakoribb elemet nem tartalmazza a prefix =⇒ gyakoriság szerintnövekv ˝osorrendbe érdemes rendezni.

(30)

Hol tartunk?

1 Problémafelvetés

2 Az Apriori algoritmus Alapötlet

Algoritmus

Rendezés hatása az algoritmusra Optimalizációs módszerek

3 Az Eclat algoritmus Alapötlet

Algoritmus Elemzés

(31)

Alapfogalmak

Sz ˝urés

AT bemenet sz ˝urésén azt értjük, hogy a benne szerepl ˝o tranzakciókból elhagyjuk a ritka elemeket. Az így kapott halmazt jelöljükT-gal.

Vetítés

AT bemenetPelemhalmazra vetítését (T |P) úgy kapjuk, hogy vesszük aP-t tartalmazó tranzakciókat, és elhagyjuk bel ˝olük P-t.

(32)

Algoritmus

A rekurzív FP_GROWTH_SEGÉD eljárás egyP elemhalmazt és egy erre vetítettT tranzakcióhalmazt vár paraméterül.

Meghatározzuk aT-ben szerepl ˝o elemek támogatottságát, és kiválasztjuk a gyakoriakat

Megsz ˝urjükT-t

Mindengy gyakori elem esetén

Pgygyakori elemhalmazt kiírjuk a kimenetbe Meghívjuk az eljárást rekurzívanPgyésT|gy paraméterekkel

(33)

Megvalósítás

A megvalósításhozFP-fáthasználunk B ˝ovített szófa

A tranzakciókat tároljuk el benne

Nem csak a levélelemekben van számláló (hány

tranzakciónak prefixe az adott csúcshoz tartozó halmaz) Azonos címkéj ˝u csúcsok láncolt listaként összekötve, a lánc els ˝o eleme egy fejléctáblában van eltárolva

Gyakoriság szerintcsökken ˝osorrendben építjük fel a fát

(34)

FP-fa használata 1.

FP-fa felépítése

Ugyanúgy, mint egy egyszer ˝u szófát, csak minden számlálót megnövelünk „útközben”. Új csúcs felvétele esetén belef ˝uzzük a megfelel ˝o lista elejére.

Támogatottság meghatározása

Végighaladunk az adott elemhez tartozó láncolt listán, és összadjuk a számlálók értékét

(35)

FP-fa használata 2.

Elem törlése

Ha a gyakori elemeken gyakoriság szerintnövekv ˝osorrendben megyünk végig az algoritmus során, és végezzük a

vetítés-rekurzió-törlés lépéseket, akkor mindig leveleket kell törölnünk, amit könnyedén megtehetünk.

Egy elemre vetített tranzakcióhalmaz meghatározása Amennyiben olyan elemre vetítünk, amelyik csak levelekben fordul el ˝o (ez teljesül a növekv ˝o sorrend esetén), a

keresztéleken végighaladva az aktuális csúcstól a gyökérig vezet ˝o út pontjai alkotják a vetített tranzakciókat. Ezekb ˝ol egyszer ˝uen egy új fát építünk.

(36)

FP-fa használata 3.

Rekurzió leállása

Ha az FP-fa már csak egyetlen útból áll, akkor álljunk le, és írjuk ki az összes részhalmazát. Egy részhalmaz

támogatottsága a kegmélyebben lév ˝o csúcsának számlálója.

(37)

Köszönöm a figyelmet !

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

(b) Ha egy mértani sorozat valamelyik tagja és a hányadosa is pozitív, akkor a sorozat szigorúan monoton növekv˝ o.. (c) Ha egy mértani sorozat valamelyik tagja negatív, és

A felügyelt csoportosítási algoritmus kiegészítéseként egy attribútum kiválasztó eszközzel, egyrészt csökkenthető lenne a gyakori elemhalmazok (mely az

Ha több allél van a populációban a kérdéses autoszómás lokuszon, a homozigóta gyakoriság az allél gyakoriság négyzete, a heterozigóta gyakoriság kétszer az allél

Hoffmann Ildikó, Bánréti Zoltán, Szücs Márta, Mészáros Éva, (2011) A mondattani rekurzió enyhe és középsúlyos Alzheimer-kórban. In: Bánréti Zoltán (szerk.) Rekurzió

77. § (1) A 20/03/08/00 „Agrárágazati szakmai civil szervezetek és képviseletek támogatása” előirányzat esetén a támogatás rendelkezésre bocsátása

6713 ‘03 Máshova nem sorolt egyéb pénzügyi kiegészítõ tevékenység 6820 ‘08 Saját tulajdonú, bérelt ingatlan bérbeadása, üzemeltetése 6920 ‘08

6713 ‘03 Máshova nem sorolt egyéb pénzügyi kiegészítõ tevékenység 6820 ‘08 Saját tulajdonú, bérelt ingatlan bérbeadása, üzemeltetése 6920 ‘08

De talán gondolkodásra késztet, hogy hogyan lehet, illetve lehet-e felülkerekedni a hangoskönyvek ellen gyakran felvetett kifogásokon, miszerint a hangos olvasás passzív és