Gyakori elemhalmazok

Hasonló dokumentumok
Gyakori elemhalmazok kinyerése

Gyakori elemhalmazok és asszociációs szabályok

GYAKORI RÉSZGRÁFOK KERESÉSE HÁLÓZATOKON

Nagyméretű adathalmazok kezelése (BMEVISZM144) Reinhardt Gábor április 5.

Adatbányászat. Gyakori elemhalmazok Asszociációs és döntési szabályok. Szegedi Tudományegyetem. Vásárlói kosarak Gyakori elemhalmazok FP-growth

Amortizációs költségelemzés

Csima Judit május 10.

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Struktúra nélküli adatszerkezetek

Asszociációs szabályok

2. Visszalépéses keresés

Algoritmuselmélet 2. előadás

Adatszerkezetek 2. Dr. Iványi Péter

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Adatszerkezetek 2. Dr. Iványi Péter

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Algoritmusok és adatszerkezetek gyakorlat 07

KOVÁCS BÉLA, MATEMATIKA I.

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Adatszerkezetek 7a. Dr. IványiPéter

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

2018, Diszkrét matematika

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Alkalmazói rendszerek ACCESS ZH - javítókulcs Informatika tanár MSC, levelező tagozat, január 06.

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Programozás alapjai II. (7. ea) C++

Felvételi tematika INFORMATIKA

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Láncolt listák Témakörök. Lista alapfogalmak

Adatszerkezetek és algoritmusok

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN

angolul: greedy algorithms, románul: algoritmi greedy

INFORMATIKA javítókulcs 2016

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

BACKTRACKING Visszalépéses keresés

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Programozási módszertan. Mohó algoritmusok

Egyirányban láncolt lista

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

Adabáziskezelés gyakorlat SQL

Adatbázis rendszerek Gy: Algoritmusok C-ben

Gráfalgoritmusok ismétlés ősz

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

A könyv tartalomjegyzéke

Tuesday, March 6, 12. Hasító táblázatok

Kupac adatszerkezet. 1. ábra.

III. Gráfok. 1. Irányítatlan gráfok:

Számláló rendezés. Példa

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Diszkrét matematika 2.C szakirány

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Számjegyes vagy radix rendezés

Java és web programozás

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Adatbázis rendszerek SQL nyomkövetés

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Javító és majdnem javító utak

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Adatbázisok II. rész

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Algoritmusok bonyolultsága

Diszkrét matematika 2. estis képzés

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

Gráfelméleti feladatok. c f

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Intelligens Rendszerek Elmélete IRE 4/32/1

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Diszkrét matematika 2.C szakirány

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

Adatbázis használat I. 1. gyakorlat

Lekérdezések az SQL-ben 1.rész

Átírás:

Gyakori elemhalmazok Bankó Tibor June 9, 2010 Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 1 / 26

Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok értékelése Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 2 / 26

A kiindulási probléma A gazdaságnak a legnagyobb profitot általában az együtt vásárolt termékek jelentik (például a sör és a pelenka). Így nagyon fontos ezen termékhalmazok megkeresése. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 3 / 26

A gyakori elemhalmaz fogalma Legyen adott: termékek egy halmaza: A = {a 1, a 2,...a m } tranzakciók egy halmaza: T = {t 1, t 2,...t m }, ahol t j A. Ezt a T-t bemeneti sorozatnak elemeit pedig tranzakcióknak hívjuk. A tranzakció felfogható egy vásárlás során megvett terméekeknek. Egy α A halmaz fedése azon tranzakciók halmaza, melyek azt tartalmazzák. Ekkor α támogatottsága (supp(α)) a fedésének számossága. Azok a fontos halmazok, melyek sok tranzakcióban előfordulnak, hiszen ezeket gyakran vásárolták együtt. Emiatt definiálva van egy min supp (támogatottsági küszöb), és csak az ennél nagyobb támogatottságú halmazokkal kell foglalkozni. Ezeket hívjuk gyakori elemhalmazoknak. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 4 / 26

