Adatbányászat Blog

Az Adatbányász Blogon a dmlab szakértőinek írásait olvashatod a big data és data science területéről.

dmlab.hu - Big data és data science tanácsadás
"Ha örülsz, hogy fejedre nőttek az adatok."

Keress minket bátran:
- Nagy-Rácz István +36704595669
- Gáspár Csaba +36208234154
- info@dmlab.hu

2010.11.11. 12:17 Prekopcsák Zoltán

Adattisztítás, előfeldolgozás RapidMiner alapokon

Címkék: rapidminer

RapidMiner kapcsán gyakran emlegettük az elmúlt években, hogy az adatok előfeldolgozására nem annyira kényelmes, nagyon ismerni kell hozzá a szoftvert, hogy hatékonyan tudjunk vele dolgozni. Ezen valamennyit javítottak a februárban megjelent 5.0 verzióban és azóta is csiszolgattak rajta, így most az 5.0.10 verziót tekintjük át az előfeldolgozási képességek szempontjából.

A metaadat-kezelésnek köszönhetően a változókat kényelmes varázsló felületeken, listákból választhatjuk ki, azaz jelentősen lecsökkent a magyarázat nélküli szabad szövegdobozok száma. A súgó is sokat javult, szinte minden paraméterhez könnyen érthető magyarázat tartozik. Néhány esetben (pl. ExampleFilter feltétel szerinti szűrésénél) azonban még mindig egy szövegdobozzal találkozunk, ahol néha kísérletezgetnünk kell, hogy eltaláljuk a megfelelő változónevet és szintaxist. Sokat segít azonban, hogy szinte minden mezőben használhatunk reguláris kifejezéseket, és erre egy barátságos varázsló ablakot is kaptunk, ahol röviden leírják a reguláris kifejezések szintaxisát. Ez különösen akkor előnyös, hogyha sok attribútummal dolgozunk.

A többi szoftverhez képest rengeteg előfeldolgozó operátort találunk az alapcsomagban. Gyakran szembesülök azzal, hogy kitalálom hogyan lehet egy előfeldolgozási lépést több elemi előfeldolgozási operátorból összerakni, de végül kiderül, hogy van egy beszédes nevű operátor, ami egymaga megcsinálja a szükséges funkciót. Persze tekinthetjük úgy, hogy ezzel redundancia került a szoftverbe, de az elemzésem ezáltal átláthatóbb és hatékonyabb lehet.

Az átláthatóságot és a hatékonyságot segíti még, hogy a köztes adathalmazokat, részeredményeket remekül lehet a Store és Load funkciókkal tárolni. Ez garantálja, hogy amikor akár egy másik folyamatban visszaolvassuk az adathalmazt, akkor a változók típusa és szerepe biztosan megmarad és teljesen ugyanolyan formában kapjuk az adatokat, ahogy eltároltuk őket. Ez egy CSV fájl kimentésénél természetesen nem teljesülne a metaadatok hiánya miatt. Ráadásul a tapasztalataim szerint ezeket Store-Load állományokat sokkal hatékonyabban kezeli a RapidMiner, mivel nincs szükség az adatfájl újbóli parse-olására.

Természetesen még vannak hátrányok, mint például a dátumra való szűrés lehetőségének hiánya. Erre az a hivatalos megoldás, hogy számformátumba kell alakítanunk a dátumváltozót és utána szűrhető, de ez meglehetősen körülményes, és nem is egyértelmű az első alkalommal. További probléma, hogy a RapidMiner nem minden operátora van hatékonyan megvalósítva. Egy konkrét példa a RemoveDuplicates, amely nevének megfelelően a duplikált sorokat távolítja el az adatbázisból. Miután egy 70 ezres adatbázisra közel 10 percig futott, megnéztem a forráskódját és azzal szembesültem, hogy a duplikátum-keresés során minden adatsort minden másik adatsorral összehasonlít, azaz négyzetes algoritmust futtat. Aki ismeri a UNIX rendszereken jelenlévő hasonló szerepű uniq parancsot, az tudja, hogy ezt hatékonyabban is meg lehet valósítani az adathalmaz rendezésével, mert ezután csak az egymást követő sorokat kell megvizsgálni egyezés szempontjából. Ez N x N helyett N x log(N) komplexitású megoldás, ami a 70 ezres adathalmaz esetén 10 perc helyett néhány másodperces futásidőt eredményezett volna.

Ahogy látható, a RapidMiner sem tökéletes (ahogy a többi szoftver sem), de kezdi megközelíteni a fizetős szoftverek előfeldolgozási képességét, modellezésben pedig már eddig is előttük járt. Aki pedig nem ijed meg egy kis Java programozástól, az az észlelt hibákat kijavíthatja, vagy akár plusz funkciókat építhet a szoftverbe.

UPDATE: Új kényelmi funkciók és varázslók jönnek az 5.1 verzióban, további részletek a RapidMiner blogján.

Ti milyen előfeldolgozási problémába futottatok már bele a különböző adatbányászati szoftvereknél? Volt olyan feladat, amit nem tudtatok benne megoldani? Milyen operátort hiányoltok ezekből a szoftverekből?

6 komment

A bejegyzés trackback címe:

https://adatbanyaszat.blog.hu/api/trackback/id/tr432441432

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

_Hose_ 2010.11.11. 16:11:48

Szia!

Nem mellékelsz a post-hoz 1-2 screen shot-ot? Nekem biztosan megkönnyíté, hogy elképzeljem.

Prekopcsák Zoltán · http://prekopcsak.hu 2010.11.11. 16:31:07

Külön-külön a bekezdésekhez nem akarok screenshotot rakni, de egy általános adattisztítási struktúrát kiraktam. Persze az egyes operátorok beállításait nehéz így szemléltetni.

_Hose_ 2010.11.12. 12:48:49

Máris jobb :)
Köszi.

_Hose_ 2010.11.15. 09:45:11

Most, hogy másodjára is végigolvastam a cikket, rájöttem, hogy kérdés is van benne, szóval:
Nem adatbányászati projekt, és nem is adatbányászati szoftver, de ki tud verni a hideg verejték, amikor a különböző karakterkódolási mizériák miatt egy szó 30 felé módon van leírva, mert a közvetlen forrásrendszer is még vagy 10 másik rendszertől kapja az adatot.
Aztán ebből riportolj, meg elemezz. Brrrr.

Prekopcsák Zoltán · http://prekopcsak.hu 2010.11.15. 10:56:19

Na igen, ezt én is gyűlölöm. :)
Ha egy forrásból csak egyféle kódolás jön, akkor a forrásokat egy kódolásra hozva ez még némi szívással megoldható, de ha egy forráson belül is többféle kódolás van, az maga a pokol. :)
Van egy friss szoftver ami talán megbirkózik ezzel, ki kell próbálnom, hamarosan írunk róla a blogon.