A gyakori elemhalmaz fogalma (folyt.) Az A elemein definiálva van egy rendezés. A tranzakciók elemeit ennek megfelelően tartjuk rendezve. Ritka elemeknek nevezzük azokat az elemeket, melyek egyetlen gyakori elemhalmaznak sem elemei. Szűrt tranzakciókhoz úgy juthatunk, hogy elhagyjuk a tranzakciókból a ritka elemeket. Ezek úgy sem számítanak, és így kisebb tranzakciókhoz jutunk, amelyek meggyorsítják az algoritmusok futását. Nagyon fontos, hogy gyakori elemhalmaz minden részhalmaza is gyakori, hiszen azok legalább annyi tranzakcióban megtalálhatóak. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 5 / 26

Tranzakciók tárolási módjai A tranzakciókat és elemeket id-val látjuk el. Horizontális adatbázis: Minden tranzakcióhoz tároljuk az elemeinek listáját. Vertikális adatbázis: Minden elemhez tároljuk egy listában a tranzakciókat, melyek őt tartalmazzák. Relációs adatbázis: A tábla minden sora egyetlen elem - tranzakció párt tartalmaz. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 6 / 26

Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok értékelése Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 7 / 26

Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok értékelése Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 8 / 26

Gyakori elemhalmazok egy speciális esetben A következő sql lekérdezéssel a kételemű gyakori elemhalmazok kereshetőek meg, amennyiben azokat relációs adatbázisban tároljuk. SELECT I.elem, J.elem, COUNT(I.tranzakció) FROM tranzakciók I,tranzakciók J WHERE I.tranzakció = J.tranzakció AND I.elem < J.elem GROUP BY I.elem, J.elem HAVING COUNT(I.tranzakció) >= min supp Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 9 / 26

Az áltlános esetet megoldó algoritmusok Egy algoritmust teljesnek nevezünk, ha minden gyakori elemhalmazt megtatlál. Helyesnek akkor nevezzük, ha csak a gyakori elemhalmazokat találja meg. Ilyen értelemben az előző sql lekérdezés se nem helyes se nem teljes. Az gyakori elemhalmazokat kinyerő algoritmusok(gyek) általában 3 lépést ismételgetnek. Jelölteket álĺıtanak elő. Meghatározzák a jelöltek támogatottságát. Kiválogatják a gyakoriakat. A különbség a keresési tér bejárásában (a jelöltek előálĺıtásában) és a támogatottság meghatározásában van. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 10 / 26

Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok értékelése Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 11 / 26

Az Apriori algoritmus l = 0 J l = {0} while J l 0 do Gy l támogatottság meghatározás(t, J l ) = gyakoriak kiválogatása(j l, min supp) J l+1 =jelölt eloállítás(gy l ) l = l + 1 end while return GY Egy szélességi bejárást valósít meg a lehetséges elemhalmazokat reprezentáló fában, hiszen minden iterációban próbál egyre nagyobb méretű gyakori elemhalmazokat keresni. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 12 / 26

Jelöltek előálĺıtása Két n elemű halmazból( Legyenek ezek: I 1, I 2. Ezeket genenrátoroknak hívjuk) egy n + 1 méretű lesz előálĺıtva. A következő tulajdonságok figylemebevételével: I 1 a deiniált rendezésnek megfelelően megeleőzi a I 2 -t I 1 és I 2 l 1 elemű prefixei megegyeznek. Az így kapott n + 1 elemű halmazról kell eldönteni, hogy gyakori-e. Ennek szükséges feltétele, hogy mind az n + 1 db n elemű részhalmaza gyakori legyen. Ezt le kell ellenőrizni mielőtt gyakorinak jelöljük. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 13 / 26

A jelöltek támogatottságának meghatározása A jelöltek elemszáma alapján különböző eljárásokat kell használni: 1 elem esetén: minden elemhez hozzárendelünk egy int változót kezdetben 0 értékkel. A tranzakciókat végigolvassuk és minden eleme esetén növeljük az ahhoz tartozó számlálót. 2 elem esetén: Tfh. n gyakori elemünk van elemünk van. Ekkor érdemes felvenni egy n n méretű kezdetben csupa 0 elemet tartalmazó tömböt, melynek csak a DNY-ÉK irányú átló felett levő elemeit vesszük figyelembe. Ekkor az < l, k > (l < k) párhoz tartozó értéket a tömb [l][k-l] eleme tartalmazza. Az egyes tranzakciók végigolvasása folyamán minden előálĺıtható párra meg kell növelni a tömb megfelelő elemét. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 14 / 26

A jelöltek támogatottságának meghatározása 2-nél több elem esetén: Érdemes a jelölteket tartalmazó fát egy szófává alakítani. A szófa élei a megfelelő elemek. A pontjai pedig az egyedhalmazoknak felelnek meg. A gyökér az üres halmaznak. A többi elem, pedig annak a rendezett halmaznak, amely elemek azokon az éleken vannak, melyeken át az ponthoz el lehet jutni a gyökérből. Egy csomópont egyes gyerekei balról jobbra oly sorrendben vannak, ahogy a csomópontot bővítő elem lexiografikus rendezése adja vagy ennek fordítottja vagy pedig valamilyen más szempont szerint van rendezve (lsd. részletetesebben a későbbiekben). Az algoritmus: A tranzakciókon belül az elemek is a lexiogafikus rendezésnek megfelelően vannak. Egy tranzakciónál végig kell lépkedni a fában oly módon, hogy minden olyan jelölt támogatottságát növeljük, melyet a t tranzakció tartalmaz. Ha a tranzakció hossza t, akkor 2 2 pontot kell bejárni a fában. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 15 / 26

Apriori szófával A szófát nem csak a támogatottság meghatározásához használhatjuk fel, hanem a jelölt előálĺıtásnál is. Ugyanis a szófa olyan levelei, melyek testvérek is megfelelnek a jelölt előálĺıtás során emĺıtett genenrátoroknak. Az új jelöltet csak a bal oldalibb alá kell felvenni. Így elkerülve, hogy az algoritmusban egy elem kétszer is megjelenjen. Tehát az algoritmus a futása során egyetlen szófát épít. A szófa kezdetben az üres halmazt jelentő jelentő egyetlen csúcsból áll, melynek gyerekei a gyakori elemhalmazok. Ezek gyerekei a kételemű gyakoriak. Ezek után érdemes a 3 elemű jelölteket az előbb emĺıtett módon előálĺıtani. Tehát a fa levelei a jelölteknek felelnek meg. Ezek támogatottságát meg kell határozni. A ritka halmazoknak megfelelő leveleket (vagyis amelyek támogatottsága nem éri el amin supp-ot) le kell törölni... Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 16 / 26

A rendezés hatása a szófa méretére Törekedni kell a minél kisebb fára, mert rengeteg (akár exponenciálisan sok) gyakori elemhalmaz is lehet. A minimális szófa megtalálása neház feladat. Tétel A minimális szófa megkeresése NP-nehéz probléma. A tapasztalatok szerint a gyakoriság szerint csökkenő sorrend adja a legkedvezőbbe méretet. De mégsem ezt érdemes használni, hanem a gyakoriság szerinti növekvő sorrendet. Ennek az előnyei: Egy csomópontból kevesebb él indul ki. Valamint a gyökér közelében vannak a ritka elemek. A fenti tulajdonságok azért előnyösek, mert így a tranzakciók nem jutnak olyan mélyre a fában és nem érintenek annyi levelet. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 17 / 26

További optimalizációk Ritka jelöltek törlése: A ritka jelöltek törléséhez nem kell még egyszer bejárni a szófát, hanem az új jelöltek előálĺıtásánál is ráérünk megtenni. Zsákutca nyesés: Felesleges tárolni azokat a csúcsokat, melyek egyik gyereke sem gyakori egyedhalmaz, hiszen ezek csak a memóriát foglalják. Persze vigyázni kell, nehogy túl korán töröljük. Addig nem sznad, ameddig nem állt elő az összes olyan jelölt, aminek részhalmaza lehet. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 18 / 26

Tranzakciók szűrése Fontos, hogy a tranzakciókból szűrjük a nem releváns elemeket vagyis azokat, amik már nem lehetnek elemei az aktuális méretű jelölteknek. Hiszen ez lassítja a támogatottság meghatározást. Az ötletek: Minden tranzakcióból töröljük a ritka elemeket. Az algoritmus l. iterációjában (ekkor a jelöltek l méretűek) törölni kell azokat a t tranzakciókat, melyek elemszáma nem nagyobb, mint l. Hiszen ekkor ez a tranzakció már nem tartalmaz olyan elemet, ami a következő iterációban jelölt lesz. Töröljük azt a tranzakciót, mely nem tartalmaz jelöltet. Ez úgysem adhat már nagyobb méretű gyakori elemhalmazt, hiszen, akkor kellett volna jelöltet tartalmaznia. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 19 / 26

Tranzakciók szűrése (folyt.) Töröljük a tranzakció azon elemeit, melyek nem elemei egyetlen olyan jelöltnek sem, amit a tranzakció tartalmaz. Ugyanis, ezek az elemek nagyobb méretű gyakori elemhalmazoknak sem lehetnek elemei. Ha így a tranzakció számossága kisebb egyenlő l-lel, akkor töröljük a tranzakciót is. Töröljük a tranzakció azon elemeit, melyek nem elemei legalább l db olyan jelöltnek, amit tartalmaz a tranzakció. Hiszen ekkor ezek az elemek megintcsak nem lehetnek l + 1 méretű gyakori elemhalmazok elemei. Az elemek eltávoĺıtása után használhatjuk a második ötletet. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 20 / 26

Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok értékelése Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 21 / 26

Az Eclat algoritmus Az Eclat algoritmus az üres mintából kiindulva egy mélységi keresést hajt végre, ellentétben az Apriori szélességi keresésével. Mindig egyetlen jelöltet álĺıt elő, melynek meg is határozza a támogatottságát. Egy l számosságú jelölt előálĺıtása során kettő l 1 számosságút használ fel, hasonlóan az Apriorihoz. A támogatottság meghatározása azonban máshogy történik. Ehhez be kell vezetni az ún. TID-halmazokat. A TID-halmazt elemek egy halmazához rendeljük hozzá. A TID-halmaz megadja azokat a tranzakció azonosítókat, amelyekben az adott halmaz minden eleme megtalálható. Így a jelölt támogatottsága generátorainak TID-halmazainak metszetének számosságával egyezik meg. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 22 / 26

Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok értékelése Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 23 / 26

FP-Growth algoritmus A keresési tér bejárásá megegyezik az Eclat algoritmuséval. De a támogatottságok meghatározása eltér. Ehhez az algoritmus felhasználja az elemhalmazok vetítését. A T tranzakcióhalmaz P elemhalmazra való vetítését(t P) úgy kapjuk, hogy a vesszük T P-t tartalmazó elemeit, és töröljük belőlük P-t. Az algoritmus egy rekurziós lépésében három dolgot ismétel. A gyakori elemek megkeresése után előálĺıtja azokból a szűrt tranzakciókat. Majd a szűrt tranzakciókat vetíti az egyes gyakori elemekre és mindegyik így előállt szűrt tranzakcióra új rekurzív hívást indít. A rekurzív hívásnál átadja az eddigi gyakori elemeket is így bővíti a gyakori elemhalmazokat. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 24 / 26

Tartalom 1 Bevezetés 2 Az algoritmusok Egy speciális eset Apriori Eclat FP-Growth 3 Az algoritmusok értékelése Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 25 / 26

A teljesítmények elemzése 2004-ben rendeztek egy versenyt az GYEK algoritmusok összehasoĺıtására. Sebesség tekintetében az Eclat és FP-growth módosításai vitték a pálmát. Memórihasználatban az Apriori volt a nyerő. Bankó Tibor (BME) Gyakori elemhalmazok June 9, 2010 26 / 26