bevezetés az Üzleti adatbányászatba spss modeler...
TRANSCRIPT
DR.BALOGHIMRE
BevezetésazÜzletiAdatbányászatbaSPSSModeleralkalmazásával
2019.
TARTALOMJEGYZÉK
BEVEZETÉS 5
1.ISMERKEDÉSAMODELERREL 7
2.ADATFORRÁSOKHASZNÁLATA 30
3.REKORDMŰVELETEK 50
4.MEZŐMŰVELETEK 62
5.REKORDÉSMEZŐMŰVELETEK,VIZUALIZÁCIÓ 76
6.ADATFORRÁSOKEGYESÍTÉSE 92
7.KLASZTEREZÉS 106
8.NEURÁLISHÁLÓ 134
9.DÖNTÉSIFA 160
10.WEBESADATBÁNYÁSZAT 188
Bevezetés
Ajegyzetbevezetéstadazüzletiadatelemzéspiacvezetőszoftverénekhasználatába.AzIBMSPSSModeler-nek jelenleg a 14.1-es változata a legújabb, de a jegyzetbennéha a13.0 változatra és a 12-es változatra is hivatkozunk. A 12-es változat korábbi neveClementinevoltilletvea13.0-asváltozatátmenetilegaPASWModelernévenszerepelt.2010elejeótaegységesanévhasználat, azótaugyanisakorábbiSPSS Inc.beolvadtazIBM-be.
A jegyzethez szervesen hozzátartoznak a példa streamek és példa adatforrások,amelyekrefolyamatosanhivatkozik.
Az első változat összeállításában és kipróbálásában nagy segítséget nyújtott azAlkalmazott Informatika és Információmenedzsment Tanszék két korábbimunkatársaGrujberZoltánésZsírosPéter,köszönetilletiezértőket.
UgyancsakköszönetilletiTarrMártát,akiakéziratotgondozta.Szombathely-Budapest2010. BaloghImre
1.IsmerkedésaModelerrelAprogramablakfelépítése:
Azablakrészei:
• Menüsor• Eszköztár• Munkaterület• Nodepaletta• Managerspaletta• Projektpaletta
Apalettákkülön-különaVIEWmenüpontalattki-bekapcsolhatók.
Streammegnyitása
Gyakorlat
HasználjaaF I L E menüO P E N S T R E A M parancsát,ésnyissamegaDemo.strállományt!
Aműveletvégrehajtásautánazalábbiábralátható:
Amunkaterületenamegnyitottstreamfelépítéselátható.Vegyüksorraaképenláthatóelemeketésjelentésüket:
• Ahatszög,kör,háromszögésnégyzetalakúikonokatnode-naknevezik.• Anode-okatösszekötőfeketenyilakazadatokáramlásánakirányátjelzik.
AjobboldaliManagerspalettaStreamslapjánamegnyitottStream-eklistájalátható:
Gyakorlat:
VáltsonátaStream1–stream-re,majdvisszaaDemostream-re.
ZárjabeaStream1stream-et.
Azegérreljelöljekiazegyesnode-okat(egykattintás).
„Fogd-vidd”művelettelrendezzeátanode-okatamunkaterületen.
Bármelynode-ontörténőduplakattintássalnyissameganodebeállításaittartalmazóablakot.
NodetípusokAnode-okaprogramablakaljántalálhatónodepalettárólhelyezhetőkelastream-ben.
HaaNodepalettanemlátható,kapcsoljabeaV I E W menüpontN O D E S P A L E T T E parancsával!
ApalettaaFavoritesfülönkívülhattovábbifülöncsoportosítvatároljaafelhasználhatónode-okat:
• Sources• RecordOps• FieldOps• Graphs• Modeling• Output
Gyakorlat:
Keressemeg,hogyamunkaterületen láthatóstream-benlévőegyesnode-okmelyfülöntalálhatókmeg!Figyeljemegazegyesnode-okalakját!(hatszög,kör,stb.)
A Sources fülön lévő (kör alakú) node-ok különböző adatforrásokból származó, táblázatos elrendezésűadatokbeolvasásáraszolgálnak.
A Record Ops fülön lévő (hatszög alakú) node-ok alkalmazásával táblázatok soraival végezhetőkműveletek.
A Field Ops fülön lévő (hatszög alakú) node-ok alkalmazásával táblázatok oszlopaival végezhetőkműveletek.
AGraphsfülönlévő(háromszögalakú)node-okkalazadatokgrafikusanábrázolhatók.
AModeling fülön lévő(ötszögalakú)node-okmatematikaimodellezőalgoritmusokvégrehajtását tesziklehetővé.
AzOutputfülönlévő(négyzetalakú)node-okpedigazadatokkülönbözőformábatörténőexportálásáraképesek.
ADemostreamértelmezése,futtatásaFontos,hogy:
• Köralakúnode-bólcsakkiindulhatnakanyilak.• Háromszögésnégyzetalakúnode-bacsakmutathatnakanyilak.
A hatszög alakú node-ok a beérkező adatokon valamilyen oszlop vagy sor műveletetvégeznekel,majdbelőlükazadatfolyamtovábbkapcsolhatómásnode-okirányába.A legtöbb hatszög alakú node csak egy helyről fogadhat adatokat (egy nyíl mutathatrájuk).KivételaRecordOpsfülöntalálhatóMergeésAppendnode.Bármelykör,vagyhatszögalakúnode-bóltöbbnyíliskiindulhat,vagyistöbbegymástólfüggetlenágonisfolyhatazadatoktovábbifeldolgozása.
Gyakorlat:
ADemo stream több olyannode-ot is tartalmaz, amely egy egy adatfeldolgozási folyamat végét jelenti.Keressemegezeketanode-okat.
Keressemeg,hogymelyiknode-bólindulhatkiazadatfeldolgozófolyamat.
Anode-ontörténőduplakattintássalnyissameganodebeállításaittartalmazóablakot.
Azablakaljántalálhatófülekazegyesbeállításcsoportokközöttiválthatásraszolgálnak.
Lehetőségek:
• Ezzel a node-dal olyan szövegfájlokból olvas be adatokat,melyek egy-egy soramegfelelabeolvasandótáblázategysorának,ésasorokonbelülazoszlopértékekvalamilyenhatárolókarakterrelvannakelválasztva.
Gyakorlat:
KeressemegazENG-HUN.txtfájlt,ésnyissamegajegyzettömbben.
Figyelje meg, hogy mi lehet a határolókarakter a sorokon belül, valamint vannak-e felesleges szóközkarakterekazadatokközött.
Ellenőrizze, hogy a File rovatban helyesen van megadva a fájl elérési útja. Ha nem, akkor adja megpontosan.
• ADELIMITERS rovatbanadhatómeg,hogyaszövegfájlonbelülazadatokmilyenhatárolókarakterrelvannakelválasztva.Kettőjelölhetőbe:ANEWLINE asorokatválasztjael,a>pedigasorokonbelülazoszlopokat.
• A STRIP LEADANDTRAIL SPACES rovatban aBOTH megadásával a beolvasottadatokmindkétvégérőleltávolíthatókafeleslegesszóközkarakterek.
VáltsonátaFilterfülre!
• Ezenafülönaztállítottukbe,hogyatovábbiakbanaszövegfájlbólbeolvasottkétoszlopnak(változónak)milegyenaneve.
MindenegyesnodebeállításaittartalmazóablakonmegtalálhatóazANNOTATIONS fül.
VáltsonátazAnnotationsfülre!
• Ezenafülönnevetésleírástadhatunkanode-hoz.
Atovábbiakbanfigyeljenazegyesnode-oknálerrealehetőségre.Sokesetbenrészletesleírásttalálhatanodecéljáról,működéséről.
Zárjabeabeállításablakot,azOKmegnyomásával,hogyamódosultbeállításaitelmentse!
Most, hogy láttukmilyen adatokkal is dolgozik a stream-ünk, ugorjunk egy nagyot, ésnézzükmegmilyeneredményeketadnakazoutputnode-ok.AzegyikleggyakrabbanhasználtoutputnodeaTABLE .Ebbőljelenlegegyettartalmazastream,közvetlenülasourcenodunkhozkapcsolva:
A node eredményeinek megtekintéséhez futtatnunk kell a node-ot. Ezt a következőmódokontehetjükmeg:
• Megnyitjuk a node beállításait tartalmazó ablakot, ahol is azEXECUTE gombrakattintunk:
• A node-on történő jobbklikkes helyi menüből kiválasztjuk az Execute
menüpontot:
• Kijelöljükanode-ot,majdleütjükaCTRL+E billentyűkombinációt.
• Kijelöljükanode-ot,ésazeszköztárEXECUTESELECTION parancsárakattintunk:
Haazeszköztáronasimazöldháromszög ikonrakattint,akkorazadottstreamösszesoutputnode-játlefuttatjaegyszerre!
Azoutputnode-okfuttatásánakeredményemindigújablakbannyílikmeg.
FuttassaaTableoutputnode-ot!
Eredménykéntvalamihasonlótkelllátnunk:
Figyeljemeg,hogyaManagerspalettaOutputsfülénismegjelentazeredmény!
Ha az output eredményét tartalmazó ablakot bezárja, az output fülön továbbra ismegmaradabejegyzés,melyreduplánrákattintvaismétmegnyithatjaazt.Ha ismételten futtatja a node-ot, akkor az egy újabb eredményhalmazt generál, melyugyancsak megjelenik az output fülön, az előző futtatás eredményétől függetlenül.Hiszenlehetséges,hogyközbenpéldáulasourcenodebeállításainakmódosításamiattakéteredményhalmaznemisegyezikmeg.
Azoutputfülönlévőlistábólbármelyikelemettörölheti,elmentheti,harákattintazegérjobbgombjával,ésamegfelelőparancsotkiválasztja!
Haazoutputnodeeredményéttartalmazóablakotúgyzárjabe,hogyazeszköztárontalálható ikonrakattint,akkoregyúttalazoutputlistárólistörliabejegyzést!
ATablenode-ot leggyakrabban arrahasználhatjuk, hogy a streamkülönbözőpontjainelhelyezve részeredményeket jeleníthessünk meg, ellenőrizhessük az addig felépítettműveletekeredményeit.
Futtassaleastreamtöbbioutputnode-játis!
Nézzemegazegyesnode-okleírásait!
Próbáljaértelmezniazegyesnode-okbeállításait!
Amint az az eredményekből látható, a stream feladata a két nyelv szókezdő-betűieloszlásainakavizsgálata.
ADemostreamműködéseA következőkben részletesen végighaladunk a stream-et alkotó node-ok szerepén,beállításain,hogyastreamműködésétteljesegészébenvilágosanlássuk.AHUN-ENG.txtfájltbeolvasósourcenodeutánközvetlenülegyDERIVE nodetalálható,aFIELDOPS nodepalettáról:
ADerivenode-dalújszámítottoszlopot,vagyoszlopokathelyezhetünkelazadattáblánkban.
Anodefeladata,hogyhozzonlétreegyújoszlopotELSOBETU_MAGYARnéven,éstöltsefelamagyarszavakkezdőkaraktereivel.
AnodebeállításainakmegtekintéséhezkattintsonduplánazElsobetu_magyarnode-ra!
Megjelenikanodetulajdonságpanelja:
Aképletekösszeállításábanjelentőssegítségetkaphatunkaszámológépikonratörténőkattintással:
Akifejezés-szerkesztőhasználatávalkapcsolatosgondolatok:
• Azablaktetejéntalálhatóbevitelimezőbenaképletet„kézzel”isszerkeszthetjük.A bevitt képlet hibáinak a kijavításához, vagy csak egyszerűbb módosításokelvégzéséhezezazajánlottmódszer.
• Ha egy konkrét feladatra keresünk függvényt, akkor szűkítsük a megjelenítettfüggvénylistátafüggvénykategóriájánakkiválasztásával.
• Akijelöltfüggvényleírásaelolvashatóazablakalján.
• Duplakattintással a függvényeket és az oszlopneveket elhelyezhetjük aképletünkben.
• AzelkészültképletetaCheckgombbalellenőrizhetjük,hogyszintaktikaihibáktólmentes-e.
• Abeírtkifejezésekbenaprogramkülönbségetteszakisésnagybetűkközött.
AClemetinekifejezésekakövetkezőelemekbőlépülhetnekfel:
• Értékek(konstansszövegek,számok,dátumok,stb.),
• Mezőnevek(oszlopnevek),
• Operátorok(műveletijelek),
• Függvénynevek.
Térjünkvisszaanodeáltaltartalmazottképletre:U P P E R T O L OWER ( S T A R T S T R I N G ( 1 , M A G Y A R ) ( 1 ) )
Aképletmegértéséhezmegkellismerkednünkkétszövegkezelőfüggvénnyel,valamintaClemetinekülönbözőadattípusaiközülkettővel.
• Szövegadattípus:
Az adattáblánkbanmeglévő két oszlop (magyar, angol) szöveg típusú adatokattárol. Képletekben, ha konstans szöveget szeretnénkmegadni, akkor azt duplaidézőjelekközézárjuk,mintpéldául:„Alma”.
• Karakteradattípus:
Gyakorlatilag egyetlen karakter tárolására képes. Nem egyezik meg egyegykarakteres,deszövegesadattípusúértékkel.Képletekbenkonstansértékkéntegyszeresidézőjelekközézárvajelöljük,mintpéldául:`R`.FONTOS! Nem ’ jelek közé, hanem ` jelek közé zárjuk. Magyarbillentyűzetkiosztásesetén:AltGr+7.
Ha a képletünkben egy oszlopban letárolt szöveg, vagy bármely kifejezéseredményeképpvisszaadottszövegtípusúértékegyetlenkarakteréreszeretnénkhivatkozni (karakter adattípusként), akkor azt a következő szintaktikávaltehetjükmeg:OSZLOPNEV(I) ,aholiazadottszövegi-edikkarakterétjelenti.
• Uppertoloverfüggvény:
Karakteradattípusúparamétertvár,éskisbetűsrealakítja.
• Srtartstringfüggvény:
Egytetszőlegesszövegelsővalahánykarakterétadjaeredményül.Mindezek után már nem nehéz megfejteni a képlet eredményét: a magyar szó elsőkarakterelesz,nagybetűformájában.
Kattintson az annotation fülre a node tulajdonságablakában. Ott is megtalálja a képlet tömörmagyarázatát!
Értelmezzeakövetkezőnodeműködését!(Elsobetu_angol)
KövetkezikaFilternode:
Ez a node is a Field Ops palettáról származik. Általánosan a következő célokrahasználjuk:
• Oszlopokátnevezése.• Oszlopokkikapcsolásaatovábbiadatfolyamból.
Hamegnézzükanodebeállításait,akkortisztánláthatjuk,hogyazadattáblaeredetikétoszlopát, amelyek a szavak teljes alakját tárolták, kizártuk a további feldolgozásból.Ennek két célja van: egyrészt ne terhelje feleslegesen a rendszert a továbbiszámításoknál, másrészt tisztább és áttekinthetőbb a további munka, ha aképletszerkesztőbennemislátjukmárezeketazoszlopokat.
Ettől a node-tól kezdve az adatfeldolgozó folyamatunkat szétválasztjuk két irányba,amelyekkésőbbismétegyesülnekmajd,deezmégráér…
Az egyik ág amagyar kezdőkarakterek eloszlásával foglalkozik,míg amásik az angolkezdőbetűkkel.
Mindkétágelsőnode-jaegySelectnode,aRecordOpspalettáról:
ASelectnodeazadattáblasorainakaszűréséreszolgál.Segítségévelbizonyosfeltételekalapjánsorokatzárhatunkkiatovábbiadatfeldolgozásból.Miértismerültfel,hogyzárjunkkisorokat?Könnyenválasztkaphatunk,hamegnézzük,hogy a stream-ünk eddigi részemilyen eredményeket ad. Ehhez a következőre lenneszükség:
HelyezzünkelegyTable(output)node-ota node-unkután,ésfuttassukleazeredményekmegtekintéséhez!
Új node-ot a következő módokon helyezhetünk el a munkaterületen szerkesztettstream-ben:
• Duplánrákattintunk:
Figyeljükmeg, hogy noha amunkaterületen lévő node-ok közül akár többet iskijelölhetünk egyszerre, akkor is csak egy aktive node van. Az amelyiketszaggatott keret vesz körül. Ha duplakattintással helyezzük el az új node-ot,akkorazautomatikusankapcsolódnifogazéppenaktuálisnode-hoz.
• Fogd-viddművelet:
Ilyenkor utólag kézzel adhatjuk meg, hogy melyik node-hoz kapcsoljuk azújonnanelhelyezettnode-ot.
Astream-benelhelyezettnode-okattörölhetjükkijelölésükután,példáulaDELbillentyűleütésével.
Node-okat„kézzel”egymásutánkapcsolniakövetkezőmódonlehet:
• Jelöljükkiakapcsolnikívántnode-ot.• Üssük le az F2 funkcióbillentyűt, vagy a node helyi menüjéből válasszuk a
Connectparancsot.• Kattintsunkakapcsolnikívántkövetkezőnode-ra.
HasikerültaTablenode-otelhelyezniamegfelelőhelyen,akkorakövetkezőhözhasonlóképetkelllátnunk:
HalefuttatjukaTablenode-ot,akkorpedigezazeredménykellmegjelenjen:
Innen már tisztán látható, hogy miért is lenne hasznos szűrni a sorokat. Hiszenegyáltalánnemérdekesekelemzésünkszempontjábólaszámjegyek.
BármelynodeutánkapcsolhatunkközvetlenülegyTableoutputnode-ot,hogyazaddigirészeredményeketmegtekintsük.
NézzükakkoraSelectnodebeállításait:
Ahogy az a beállításokon látszik, jelen esetben megtartjuk azokat a sorokat, ahol afeltételigaz.
AbeírtképletmagyarázatáhozkattintsunkazAnnotationfülre!
Innenastreamismétszétágazik.Pontosabbanfogalmazva,azegyikágnemis igaziág,csupánegyDistributionnodeaGraphspalettáról:
Futtassaanode-otésértelmezzeazeredményt!
Nézzemeganodebeállításait,ésértelmezzealátottakat!
Nézzük tovább amásik ágműködését. Ezt az ágat az az ötlet hívta életre, hogy a kétnyelvkezdőbetűinekazeloszlásátegyközösgrafikononjeleníthessükmeg.Azt, amit a Distribution node elvégzett, nevezetesen, hogy betűnként csoportosítvakiszámoltaacsoportokelemszámát,elvégezhetjükegymásiknode-típussalisúgy,hogyabból további számításokat eszközölhetünk. A stream-ben így egy Aggregate nodekövetkezikaRecordOpspalettáról:
AzAggregatenodefőfeladata,hogyatáblábanlévősorokbólcsoportokatképezzen,ésacsoportokra olyan alapstatisztikákat számoljon, mint például: minimum, maximum,átlag,stb.értékeegyadottmezőnek,oszlopnak.Acsoportosításmindenesetbenasorokvalamelyoszlopban,vagyoszlopokbanfelvettazonosértékénalapul.
NézzemegazAggregatenodebeállításait!
RakjonbeazAggregatenodeutánegyTableoutputnode-otisésfuttassaarészeredménymegtekintéséhez!
A következő node, mind a magyar, mind az angol ágban már az ismert Filter node.Feladataamunkatáblakétoszlopánakátnevezése.
NézzemegaFilter node-okbeállításait.
Megfigyelheti, hogy mindkét ágon az első betűt tartalmazó oszlopot Elsobetu névreneveztükát.Ennekoka,hogyhaakétadathalmaztegyesíteniszeretnénk,akkorezekazoszlopokértékeialapjánlehetakéttáblasoraitpárosítani.AzegyesítéstelvégzőMergenodefeltételezi,hogyazösszekapcsolástvégzőoszlopokazonosnevűek:
AMergenodeaz egyikolyan, amely többbemenettel rendelkezhet.A feladata, hogyabemeneteihez kapcsolt táblákból a sorok egymáshoz rendelésével egy nagy közöskimenetitáblátállítsonelő.
NyissamegaMergenodebeállításait!
A Merge fülén állíthatjuk be a forrástáblák egyesítésének a módját. Jelen esetben azegyesítés kulcs (Keys) értékek egybeesésén alapul. A kulcsként használt oszlop neve:Elsobetu.Afullouter join(mindkét irányúlazaösszekapcsolás)azteredményezi,hogymindkéttáblábólkerüljenekbeazokasorokisazeredménybe,aholamásiktáblanemrendelkezikazadottkulcsértékkel.
Vegyeészre,hogyapanelrendelkezikegyFilterfüllelis.Gyakorlatilagennekanode-nakrészeegyFilter node is, így egyúttal a kimeneti oszlopok nevei is megadhatók vagy megjelenítésükkikapcsolható.
KapcsoljonaMergenodeutánegyTablenode-ot,ésfuttassa!
Azeredménymagáértbeszél:
Jól látható, hogy azon karakterek mellé került $NULL$ érték, amelyek csak az egyiktáblábanfordultakelő.A$null$értékismeretlen,hiányzóértéket jelöl,ésnemegyezikmegamatematikainullával.
Természetesenszerepelhetnea0számértékisegytáblában.Ilyenkorazegyesítésutánisszerepelnifog,mint0érték.Deaznema$null$-alegyezikmeg,mertazismert.Tudjuk,hogynulla.
Mielőttgrafikontkészítenénkazadatainkbólezeketa$null$értékeketszerencséslennekicserélniamatematikai0-ra.EztafeladatotlátjaelmindkétoszlopraaFillernode:
Nyissameganode-okbeállításait,ésértelmezzeabeállításokat!
Innenmár egyenes azút. Csupánkétnode vanhátra.Az egyik egy grafikonon jelenítimegadarabszámokalakulását,mígamásikazeddigieredményeketegyExcel táblábamentiel.
Akétnodebeállításaimeglehetősenmagukértbeszélnek!Értelmezzeőketönállóan!
AzExceloutputnodeelébeillesztettTypenode(FieldOpspalettáról)egyetlencéltszolgál.BiztosítjaazExcelnodeszámáraamentendőadatoktípusainakmegadását.(szöveg,szám,stb.)
ÖnállófeladatHamegnézzük az eredményeket grafikonon, akkor az tűnik ki nagyon, hogy az angolszavaknál túlnyomó többséget élveznek a t betűvel kezdődő szavak, míg a magyaresetébenmeglehetősenegyenletesazeloszlás:
Alakítsukátastream-etúgy,hogyneaszókezdőkarakterekalapjánszámoljon,hanemaszavakmásodikkarakterétvegyefigyelembe!
Hasonlítsukösszeazígynyertgrafikontajelenlegivel!
2.AdatforrásokhasználataAz alábbiakban megismerkedünk a Sources Node-ok közül talán a háromlegáltalánosabbanhasználhatónode-dal.
Var.Filenode
Ezzelanode-dalmártalálkoztunkazelőzőgyakorlatonis,amikorazangol-magyarszótártolvastukbevele.
Anode-daltagoltszövegfájlokbólolvashatunkbeadattáblákat.Aszövegfájlokonbelülalegáltalánosabbanhasználttagolókarakterek:
• Vessző• Pontosvessző• Tab• Szóköz
Ezeken túl minden esetben a beolvasandó táblázat sorait a sorvége jel határolja aszövegfájlonbelül.Tipikusfájltípusatxt-nkívülmégacsv(ComaSeparatedValue–VesszővelElválasztottÉrtékek).
KeressemegésnyissamegajegyzettömbbenazA D A T O K . T X T fájlt!
Hasonlóképetkelllátnunk:
Sejthető,hogyadatainkháromoszlopbavannaktagolva.Devajonmiahatárolókarakterazadatokközött?Haanyílbillentyűkkelmozgunkasorokonbelül,akkornyilvánvaló,
hogyazoszlopokközöttitávolságoknemszóközkarakterekkelvannakkitöltve.Sejthetőmár, hogy a határolókarakter az értékek között a TAB . Hogyan ellenőrizhetnénkhipotézisünk? Nyissuk meg a fájlt egy olyan szövegszerkesztő alkalmazásban, amelyképesaláthatatlanvezérlőkarakterekmegjelenítésére,példáulaMicrosoftWord-ben:
Anyomtatásbanláthatatlankarakterekmegjelenítésénekbekapcsolásávalegyértelműenlátszik,hogyvalóbanaTABahatárolókarakter.
OlvassukbeaModeler-benazadatainkat:
AModeler-enbelülnyissonegyújstream-et!
Helyezzenelastream-benegyV A R . F I L E node-ot!
Nyissameganodebeállításait!
Haeddigeljutottunk,akövetkezőablakotláthatjukaképernyőn:
AzablaktetejénláthatóF I L E rovatbatallózzukbeazA D A T O K . T X T állományt!
Arovatalattláthatópanelbanmegisjelenikafájltartalma:
A kapcsolóalapállapotátőrizzükmeg,hiszenebbenazesetbenaszövegfájlelsősoraabeolvasandótáblázatoszlopainakaneveittartalmazza.
VáltsunkátazablakaljánaD A T A fülre,hogyellenőrizzükabeolvasottadattáblaoszlopait!
Láthatóan valami még nem tökéletes. A három oszlop helyett egy oszlopként látja atartalmat.Sejthető,hogyazoszlopokértékeiközöttihatárolókaraktermegadásánálvanaprobléma.
VáltsunkvisszaaF I L E fülre!
Megisvanaproblémaoka:
Amintazlátható,TabhelyettaComa(vessző)vanmegadvahatárolónak.
JelöljükbeaC O M A helyettaT A B -ot!
VáltsunkvisszaaD A T A fülre,hogyellenőrizzükamódosításhatását!
Kezdenekadolgokahelyükrekerülni!Bármégvanegyapróprobléma.ADATA fülön figyelemmel kísérhetjük a beolvasandó tábla oszlopaiban lévő értékekadattípusait. Amint az a képen is látható a Modeler a Nev, a Szuldat és a Telepulesoszlopokat szöveges adatként tárolná, míg az Irsz mező értékét egész számként.Problémaaszületésidátumszövegkénttárolásával,ésazirányítószámegészszámkénttörténőtárolásávalvan.
ÁllítsukátaSzulDatésazIrszmezőkadattípusátdátumraésszövegre.
Az Override jelölőnégyzet bepipálásával jelezhetjük, hogy az adott oszlop adattípusátfelülbíráljuk:
Az INPUT FORMAT oszlopban szükség szerint gondoskodhatunk a beolvasott értékekmegjelenítésénekmódjárólis:
VáltsonátaT Y P E S fülre!
A FIELD oszlop mutatja a beolvasandó mezők nevét és tárolási adattípusát. A TYPE oszloppedigastatisztikaiváltozótípusát.Akövetkezőértékeketállíthatjukittbe:
• Range:
Egészvagyvalósszámértékeknél,valamintdátumoknálhasználható.
• Discrete:
Szövegestípusúértékekeseténhasználatos,amikorapontosszámaalehetségeskülönbözőértékekneknem ismeretes. Igazábólegyabsztraktadattípus,amiaztjelzi,hogymégnemismerünkmindenlehetségesinformációtatároltadatainkról.Ha egyszer beolvassuk az adatainkat átalakul Flag, Set, vagy Typeless értékkéattól függően, hogymekkora amaximálisanbeállított Set Size (halmazméret) astreamtulajdonságlapján.
• Flag:
Két különböző értéket tartalmazó változók esetén használjuk. Lehetnek ezekszövegek,számok,deakárdátumokis.(pl.:(1;2),vagy(férfi;nő),stb.)
• Set:
Többkülönbözőérték leírására szolgál, amelyekmindegyadotthalmazelemeiközülkerülnekki.Például:(kicsi;közepes;nagy).
• OrderedSet:
Többkülönbözőérték leírására szolgál, amelyekmindegyadotthalmazelemeiközül kerülnek ki, és van értelme az adatok sorbarendezésének. Például:érdemjegyek.
• Typeless:
Mindenegyébesetbenhasználható,vagyhaaSet típuseseténahalmaz túl sokelemettartalmazna.
KattintsonaR E A D V A L U E S gombra,azadatokbeolvasásáhozésazadattípusokbeállításához.
Azeredményenlátható,hogynemtudtahalmaztípusúkéntkezelnisemanevet,semazirányítószámot, sem a települést. Mint már olvastuk, ez függhet a streamtulajdonságlapjánbeállítottmaximálishalmazmérettől.
AzO K –rakattintvazárjabeazablakot!
AF I L E menübőlválasszakiaS T R E A M P R O P E R T I E S … parancsot!
Mint látható aMAXIMUM SET SIZE értéke alapból 250-re van állítva. Ezt az értéketszükség esetén növelhetjük, vagy ki is kapcsolhatjuk a maximumot a beállítás előttijelölőnégyzetkiürítésével.
Ebben az esetben most tekintsünk el a módosítástól, mert amennyiben nem akarjuk adataink példáultelepülésnévszerinticsoportosításátakésőbbiekbenkihasználni,nincsrászükségünk,hogyaClemetineSettípusúkéntkezeljeazoszlopértékeit.
ZárjabeazablakotaC A N C E L -rekattintva!
Teszteljükleanode-unkműködését.
KapcsoljonanodeutánegyTableoutputnode-ot,ésfuttassa!
Amintláthatóeddigimunkánkgyümölcsebeérett.
Próbáljukmegkinyerniazegyestelepülésekrenézveazadatainkeloszlását.
KapcsoljonasourcenodeutánegyD I S T R I B U T I O N node-otaG R A P H S palettáról!
Nyissameganodebeállításait!
Ha megpróbáljuk kiválasztani a Field rovatban, hogy mely oszlop értékei alapjánszeretnénkazeloszlástmegkapni,akkorsajnálatosmódonüreslistávaltalálkozunk.
Miislehetennekazoka?Hakitalálta,nemiskelltovábbolvasni!J
Azeloszlásalapjacsakisset,ésflagtípusúmezőlehet!
NyissamegaS T R E A M P R O P E R T I E S ablakotéskapcsoljakiaMA X I M U M S E T S I Z E opciót!
Nyissamegismétasourcenodebeállításait,azonbelülisaT Y P E S Fület.
Atípusokismételtkiértékeléséhezújrakellolvastatniazadatokat.
KattintsonaC L E A R A L L V A L U E S gombra,majdutánaaR E A D V A L U E S gombra!
Akapotteredménytlátvaazakérdésadódik,hogyaNevmezőmiértmaradtTypeless?
HaismétmegnézzükaStreamPropertiesablakot,
akkor azt látjuk, hogy még egy beállítás van, amely korlátozza a halmazok méretét.Részletesebbinformációkértnyissamegasúgót!
TérjünkvisszaaDistributionnode-hoz.Nyissameganodebeállításait!
Amintazlátható,mársemmiakadályaanodelefuttatásának.
Futtassaanode-ot!
Havégiggörgetiatelepüléslistátnagyonszembetűnő,hogymennyiresokhibátistartalmazazadatállomány.Ezekenahibákonatovábbiakbannagyvonalúanátsiklunk.
Bármár ismerjük a szerepét, demegkell említenünka sourcenodebeállításai közöttmegtalálható Filter fület is, ahol átnevezhetjük a beolvasott oszlopokat, valamintkikapcsolhatjukazokat,amelyekrenemleszszükségünk.Akövetkezőkbenugyaneztazadatállománytolvassukbe,kéttovábbiformátumból,kéttovábbisourcenodesegítségével.
Excelnode
Helyezzenelastream-benegyE X C E L node-otisaS O U R C E S palettáról!
Nyissameganodebeállításaittartalmazóablakot!
AFIXEDFILE node-hozképesteltérést csakaDATA fülbeállításainál tapasztalhatunk(filefülnincsis).Ezlogikusis,hiszenazadatforrásfizikaijellemzőintúlmárugyanúgykell,hogyállíthassukatípusokat,ésamezőkátnevezését,elrejtését.
AzI M P O R T F I L E rovatbanválasszakiazA D A T O K . X L S fájlt!
Meg kell adnunk továbbá, hogy az Excel munkafüzet mely munkalapja tartalmazza abeolvasandó adattáblát. Ezt megadhatjuk a munkalap sorszámával (INDEX) , vagy amunkalapnevénekkiválasztásávalis(NAME) .
HamegnyitjukazExcelbenamunkafüzetet,hogyafelépítésétmegnézzük,nefelejtsükelbezárni,mielőttanode-otfuttatnánk.HamegvannyitvaExcelben,akkorazolyanmódonzároljaafájlt,hogyaModelernemtudhozzáférni,mégolvasásrasem.
AWO R K S H E E T rovatbanjelöljekiaN A M E opciót,éstallózzabeamunkafüzetS Z E M E L Y E K nevűmunkalapját!
Amunkalap kiválasztása utánmégmeg kell adni, hogy amunkalapmely tartományatartalmazzaazadatokat.HaaDATARANGE rovatbanaFIRSTNON-BLANKROW –otválasztjuk,azzalaztjelezzük,hogyadattáblánkamunkalapelsőnemüressorábankezdődik.Megadhatjukekkor,hogymitörténjen.Hatovábbiüressorokattalálunkabeolvasáskor:
• STOPREADING: Befejeziabeolvasást.• RETURNBLANKROWS:Amunkalapösszesadatátbeolvassaazüressorokkal
együtt.
Ha a DATA RANGE rovatban az EXPLICIT RANGE opciót választjuk, akkor pontosanmegadhatjukabeolvasandótartományméretét,elhelyezkedését.Például:B3:F50.
Abeállításokelvégzéseutánhasonlóképetkelllátnunk:
Ok–ozzaleanodebeállításait!
Kapcsoljon egy T A B L E output node-ot az E X C E L node után és futtassa az eredménymegtekintéséhez.
Megfigyelhetjük, hogy ezen node használata esetén nem adhatjuk meg a beolvasott adatok fizikaiadattípusát (szám, szöveg, stb.), mert azt az Excel munkafüzetben történő tárolás módja automatikusanmeghatározza.
Viszontittismegkelladnunkazadatokstatisztikaiértelembenvetttípusát.(Set,Range,stb.)
Databasenode
Helyezzenelastream-benegyD A T A B A S E node-otis,aS O U R C E S palettáról!
Nyissameganodebeállításait!
Ezzelanode-dalrelációsadatbázisokbantárolttáblákadataitolvashatjukbeastream-be.AzEXCEL node-hozképestcsakaDATA fülbeállításaibantalálunkeltérést.A DATA SOURCE rovatban egy már a Windowsban bekonfigurált adatforrást lehetkiválasztani.Tehátahhoz,hogyaModelerrátudjoncsatlakozniegyadatbázisra,előtteaWindowsbanlétrekellhozniegyODBCbejegyzést.
ODBC=OpenDataBaseConnectivity(nyíltadatbáziskapcsolat)
AzODBCbejegyzéslétrehozásáhozrendszergazdaijogszükséges.
Akövetkezőlépéseketkelltenni(WindowsXPesetén):
• Nyissuk meg a vezérlőpulton (Control Panel) belül a felügyeleti eszközöket(AdministrativeTools).
• Nyissuk meg az Adatforrások (Data Dources) (ODBC) ikont, és váltsunk aRendszerDSN-re(SystemDsn):
• Hozzáadás(Add…):
• Jelöljük ki a Microsoft Access Driver (*.mdb) listaelemet, és kattintsunk a
Befejezés–re(Finish):
• Írjuk be a létrehozandó ODBC bejegyzés nevét, az ablak tetején lévő beviteli
mezőbe:Szemelyek• AKijelöl…(Select)gombrakattintvajelöljekiabeolvasnikívántadatbázist.Ami
esetünkbenazAdatok.mdb-t:
• KattintsunkazOK-ra:
• OKésmégegyszerOKazablakokbezárásához.
EzzellétreishoztukazODBCbejegyzést.TérjünkvisszaaModeler-hez:
AD A T A S O U R C E rovatbólválasszaaz< A D D N E W D A T A B A S E C O N N E C T I O N … > opciót!
AzablaktetejénláthatólistábanmegkelljelenjenaSZEMELYEK bejegyzésis!
Jelölje ki a S Z E M E L Y E K bejegyzést a listából, és kattintson a C O N N E C T gombra akapcsolódáshoz!
ZárjabeazablakotO K –kal!
A T A B L E N A M E rovatban meg kell adni az adatbázis beolvasandó táblájának a nevét(S Z E M E L Y E K ).
Haátkattintunkafilterfülre,márlátnikellazadattáblaoszlopainakanevét.Atovábbibeállításokugyanúgytörténnek,minteddig.
3.RekordműveletekAzalábbigyakorlatokvégrehajtásáhozhasználjukazelőzőgyakorlatadatállományát!
AzalábbiakbanelőfordulófeladatokmegoldásaimegtalálhatókaDemo.strfájlban.
Adjonastream-hezegyV A R . F I L E node-ot,ésolvassabeazA D A T O K . T X T állománytartalmát!
Ellenőrizzeabeolvasássikerességét,egyT A B L E outputnode-dal!
Tablenode IsmerkedjünkkicsitjobbanmegaTablenodeeredményablakával:
• Elsőretalánalegfontosabbinformációkatazablakfejlécébőlolvashatjukki!• A ikonrakattintvaazeredménylistátelmenthetjük.Természetesenerrea
célra használhatjuk aFLATFILE node-ot is az Output palettáról, ha amentéstautomatikusanszeretnénkvégrehajtani.
A további lehetőségek megismeréséhez nyissuk meg a Table node beállításait, és váltsunk azO U T P U T fülre!
• AzOUTPUTNAME rovatbanaCUSTOM opciótválasztvaegytetszőlegesszövegetadhatunk meg, mely a kimenet „címe” lesz. Megadása esetén az eredményttartalmazóablakcímsorábanastandard(mezőésrekordszám)üzenethelyettazittmegadottszövegleszlátható.
• Ha azOUTPUTTOSCREEN opció helyett azOUTPUTTOFILE opciót választjuk,akkor a node futtatása esetén az eredményeket nem a képernyőn jelenítimeg,hanemamegadottfájlbamentiel.A FILE TYPE beállításával adatainkat elmenthetjük tab-bal vagy vesszővelszeparált fájlba,weblapbaágyazott táblázatként,vagya*.cousaját formátumbais.ATRANSPOSEDATA bejelölésévelmentéselőtttranszponáljaazadattáblát.
HaatablenodefuttatásánakeredményétazOutputpalettárólkijelölveszeretnénkelmenteni,akkorottcsaka*.couformátumotválaszthatjuk.
Azelmentett,vagyképernyőnmegjelenítettadatokformaibeállításaitaFORMAT fülönadhatjukmeg:
• AFORMAT oszlopbanamegjelenéstszabályozóformátumkódotadhatjukmeg.• AJUSTIFY oszlopbanazadatokvízszintesigazítását.• A COLUMN WIDTH oszlopban pedig a megjelenített oszlopok szélességeit
szabályozhatjuk.Ha duplán rákattint valamelyik mező nevére, akkor egy párbeszédablak jelenik meg,melyenkönnyebbenésrészletesebbenmegadhatjaabeállításokat:
Végüllássuk,mitislehetbeállítaniaSETTINGS fülön:
Ezen a fülönmegadhatunk egy logikai kifejezést,melyet a node a táblaminden egyessorárakiértékel,éshaazeredményazadottsorra igaz(true) lesz,akkorazadottsortkiemeltenjelenítimeg.
A logikaikifejezésmegszerkesztésében ismétcsaksegítségünkre lehetakifejezés-szerkesztő,melyeta ikonrakattintvanyithatunkmeg.
Emeljekiazonrekordokat,aholazirányítószámértéke9700!
Hahelyesképletetadottmeg,akkorhasonlókelllegyenanodefutásieredménye:
AfeladatmegoldásátmegtaláljaaD E M O S . S T R állományban.
Selectnode Nagyon sokszor nemcsak arra van szükségünk, hogy egyes adatokat kiemelvejelenítsünk meg a többi adat között, hanem a további adatfeldolgozó utasításainkatszeretnénk az adatok egy részére korlátozni. Másképp fogalmazva, a továbbiműveletekbőlbizonyosadatokatszeretnénkkizárni.Ha az adattáblánknak csak bizonyos soraira van szükségünk a továbbiműveletekhez,akkoramegfelelősorokkigyűjtésétaSelectnodesegítségévelvégezhetjükel.
Kapcsoljunkasourcenode-hozegyS E L E C T node-otaR E C O R D O P S palettáról!
Anodebeállításaitmegnyitvaakövetkezőketadhatjukmeg:
• ACONDITION rovatbaegy logikaikifejezést írhatunk,melymindensorraki fogértékelődni.
• HaaMODE rovatbanazINCLUDE-t jelöljükmeg,akkorazokatasorokatengeditovábbakimenetre,amelyekreigazamegadottfeltétel,haaDISCARD-ot,akkorpedigazokatzárjaki,amelyekreigazafeltétel.
Csakazokatasorokattartsukmeg,aholazirányítószámértéke9700!
Tehátakövetkezőketkellbeállítanunk:
Ellenőrizzeahelyesműködést,egyTablenode-dal!
Ateljességigényenélkülálljonittnéhánytovábbipéldalehetségesszűrésifeltételekre:
• TELEPULESMATCHES"R*"
AholatelepülésnevenagyRbetűvelkezdődik
• TELEPULESMATCHES"*R*"
AholatelepülésnevetartalmaznagyRbetűt
• TELEPULESMATCHES"??????"
Aholatelepülésnevepontosan6karakteres
• DATETIME_YEAR(SZULDAT)=1980
1980-banszületett
AmatchesoperátorralaModelersúgójaalapján,csaka* és? helyettesítőkaraktereketlehethasználni.LHaezekközülbármelyiketkellilleszteni,akkora\ karaktertkellelőtagkénthasználni.Például,haazokataszövegeketszeretnénkilleszteni,amelyek* karakterrelkezdődnek,akkorakövetkezőmintátadhatjukmeg:” \ * * ” .
Samplenode Az adattábla sorainak szűrésére a Sample node is használható. Ellentétben a Selectnode-dalebbenazesetbennemegylogikaifeltételigazvagyhamisvoltadöntiel,hogyaz adott sor bekerül-e a további adatfeldolgozásba. A sorok kiválasztásának másszempontjaitalkalmazhatjukanodehasználatával:
• Azelsővalahánysor• Mindenvalahányadiksor• Véletlenkiválasztottsorok
HelyezzenelegySamplenode-otasourcenodeutánkapcsolva!Nyissameganodebeállításait!
A SAMPLE rovatban állíthatjuk be, hogy mi legyen a rekordok kiválasztásának azalapelve:
• FIRST:
Azelsővalahányrekord
• 1-IN-N:
Mindenn-edikrekord
• RANDOM%:
VéletlenrekordokA MODE rovatban, ha az INCLUDE SAMPLE helyett a DISCARD SAMPLE beállítástválasztjuk ki, akkor a node pont fordítva működik, és a SAMPLE rovat által kijelöltsorokatzárjakiatovábbifeldolgozásból. AMAXIMUMSAMPLESIZE opciót csak akkor adhatjukmeg, ha1-IN-NVAGYRANDOM% módonvesszükamintát.Használatávalkorlátozhatjukamintaméretét. A SET RANDOM SEED opció a RANDOM % mód esetén jelölhető be. Használatávalmegismételhetjükamintavételezést egymásik futtatás esetén.Haugyanazt az értéketadjukmeg, akkor ugyanabból a forráshalmazból, ugyanazt amintát fogja generálni. AGENERATE gomb használatával automatikusan megadja a véletlen mintát generálóértéket.(Nemkellnekünkkitalálni,beírni.)Haazopciókivankapcsolva,akkormindenegyesfuttatáseredményeteljesenvéletlenszerűlesz.
Haadatainkatrelációsadatbázisbólnyerjük,akkorszükségeslehetegyS O R T nodehasználataaS A M P L E nodeelőtt,hamegismételhetővéletlenmintátszeretnénkkapni.Ennekoka,hogyarelációsadatbázisokban,nemmeghatározottasoroksorrendje,ellentétbenpéldáulegyExceltáblázattal,vagytagoltszövegfájllal.
Állítsabeúgyanode-ot,hogyatáblázatbólvéletlenszerűenlistázzonki10sort!
Hasikerült,akkorakövetkezőketkelllátnunk:
Amaximumsamplesizegarantálja,hogyazeredménybennelegyen10-néltöbbrekord.
ARandom%-nállegalábbakkorarészétállítsukbeamintának,hogyaztartalmazzonlegalább10rekordot.
KapcsoljonanodeutánegyTableoutputnode-ot,ésfuttassaazeredményekellenőrzéséhez!
Sortnode A node segítségével adattáblánk sorait rendezhetjük, valamely oszlop(ok) értékeialapján. Ha több oszlopot is megadunk, mint rendezési szempontot, akkor számít azoszlopoksorrendje.Elsősorbanazelsőnekmegadottoszlopértékeialapjánrendez,haeznemlehetségesegyezőértékekmiatt,akkoramásodikoszlopértékeialapján,stb.
KapcsoljonasourcenodeutánegySortnode-ot!Nyissameganodebeállításait!
Adja meg elsődleges rendezési szempontnak az irányítószámot, másodlagosnak a születésidátumot, ésharmadlagos szempontnakanevet.Mindegyik szempont szerintnövekvő rendezéstállítsonbe!
Afeladatsikeresvégrehajtásautánakövetkezőtkelllátnunk:
Kapcsoljonanodeutánegytablenode-ot,ésellenőrizzeazeredménytanodefuttatásával!
Aggregatenode Anodesegítségévelazadattáblasoraibólcsoportokképezhetők,azáltalunkkiválasztottoszlopokértékeinekegyezőségealapján.Példáulcsoportosíthatjukasorokatúgy,hogyegycsoportbaazazonosirányítószámútelepülésenlakókkerüljenek,vagyúgy,hogyazegy napon születettek kerüljenek egy csoportba, vagy akár a két szempont közöshasználatával egy csoportba az azonos napon születettek és azonos településen lakókkerüljenek.
A node lehetőséget biztosít arra, hogy a képződött csoportok adataiból a következőszámításokatvégezzük:
• Összegzés(Sum)• Átlagolás(Mean)• Minimum(Min)• Maximum(Max)• Szórás(SDev)• Acsoportbanlévősorokszáma
KapcsoljonasourcenodeutánegyAggregatenode-ot!Nyissameganodebeállításait!
Csoportosítsaatáblasoraitazirányítószámoszlopértékeialapján!
Számoljaacsoportokraalegfiatalabbésalegidősebbszületésidátumát!
Abeállításokelvégzéseutáneztlátjuk:
Néhánytovábbibeállítás:
• Ha aKEYSARECONTIGIOUS opciót bekapcsoljuk, akkor az azonos kulcsértékettartalmazó sorok csak akkor fognak egy csoportot alkotni, ha az adott sorokegymás mellett is vannak. Tehát, ha lenne 10 darab 1234 –es irányítószámottartalmazósor,denemegymásmellett,hanempl.3-5-2–esmegoszlásban,akkorebbőla10sorbólnemegy,hanem3csoportkeletkezne.Viszonthaminda10soregymás mellett van, akkor az opció bekapcsolása esetén is egy csoportotalkotnának.
• Az INCLUDE RECORD COUNT IN FIELD opció bekapcsolásával az eredményekközébeszúranodeegyújoszlopot,melyacsoportokatalkotósorokdarabszámátfogja tartalmazni. Megadhatjuk az oszlop nevét is, ha nem felel meg azalapértelmezettRecord_countnév.
• ANEWFIELDNAME extensionkitöltésévelaszámoltoszlopoknevéhezszabadonmeghatározhatóelő,vagyutótagotrakhatunk.
Kapcsoljon az Aggregate node után egy Table output node-ot, és futtassa az eredményellenőrzéséhez!
ÖnállófeladatAzEladasok.xlsfájlegyfiktívcégtermékeladásaittartalmazza.Atáblázatmindenegyessoraegykonkrétértékesítéstjelent.Atáblázatoszlopainakajelentése:
• Kategórianév:Azeladotttermékkategóriája
• Terméknév:
Azeladotttermékneve• Egységár:
Azeladotttermékegységára• Mennyiség:
Atermékbőleladottmennyiség• Cégnév:
Avevő• Ország:
Avevőországa• Város:
Avevővárosa
Listázzakiannaka10 terméknekanevét, amelyekbőla legnagyobbmennyiségbenadtakel.Neszámítsonbeleazeredménybeegyolyansortsem,amikoravevőa„QUICK-Stop”nevűcégvolt.
4.MezőműveletekA gyakorlat fő célja, hogy megismerkedjünk a Modeler-ben számítások elvégzésérealkalmasutasításokkalés függvényekkel.Képletekmegírásáraszámtalanesetben lehetszükségünk. Nemcsak akkor, amikor új számított oszlopot kell létrehoznunk, hanemakkor is, amikor például a Select node-ban meg kell adnunk a sorok kiválasztásifeltételét.Mindenekelőttszükségünkleszegyadatforrásra.ErreacélrahasználjukfelismétamárismertEladasok.xlsállományt.
Helyezzenel együres stream-benegyE X C E L sourcenode-ot, ésolvassabeazE L A D A S O K . X L S adatállományt!
KapcsoljonanodeutánegyT A B L E nodot,ésfuttassa!
Azadatokatlátvatöbbalapvetőkérdésisfelmerülhet:
Terméktípusonként, termék kategóriánként, évenként, negyedévenként, vevőkként,országonként,stb.mekkoraabevétel? Ezenkérdésekmegválaszolásáhozkikelltudnunkszámolnimindenegyesadatsorraazeladásösszértékét,vagyisamennyiségésegységárszorzatát.
Derivenode Anodefeladata,hogyazadattáblábaújoszlopothozzonlétre,melynekazadatsorokbanfelvettértékeitegyáltalunkmegadottképlethatározzameg.
KapcsoljonasourcenodeutánegyD E R I V E node-otaR E C O R D O P S palettáról,ésnyissameganodebeállításait!
Anode rengetegopciót rejteget.Előszöra lehető legegyszerűbbmódonpróbáljukki aműködését.
Azújoszlopnevénekadjamegakövetkezőt:E R T E K
Képletnekpedigezt:E G Y S É G Á R * M E N N Y I S É G
Ok–ozzaleanode-ot,ésegyTablenode-dalellenőrizzeazeredményt!
Atovábbiakbannézzükátanoderészletesbeállításait:
Mode Ha amode rovat SINGLE-re van állítva, akkor a node csak egy új oszlopot hoz létre,melynekértékeitamegadottképlethatározzameg.
Ha a mode értéke MULTIPLE , akkor egyszerre több számított oszlopot islétrehozhatunk:
Hogyazújoszlopokmelyeredetilegmeglévőoszlopokértékeibőllegyenekszámolva,mihatározhatjukmegaDERIVEFROM rovatban.Azújoszlopokneveiazeredetioszlopokneveiből és egy általunkmeghatározható elő, vagy utótagból tevődnek össze, aFIELDNAMEEXTENSIONrovatbanbeállítottakszerint.
Mivel minden egyes új oszlop értékeit az eredeti oszlopokból azonos képlettel számolja a node, ezértáltalábanelmondható,hogyazonosadattípusúoszlopokesetébenalkalmazhatóezamódszer.Például:Adottkétoszlop:EgységárésÉrtékHaszeretnénkakétoszlopbólÁFA-valmegnöveltértékeketisszámolni,akkoraztakövetkezőbeállításokkaltehetjük:
Multiple mód esetén a @FIELD függvény segítségével hivatkozhatunk a képletvégrehajtódásaalattéppenaktuálisoszlopértékére!
Deriveasrovat Azújoszlopkiszámításimódjáthatározzameg:
• Formula:Általunkmegadottképletalapján
• Flag:Azújoszlopkétféleértéketvehetfel:
Megadhatjuk,hogymi legyenezakétérték, ésazta logikaiképletet, amelynekigazvisszatérésiértékeieseténaTRUEVALUE értéket,egyébkéntaFALSEVALUE értéketveszifelazújoszlop.
• Set:Azújoszlopértékeiegyhalmazelemeiközülkerülnekki:
Atáblázatbaloszlopábansorolhatjukfelalehetségesértékeket(halmazelemei),míg a jobboldalon minden egyes értékhez megadhatunk egy logikai kifejezést,melynek igaz visszatérési értéke esetén a mellette lévő értéket veszi fel az újoszlop adott sora. Számít az értékek sorrendje (nyilakkal állítható), mert többfeltételteljesüléseeseténafeljebblévőértéketkapjamegazújoszlop.Haegyikfeltételsemteljesül,akkoraDEFAULTVALUE rovatbanmegadottértéketveszifelazújoszlopadottsora.
• State:NagyonhasonlóaFlagbeállításhoz.
Csakmíg a Flag választás esetén egyetlen feltétel igaz, vagy hamis eredményealapjándőlel,hogymelyikértéketveszifelakétlehetségesközülazoszlop,addigittmindkétértékheztartozikegylogikaikifejezés,melyeknekigazértékeeseténfelveszi az adott értéket (átvált rá), hamis értéke esetén viszont az utoljárakiosztottértéketadjaamezőnek.AzelsősorkiszámolásaeseténazalapértéknekazINITIALSTATE rovatbanmegjelöltetveszi.Olyanmintegykapcsoló(state~állapot),melyethakellátbillenthetünk.
• Count:Kiválóanalkalmassorszámozásra,leszámlálásra.
Az INITIALVALUE rovatbanmegadhatjukakezdőértéket,melyetmindenegyesúj sor esetén megnövel az INCREMENT BY rovatban megadott értékkel, ha azINCREMENTWHEN rovatbanmegadottlogikaikifejezésigazértéketveszfel.Ha a RESET WHEN rovatban megadunk egy logikai kifejezést, akkor mindenegyes olyan sortól kezdve, ahol ez a feltétel igaz értéket ad, újraindítja aszámolást.
• Conditional:AtipikusHA…AKKOR…EGYÉBKÉNT…formula:
Az IF rovatban egy logikai kifejezést adhatunk meg, mely teljesülése esetén aTHEN rovatot,egyébkéntpedigazELSE rovatotértékeliki.
Ha a Derive as rovatban nem létezne, természetesen akkor is megoldhatók lennének a felsorolt esetek amegfelelőképletekmegadásával.
AzExpressionBuilderÉrdemes némi figyelmet szentelnünk a Modeler beépített kifejezés-szerkesztőablakának is. Minden egyes esetben, ahol a számológép ikon megjelenik, ott arrarákattintvamegnyithatjukeztazablakot:
Az ablak tetején lévő beviteli mezőben szerkeszthetjük kifejezéseinket. A kifejezésekösszeállításában sokat segíthet, hogy az ablak további részeiben megjelenő listákelemein duplát kattintva, vagy a gombokon kattintva az adott tételt beilleszthetjük aképletünkbeésnemkellbegépelniazokat.
Az alábbi lista a felhasználható függvényeklistáját mutatja. A lista tetején lévő legördíthetőlistából konkrét függvénykategóriát választvaleszűkíthetjükaválasztékot.A bal oldali oszlop mutatja a függvény nevét ésparamétereit, míg a jobboldali a függvényvisszatérésiértékénektípusátadjameg.
A listábólkijelölt függvény leírásaelolvashatóazablakalján.
A bal felső sarokban lévő sárga nyílra kattintva a kijelölt listaelem beilleszthető a
képletünkbe.
A lista tetején kiválaszthatjuk, hogy mitmutassonalista:
• Fields(oszlopokat)• Parameters (paramétereket, ha
vannak)• Globals(havannak)
A Parameters és a Globals listában elérhető értékekrőlkésőbbleszszó.
A bal felső sarokban lévő sárga nyílra kattintva a kijelölt listaelem beilleszthető aképletünkbe.
A sárganyílmelletti kis ikon megmutatjaa kijelölt mező konkrét értékeit,megkönnyítveamegfelelőmezőkiválasztását,haelfelejtettükazoszlopnevét.
A képleteinkben felhasználható operátorok. A kevésbé egyértelműekmagyarázata:
hatványozás(3**2=9)
egészosztás(9div4=2)
azosztásmaradéka(9rem4=1)
ugyanaz min az előző, használata nem javasolt, mert a jövőbenmegszüntetik.Csakisvisszafelekompatibilitásmiattvanmégmeg
amegegyeziklogikaivizsgálatellentéte:nemegyenlő
szövegekösszefűzése(”alma”><”fa”=”almafa”)
AModeleradattípusaiAképletekben,kifejezésekbenakövetkezőtípusúértékekszerepelhetnek:
• Szöveg(String)például:”c1”;”Type2”;”tetszőlegesszöveg”
• Egészszám(Integer)például:12;0;-134
• Valósszám(RealNumber)például:12.34;0.0;-0.0023
• Dátum-időérték(Date/Time)például:5/12/2005
• Karakterkód(Characters)például:`a`
• Elemeklistájapéldául:[123];[’Type1’’Type2’]
A karakterkódokat és listákat általában nem használjuk oszlopok értékeiként, viszontgyakranhasználatosakaModelerfüggvényekparamétereiként.
Idézőjelezésiszabályok:
• Szövegek:Szövegeketmindigduplaidézőjelekközöttadunkmeg.
• Karakterek:Mindig egyszeres visszafele álló idézőjelet kell használni. (Magyarbillentyűkiosztásesetén:AltGr+7)Például:`a`Karakter adattípusú értéket nyerhetünk úgy is, ha egy szövegből kiemeljükvalahányadikbetűjét:”SZÖVEG”(4)
• Mezők(oszlopok):A képletekben amezők neveit általában önmagukban alkalmazhatjuk, ellenbenha a mezőnév szóközt tartalmaz, vagy speciális karakterrel kezdődik, akkoregyszeresidézőjelekközétesszük.
• Paraméterek:Mindigegyszeresidézőjelekközétesszükőket.Pl.:’$P-threshold’
AModelerfüggvényeiAModelerakövetkezőfüggvénycsoportokattartalmazza:
• Information:Információkat nyerhetünk ki a mezők értékeiről az itt található függvényekhasználatával.
• Conversion:Adattípusokköztiátalakításrahasználhatófüggvényekettartalmaz.
• Comparison:Mezők értékeinek egymással, vagy konstans értékekkel történőösszehasonlításárahasználhatókakategóriafüggvényei.
• Logical:Logikaiműveleteketvégezhetünkelafüggvényekkel.
• Numeric:Matematikaiszámításokhozlehetnekszükségesekazitttalálhatófüggvények.
• Trigonometric:Trigonometriaiszámításokhozhasználhatókfelakategóriafüggvényei.
• Probality:Valószínűségipróbákszámolásáhozhasználhatókfelakategóriafüggvényei.
• Bitwise:Egészéskettesszámrendszerbeliértékekkelvégezhetünkbitműveleteket.
• Random:
Véletlenértékekgenerálásához,vagykiválasztásáhozhasználhatjukfel.• String:
Szövegtípusúértékekfeldolgozásakornélkülözhetetlenek.• SoundEx:
Szövegekfonetikuskiejtésénalapulóhasonlóságánakavizsgálatáraalkalmasakakategóriafüggvényei.
• Dateandtime:Dátumésidőértékekmanipulációjárahasználhatófüggvényektalálhatókitt.
• Sequence:Atábláksorainakegymásutániságáraépülőműveleteketvalósítanakmeg.
• Global:ASetGlobalsnode-dallétrehozottglobálisértékekeléréséhezhasználhatókfel.
• Blanksandnull:Azüreséshiányzóértékekkezeléséhezhasználhatjukfelezeketafüggvényeket.
• Specialfields:Mezőkkiválasztásáhozhasználhatókfel.(Példáulamárhasznált@FIELD)
A továbbiakban kiemelnénk néhány fontosabb, gyakran használatos függvényt. Afüggvények részletes szintaktikája, paramétereinek listája, sorrendje megtalálható asúgóban,deakifejezés-szerkesztőismegmutatja.
Informationfüggvények• @NULL(ITEM)
Azvizsgálhatóvele, hogyegyadottmezőértékemegvan-e adva.AModeler azadattáblasoraibanahiányzóértékeket$null$értékkeljelöli.
• is_date(ITEM)Aztvizsgálja,hogyazadottértékértelmezhető-edátumként.
• is_integer(ITEM)Igazértékkeltérvissza,haparamétereegészszám.
• is_number(ITEM)Igazértékkeltérvissza,haparamétereértelmezhetőszámként.
• is_real(ITEM)Igazértékkeljelzi,haparaméterevalósszám.
• is_string(ITEM)Igazértéketadvissza,haparamétereszöveg.
• is_time(ITEM)Igazleszavisszatérésiértéke,haaparamétereértelmezhetőidőértékként.
Conversionfüggvények• to_integer(ITEM)
Aparaméterekéntmegadottértéktárolásitípusátegészszámmáalakítja.• to_real(ITEM)
Aparaméterekéntmegadottértéktárolásitípusátvalósszámmáalakítja.• to_number(ITEM)
Aparaméterekéntmegadottértéktárolásitípusátszámmáalakítja.• to_string(ITEM)
Aparaméterekéntmegadottértéktárolásitípusátszöveggéalakítja.• to_time(ITEM)
Aparaméterekéntmegadottértéktárolásitípusátidőértékkéalakítja.
• to_date(ITEM)Aparaméterekéntmegadottértéktárolásitípusátdátumértékkéalakítja.
• to_datetime(ITEM)Aparaméterekéntmegadottértéktárolásitípusátdátumidőértékkéalakítja.
Comparisonfüggvények• date_before(DATE1,DATE2)
Igazértékkeltérvissza,haaDATE1megelőziaDATE2-t.• max(ITEM1,ITEM2)
Anagyobbelemmeltérvissza.• min(ITEM1,ITEM2)
Akisebbelemmeltérvissza.• time_before(TIME1,TIME2)
Igazértékkeltérvissza,haTIME1megelőziTIME2-t.
Logicalfüggvények• ifCONDthenEXPR1elseEXPR2endif
HaaCONDfeltételigaz,akkorEXPR1,egyébkéntazEXPR2kifejezésértékéveltérvissza.
Numericfüggvények• abs(NUM)
Abszolútértéketszámol.• fracof(NUM)
Atörtrésztadjavissza.• intof(NUM)
A csonkolással keletkező egészrészt adja vissza. Nem egyezik meg azegészrésszel,haaszámnegatív.
• log10(NUM)10-esalapúlogaritmustszámol.
• round(NUM)Egészrekerekít.
• sign(NUM)Előjelfüggvény.
• sqrt(NUM)Négyzetgyökötszámol.
Trigonometricfüggvények• sin(NUM)• cos(NUM)• tan(NUM)• pi
Igazábóleznemisfüggvény,hanemkonstans.Apiértékétadjavissza.
Randomfüggvények• random(NUM)
Egész vagy valós számmal tér vissza, egy ésNUMközött, attól függően, hogy aNUMparamétermilyentípusú.HaNUMegész,akkoregésszeltérvissza,haNUM
valós érték, akkor valós lesz a visszatérési érték is. A tizedes pontosságot aStreamtulajdonságaihatározzákmeg.
• random0(NUM)Abbankülönbözikazelőzőtől,hogyavéletlenszámok0-tól indulnak,ésaNUMértéknélkisebbek,veleegyenlőkmárnemlehetnek.
Stringfüggvények• allbutfirst(N,STRING)
A STRING szöveg minden karakterét visszaadja az első N darab karakterkivételével.
• allbutlast(N,STRING)A STRING szöveg minden karakterét visszaadja az utolsó N darab karakterkivételével.
• alphabefore(STRING1,STRING2)Igazértékkeltérvissza,haSTRING1megelőziSTRING2-tazabc-ben.
• endstring(LENGTH,STRING)ASTRINGszövegutolsóNdarabkarakterétadjavissza.
• count_substring(STRING,SUBSTRING)Megadja,hogyaSTRINGszövegbenhányszorfordulelőaSUBSTRINGszöveg.
• isalphacode(CHAR)Igazértékkeltérvissza,haaparaméterebetű.
• isendstring(SUBSTRING,STRING)Ha a STRING szöveg végemegegyezik a SUBSTRING szöveggel, akkor azt adjavissza, hogy a STRING szöveg hányadik karakterénél kezdődik a SUBSTRINGszöveg,egyébként0-valtérvissza.
• islowercode(CHAR)Igazértékkeltérvissza,haparaméterekisbetű.
• ismidstring(SUBSTRING,STRING)HaaSUBSTRINGszövegszerepelaSTRINGszövegben,denema legelejénvagylegvégén,akkorakezdésipozíciójánakasorszámávaltérvissza,egyébként0-val.
• isnumbercode(CHAR)Igazértékkeltérvissza,haparamétereszámjegy.
• isstartstring(SUBSTRING,STRING)Ha a STRING szöveg eleje megegyezik a SUBSTRING szöveggel, akkor 1 –et,egyébként0-tadvissza.
• issubstring(SUBSTRING,N,STRING)A STRING szövegben az N-edik karakterétől kezdve keresi a SUBSTRINGszöveget.Hamegtalálja,akkorvisszatérakezdésipozíciójával,egyébként0-tadvissza.HaN-tnemadjukmeg,akkoralapértelmezésben1-etveszfelétékül.
• issubstring_count(SUBSTRING,N,STRING)Azzal a pozícióval tér vissza, ahol a SUBSTING N-edik előfordulása kezdődik aSTRINGszövegben.HaNnagyobb,mintahányszorelőfordulbenne,akkor0-valtérvissza.
• isuppercode(CHAR)Igazértékkeltérvissza,haparaméterenagybetű.
• last(STRING)VisszatéraSTRINGszövegutolsókarakterével.
• length(STRING)
VisszatéraSTRINGszöveghosszával,karakterekszámábanmérve.• replace(SUBSTRING,NEWSUBSTRING,STRING)
Visszatér azzal a szöveggel, melyet úgy kapunk, hogy a STRING szövegben aSUBSTRING szöveg összes előfordulását helyettesítjük a NEWSUBSTRINGszöveggel.
• replicate(COUNT,STRING)ASTRINGszövegetannyiszorsokszorozzameg(fűziösszeönmagával),amennyitaCOUNTparamétermegad.
• startstring(LENGTH,STRING)ASTRINGszövegelsőNdarabkarakterétadjavissza.
• substring(N,LEN,STRING)ASTRINGszövegN-edikkarakterétőlszámoltLENdarabkaraktertadvissza.
• substring_between(N1,N2,STRING)ASTRINGszövegN1ésN”pozíciójaközöttikaraktersorozatotadjavissza.
• trim(STRING)Eltávolítjaaszövegelejérőlésvégérőlaközkaraktereket.
• unicode_value(CHAR)VisszaadjaaCHARkarakterunicodeértékét.
• uppertolower(CHAR)uppertolower(STRING)Kisbetűsséalakít.
• lowertoupper(CHAR)lowertoupper(STRING)Nagybetűsséalakít.
Dateandtimefüggvények• @TODAY
Visszaadjaazaktuálisdátumot.• date_before(DATE1,DATE2)
Igazértékkeltérvissza,haDATE1megelőziDATE2-t.• date_days_difference(DATE1,DATE2)
Napokszámábanmegadjaakétdátumkülönbségét.• datetime_day(DATE)
Kiemeliahónapnapjánaksorszámátadátumból.Egészszámotadvissza,1és31között.
• datetime_hour(TIME)Kiemeliazóraértékétazidőértékből.
• datetime_minute(TIME)Kiemeliapercértékétazidőértékből.
• datetime_month(DATE)Kiemeliahónapsorszámánakértékétadátumból.
• datetime_time(HOUR,MINUTE,SECOND)Időértéketállítelőazóra,apercésamásodpercértékekből.
• datetime_weekday(DATE)Visszaadja,hogyahéthányadiknapjáraesikazadottdátum.
• datetime_year(DATE)Kiemeliazévértékétadátumból.
• time_before(TIME1,TIME2)Igazértékkeltérvissza,haTIME1megelőziTIME2-t.
SequencefüggvényekSok-sok művelet esetében a rekordok egymásra következősége meghatározó. Ilyenműveletekpéldául:
• Asorokindexelése• Idősorok• Mozgóátlagok• Egymásutániértékekösszehasonlítása• Stb.
Sok művelet esetében egy sor feldolgozása nem független művelet, hanem nagyon isfüggamellette,előtte,vagymögöttetalálhatórekordokértékeitől.Ezekbenazesetekbennagyonfontosodafigyelniarekordokmegfelelőszempontszerintisorbarendezésére.
ASequesnceésspeciálisfüggvényekmindigazalábbiszintaktikátkövetik:
• @karakterrelkezdődnek• Anevükcsupanagybetűvelvanírva
Például:
Ha szeretnénkmegtudni, hogymennyi idő telt el egy esemény előfordulása óta, vagymikorvoltutoljáraigazegyfeltétel,akkorhasználhatjuka@SIENCEfüggvényt:@SINCE(INCOME>OUTGOINGS)Ezaképletvisszatérannakazutolsósornakazeltolásiértékével,amikorafeltételmégigazvolt.
Továbbirészletekasúgóban.
Feladatok
1.feladat
Számolja ki, hogy az egyes termékekből összesen milyen értékben adtak el. A listát azzal atermékkelkezdje,amelybőlalegnagyobbértékbentörténteladás.
2.feladat
Azelőzőmegoldástegészítsekiazzal,hogyazegyestermékekreazösszeseladottdarabszámotiskiszámolja,valamintazegyeseladásitételekbenszereplőlegolcsóbbéslegdrágábbegységárat.Azösszesítettértékekbőlszámolátlagosegységárat!
3.feladat
OlvassabeazA D A T O K . T X T állományt!
A születési dátumok alapján határozza meg minden egyes évre, hogy az adott évben hányanszülettek!Alistátazévszámokalapjánnövekvőrendezésbenjelenítsemeg!
5.Rekordésmezőműveletek,vizualizációAz alábbi gyakorlat célja, hogy egy összetettebbpéldán keresztülmélyebbre vezessenbennünketastream-eképítésében,aképletekalkalmazásában.A problémakör amit végigjárunk, az egy fiktív háztartás két év alatt összeírtgázfogyasztási adatainak az elemzése. Tegyük fel, hogy XY két éven keresztülmindenreggelleolvastaésfeljegyezteagázóraállását.
OlvassukbeazadatokataG Á Z F O G Y A S Z T Á S . X L S állományból!
JelenítsemegabeolvasottadatokategyTablenode-dal!
Figyeljemeg,hogyabeolvasottmezőktípusa:Range
Azadattábla:
Amint az látható az adattábla a gázóranapi állásait tartalmazza.Nekünkalapvetőenanapi fogyasztási értékekre lenne szükségünk, amelyet úgy kaphatunk meg, hogy az
aktuális napi óraállásból kivonjuk az előző napi óraállás értékét. Természetesen így alegelsőnapranemleszérvényesfogyasztásiadatunk!
Hozzon létre egy új számítottmezőtN A P I F O G Y A S Z T Á S néven (Derive node-dal), mely a napifogyasztásiadatokattartalmazza!
AfeladatmegoldásáhozvalamelySequencefüggvénykategóriábaesőfüggvénysegíthet,hiszenolyanműveletetkellmegvalósítanunk,amelyatáblasorainakegymásutániságáraépül.Ajóeredménybiztosításáhozszükséges,hogyatáblasoraiteljesbizonyossággalaLeolvasásdátumaoszlopszerintlegyenekrendezve,növekvősorrendbe.
TehátmégaDerivenodeeléfelkellhasználnunkegySortnode-otis:
AholaSortnodebeállításaiakövetkezők:
ADerivenodebeállításaipedig:
A @DIFF1(Óraállás) képlet helyett használhattuk volna a következő képletet is:Óraállás-@OFFSET(Óraállás,1)
Azeredmények:
Amintazláthatóazelsősoresetében$null$lettaNapiFogyasztásmezőértéke.
Zárjakiatovábbifeldolgozásbólazelsősort!
EztegySelectnodealkalmazásávalkönnyenmegtehetjük:
A további feldolgozáshozmár nem lesz szükségünk az óraállásokat tartalmazó oszlopértékeire,csakaLeolvasásdátumáraésaNapifogyasztásra.
ZárjakiatovábbiműveletekbőlazÓraállásoszlopot,amásikkettőtpedignevezzeátDatum-raésFogyasztas-ra!
HasználjukaFilterNodeegypéldányáterreafeladatra:
Azeddigelkészültstream:
HaegyTablenode-dalmegtekintjükazeddigieredményeket:
Atovábbiakbankészítsükelahaviösszegzéseket.Vagyisakétévösszesen24hónapjáraszámoljuk ki az összes fogyasztás értékét. Ehhez csoportosítanunk kell a tábla soraitúgy,hogyegycsoportbaazazonosévazonoshónapjáraesősorokkerüljenek.
Hozzonlétrekétújszámítottmezőt(Derivenode-dal)EvésHonapnéven,aholazegyikfogyasztásidátumévét,amásikahónapjáttartalmazza!
A képletekben a datetime_year és a datetime_mont függvényeket használjuk fel. AfuttatásutánakövetkezőképenisláthatóEvésHonaposzloppalgyarapodtunk:
Számoljakiahaviösszfogyasztásokat!(Aggregatenode)
AzAggregatenodebeállításai:
Ésfutásánakeredménye:
IdősorokábrázolásaÁbrázoljukgrafikononakapotthavifogyasztásiadatokat!
KapcsoljonastreamvégéreegyT I M E P L O T node-ot,aGraphspalettáról!
Anodebeállításai:
• A Time plot node a SERIES rovatban megadott adatsorokat olyan sorrendbenfogjaábrázolniazXtengelyen,ahogyazokazadattáblábanelhelyezkednek.
• Az X tengely feliratait (X AXIS LABEL) alapértelmezésben (DEFAULT) besorszámozza. 1-től addig, ahány ábrázolandó adat van. A CUSTOM opciótválasztvamegadhatunkegymásikmezőt,melynekértékeikerülnekazXtengelyfelirataikéntmegjelenítésre.
• ADISPLAY rovatbanbekapcsolhatjuk,hogyvonallal,ponttal(alakjamegadható)vagymindkettővelszeretnénkmegjeleníteniazábrázoltadatokat.
• Ha aNORMALIZE rovat be van pipálva, akkor az adatokat a 0-1 tartományraméretezi. Bekapcsolása segít több különböző nagyságrendű adatsor esetén azadatsorok közötti összefüggések felderítésében. Ha csak egy adatsorunk van,vagyazadatsorokazonosnagyságrendűértékekettartalmaznak,akkorfeleslegesabekapcsolása.
• A DISPLAY SERIES IN SEPARATE PANELS opció bekapcsolása esetén mindenegyesadatsortkülöngrafikononábrázol,mígkikapcsoltállapotábanazadatsorokközösgrafikononvannakábrázolva,ésszínekkelvannakmegkülönböztetve.
• A SMOOTHER opció csak a külön panelok bekapcsolása esetén érhető el. Egylágyítottátlaggörbétillesztazadatsorokra.
Afuttatáseredménye:
FoglalkozzunkkicsitazXtengelyfelirataival.Egyalternatívalehetne,haameglévőEV ésHONAP oszlopok kombinálásával létrehoznánk egy új számított oszlopot, és annakértékeitjelenítenénkmegfeliratokként.
Egysokkaljobbmegoldásviszont,aTimeINTERVALSNODE használata.
SzúrjunkbeegyT I M E I N T E R V A L S node-otmégaT I M E P L O T nodeelé!
Anodebeállításai:
Amint az a képen látható a node-ot úgy állítottuk be, hogy az első rekordtól kezdje(START LABELLING FROM FIRST RECORD) az értékek feltöltését, hónapokbanlépkedjen(TIMEINTERVAL rovat)és2000januárjalegyenazelsőérték.
A Time Interval node elé érdemes beszúrni egy Sort node-ot, hogy a sorok felcímkézése garantáltan jósorrendbentörténjen!
Anodefuttatásánakeredménye:
AmintazláthatóaTimeIntervalnodeháromújoszlopothozottlétre.
Az oszlopok neveinek az előtagja a node beállításakor szabadon módosítható (N E W F I E L D N A M E E X T E N S I O N ), bár ha nem szükséges, akkor ne tegyük, mert a Time Plot node alapértelmezésbenfelhasználjaezeketazoszlopokat!
FuttassukmostaTimePlotnode-ot:
TovábbiábrázolásokAkétfogyasztásiévadataitsokkaljobbanösszetudnánkhasonlítani,haegygrafikonbannemegymásmögött,hanemegymástetején,mintkétkülönadatsortábrázolhatnánk.
Aproblémamegoldásátalapvetőenkétoldalrólismegközelíthetjük:
• 24 soros adattáblánkból készítsünk 12 sorosat, ahol viszont külön oszlopoktartalmazzák a 2000-es és 2001-es évi fogyasztási adatokat. Ez az @OFFSETfüggvénnyelmegoldhatólenne…
• HasználjukaPLOT node-otaGraphspalettáról.
Jelenesetbenazutóbbimellettdöntünk!
Stream-ünkeddigazalábbiakszerintnézki:
KapcsoljunkegyP L O T node-ot azábránjelzettSortnodeután!
Amintazaképenislátható,azXtengelyenaHonapmezőértékeit,mígazYtengelyenahaviösszesfogyasztásokatábrázoljuk.
Anodefuttatásánakeredménye:
Mintláthatómindenegyeshónaphozkétadatpontvanábrázolva.Azegyika2000-es,amásika2001-esfogyasztásiérték.
A node beállításainál az OVERLAY rovatban különféle vizuális módokoncsoportosíthatjukadatainkat.
ÁllítsukbeaColoropciónálazévet!
Eredmény:
Azábramagáértbeszél.Meg kell azonban magyaráznunk, hogy miért is olyan furcsa a jelmagyarázat!EmlékezzünkcsakvisszaarraaDerivenode-ra,aholazEvmezőtszámoltukki:
AzE V mezőtípusátállítsukátO R D E R E D S E T -re,ésfuttassukújraaPlotnode-ot!
PróbáljukkiazO V E R L A Y rovattöbbiopciójátis!
A node beállításainál az OPTIONS fülön például gondoskodhatunk arról is, hogy azadatpontokatkösseössze:
BármelyGraphnodeeseténafuttatáseredményétautomatikusanelismentheti:
Feladatok
1.feladat:
Van-e az adatokban heti periodicitás? A hipotézis az, hogy hétvégén többet fogyasztanak, minthétköznapokon,hiszakkoregésznapotthonacsalád.Ellenőrizze,ésigazoljaállítását!
2.feladat
Számoljakimindenegyeshónapra,hogyazévesösszesfogyasztáshányszázalékáthasználtaelazadotthónapban!
6.AdatforrásokegyesítéseA gyakorlat folytatja az előző gyakorlatban megkezdett munkát. Felhasználjuk a márelkészültstreamegyrészét,ésaztkiegészítjüktovábbifunkcionalitásokkal.Azelőzőgyakorlat témájaagázfogyasztásalakulásánakvizsgálatavolt.Nyissukmegastream-et:
Mitisjelölnekaszínestéglalapok?
• Apirosszínneljelöltnode-okalapvetőenadatelőkészítésiműveleteketvégeznek.Azadatforrásóraállásoszlopánakértékeibőlnapi fogyasztásiadatokatállítanakelő.
• A zöld színnel jelölt node-ok létrehozzák az Év ésHónap számított oszlopokat,melyekreépülnekahaviilletveéveslebontásústatisztikák.
• A kék színnel jelölt node-ok végzik el a számításokat, és jelenítik meg azokeredményeit.
Mégmielőttastream-ettovábbépítenénk,bővítenénkújabbnode-okkal,ismerjükmegegy olyan funkcióját a Modeler-nek, mely segítségével a stream-jeinket átláthatóbbá,strukturáltabbátehetjük.
SuperNode A SuperNode-ot nem találjuk meg egyik node palettán sem. Igazából nem is végezsemmilyenműveletet.Szerepecsupánannyi,hogymásnode-okatfoglalmagába,azokatelrejtve,ígyátláthatóbbáéskönnyebbenkezelhetőbbétéveastream-et.Természetesen célszerű olyan node-okat foglalni egy csoportba és elrejteni egySuperNodemögé,amelyekmegléténekközösértelme,szerepevan.Mintahogyaképenláthatószínestéglalapokisilyennodecsoportokatjelölnek. ASuperNodekészítéséneklépései:
• Jelöljükkiazegycsoportbabefoglalnikívántnode-okat.
• Kattintsunkajobbegérgombbalbármelyikkijelöltnode-on,ésamegjelenőhelyi
menübőlválasszukaCREATESUPERNODE parancsot.
De használhatjuk a SUPERNODE MENÜPONT CREATE SUPERNODE / FROMSELECTION… parancsátis.Aparancskiadásautánakövetkezőeredménytlátjuk:
NyissukmegalétrejöttSuperNodetulajdonságait:
Lehetőségek:
• AzANNOTATIONAS fülönnevetésleírástadhatunkaSuperNode-nak.• A Zoom In gombra kattintva, pedig „belenagyíthatunk”, megnézhetjük a
SuperNodetartalmát.HarákattintunkaZOOMIN parancsgombra,megtekinthetjükaSuperNodeáltalelrejtettnode-okat:
ASuperNode-onbelül,haszükségesújabbSuperNode-okathelyezhetünkel!
Úgy léphetünk egy szinttel feljebb, hogy a SUPERNODE menüpontból kiválasztjuk aZOOMOUT parancsot.Ugyaneztahelyimenübőlismegtehetjük. VessünkmégegypillantástaSTREAMS palettára:
Apalettánastreamnevealattkinyitható/becsukhatómódonmegjelennekaSuperNode-ok.AstreamvagyazegyesSuperNode-oknevérekattintvaközvetlenülazadottszintreugorhatunk.
HaszükségesegymeglévőSuperNode-otfelisszámolhatunk,kibontvaannaktartalmátegyszinttelfeljebbre.EhhezkikelljelölniaSuperNode-ot,ésS U P E R N O D E menübőlazE X P A N D parancsotválasztani.
Készítsen SuperNode-okat a színekkel jelölt node csoportokból. Nevezze is el az elkészültSuperNode-okat.
Eredmény:
Továbbiadatforrásbevonása
Vegyen fel a stream-be egy újabb Excel source node-ot és olvassa be a G Á Z Á R A K . X L S fájltartalmát!
Abeolvasottadattáblakétoszlopottartalmaz:
AMIKORTÓL oszlop a gázár változásainak dátumait, míg a GÁZÁR oszlop az adottdátumtólérvényesgázármértékéttartalmazza.
Ha szeretnénk az előző alkalommal elkészült fogyasztási statisztikák mintájára, teháthaviésévesbontásbanrezsiköltségeketisszámolni,akkorszükségleszakétadatforrásegyesítésére.Több tábla adatainak egy táblába történő egyesítésére aMERGE és azAPPENDnodehasználhatók.AtáblákoszlopainakegyesítésétaMerge,mígkétazonosfelépítésűtáblasorainakazösszesítésétazAppendnode-dalvégezhetjükel.Jelen feladatunk megoldásához a Merge node szükséges, hiszen a két tábla oszlopaitszeretnénk egyesíteni: Minden egyes fogyasztási dátumhoz hozzá kell rendelnünk azéppenakkoraktuálisgázárat.A feladatot többfélemódon ismegoldhatjuk.Éppenezértmindenekelőtt ismerkedjünkmeg a Merge node lehetőségeivel, hogy a számunkra legkényelmesebb módotválaszthassukki!
MergeNode AMerge (és azAppend is) egyolyannode, amelynek többbemenete is lehet. Tehát astream-en belül ugyanabba a Merge node-ba több más node-ot is kapcsolhatunk(legalábbkettőt,hogylegyenértelme).Anodebeállításai:
• AzINPUTS fülönlévőlistatartalmazzaazonadatforrásoklistáját,amelyekanodebemenetéülszolgálnak.
• AMERGE fülönadhatjukmegakétadatforrásegyesítésénekamódját,logikáját.• AFILTER fülmárismert,mezőketnevezhetünkát,éskapcsolhatunkki.• AzOPTIMIZATION fülönmegadhatjuk,hogymelybemeneti adatok rendezettek
máreleve,ezáltalgyorsítvaanodefutását.
HaaMergenodevalamelyikbemenetikapcsolatáttöröljük,anodeakkorismegjegyzi,mintadatforrást.Haszeretnénktörölni,akkorválasszukazI N P U T S fülaljánaV I E W U N U S E D T A G S E T T I N G S opciót!
AszámunkralegfontosabbbeállításokataMergefültartalmazza:
Azoszlopokegyesítésénekkétlehetségesmódja(MERGEMETHOD) lehet:
• Sorrendalapján(ORDER) • Kulcsértékekalapján(KEYS)
HaazORDER-tválasztjuk,akkoratáblákoszlopaiúgy lesznekegyesítve,hogymindenforrástáblából az azonos sorszámú sorok értékeit illeszti egymás mellé a Modeler.Fontos tudni, hogy ilyenkor az eredménytáblában annyi sor lesz, mint a legkisebbforrástáblában a sorok száma. Oda kell figyelni továbbá a forrástáblákban a sorokmegfelelőszempontszerintirendezésére.HaaKEYS opciótjelöljükmeg,akkoraforrástábláksoraitaszerintrendeliegymáshoz,hogyazokvalamilyenáltalunkkijelöltoszlop,vagyoszlopokértékeibenmegegyeznek-e.Ezenoszlopot,vagyoszlopokathívjukkulcsmezőnek,mezőknek.Ezen opció választásakor a Modeler csak azon mezőket (oszlopokat) sorolja fel alehetséges kulcsok (POSSIBLE KEYS) rovatban, amelyek neve megegyezik aforrástáblákban. Emiatt sokszor szükséges lehet egy-egy Filter node használata azegyesítéselőtt,hogyátnevezzükaforrástáblákoszlopait.
Ha a kulcsok szerinti (Keys) egyesítést választjuk, akkor négy lehetséges módonhajthatjukvégreaműveletet:
• INCLUDEONLYMATCHINGRECORDS:Azadatforrásokazonsoraitkapcsoljaössze,aholakulcskéntmegadottoszlopokértékeipontosanmegegyeznek.Tehátnemkerülbeleazeredménybeegyolyan
sor sem, amelynek kulcs értéke a másik adattáblákban nem szerepel akulcsértékekközött.
• INCLUDEMATCHINGANDNON-MATCHINGRECORDS:Mindegyikadatforrásmindegyiksorátbelevesziazeredménytáblába,mégazokatis,amelyekkulcsértékeiamásikforrástáblákbannemtalálhatókmeg.Amikoregyforrástáblaolyansorátveszibeazeredménytáblába, amelyheznemrendelhetőazonos kulcsértékű sor a többi forrástáblából, akkor a hiányzóoszlopértékeket$null$értékekkeltöltifel.
• INCLUDEMATCHINGANDSELECTEDNON-MATCHINGRECORDS:Azelőzőkettőátmenete.Megadhatjuk,hogymelyikforrástáblákbólvegyebeleazösszes sort az egyesített táblába, és melyekből csak a kapcsolódó sorokat. Haegyik forrástáblát sem választjuk ki, akkor az első, ha mindegyiket, akkor amásodikopcióvalegyezikmeg.
• INCLUDERECORDINFIRSTDATASETNOTMATCHINGANYOTHERS:Csak az elsőként megadott forrástáblából veszi be az összes sort, akkor is, hanincs kapcsolódó kulcsérték a többi táblában. Azt, hogy melyik legyen az elsőforrástáblaazInputsfülönállíthatjukbe.
EgyesítésMost, hogy már ismerjük a Merge node lehetőségeit, válasszuk ki az egyesítésszámunkrahatékonymódját:
• A sorok sorrendje alapján (Order) pillanatnyilag nem tudjuk elvégezni afeladatot. Ehhez arra lenne szükség, hogy a Gázárak táblát kibővítsük mindenolyan dátummal, ami még nem szerepel benne, de szerepel a Gázfogyasztástáblában.
• Viszont mindkét tábla tartalmaz dátum típusú adatot, melyeket kulcsnak véveelvégezhetjükazegyesítést.Figyeljünkarra,hogymindkéttáblatartalmazolyandátumot,amelyetamásiktáblanemtartalmaz,tehát,hanemszeretnénkadatotveszíteni,akkorafullouterjoin-otkellválasztanunk(másodikopció).
Emlékezzünk: a kulcsként használt oszlopoknak azonos nevűeknek kell lenniük aforrástáblákmindegyikében.
Kapcsoljon egy F I L T E R node-ot aG Á Z Á R A K . X L S source node után! Nevezze át aM I K O R T Ó L oszlopotD Á T U M –ra!
HelyezzenelegyM E R G E node-otastream-ben,éskapcsoljahozzáazelőbblétrehozottF I L T E R node-ot!
A Merge node-hoz hozzá kell még kapcsolnunk a másik adatforrást. Ne közvetlen aGázfogyasztás.xls source node-ot kapcsoljuk hozzá, hanem az „Új mezők megadása”SuperNode-ot,hogynekelljenkésőbbújraszámolnunkanapi fogyasztásokatésazÉvvalamintHónapmezőket.
KapcsoljaaM E R G E node-hozazÚ J M E Z Ő K M E G A D Á S A SuperNode-otis!
Astreameddigiígynézki:
NyissamegaM E R G E nodebeállításait!
AzInputsfülönláthatókisazadatforrásaink.
AM E R G E fülönállítsabe,hogykulcsszerintegyesít,aD A T U M oszlopotvévekulcsnak,éshogymindegyikforrástáblamindensorátbelevesziazeredménybe!
KapcsoljonaM E R G E nodeutánegyT A B L E node-ot,ésfuttassa!
Amintazábránisjóllátszódikazegyesítetttáblábanmindkétforrástáblamindensoramegtalálható,ésaholnincskapcsolódórekordott$NULL$ értékekkelvanfeltöltveasor.
A feladatunk az, hogy a Gázár oszlop értékeiben a $NULL$ értékeket kicseréljük azéppen aktuális gázárra. Értsük ezt úgy, hogy feltételezve, hogy a tábla sorai aDATUM oszlop szerint vannak rendezve, minden sorban a $NULL$ értékeket helyettesítsük afelettelévőutolsónem$NULL$ értékkel.
Egymárlétezőmezőértékeinekakitöltésére,újraszámolásáraaFILLER node-othasználhatjuk.
BáratáblasoraiaD A T U M oszlopszerintrendezettnektűnnek,biztosamibiztos,kapcsoljonegyS O R T node-otaM E R G E nodeután,ésrendezzeatáblát,majdegyF I L L E R node-otiskapcsoljonastreamvégére!
• AFILLINFIELDS rovatbanadhatjukmegazonmezőket,amelyeknekújértékeketszeretnénkadni.
• A REPLACE rovatban annak a módját adhatjuk meg, hogy mely értékeketcseréljükki:
o BASEDONCONDITION:ACONDITION rovatbanmegadottlogikaikifejezésadjamegaszabályt.Haigazazeredménye,akkorazadottértéketcseréli,egyébkéntnem.
o ALLWAYS:Mindenértéketcserél.
o BLANKVALUES:Afelhasználóáltaldefiniáltüresértékeketcseréli.Használatamegegyezikazzal,mintha feltételként a@BLANK(@FIELD) képletet használnánk.A felhasználó az üres értékeket a Type node segítségével határozhatjameg.
o NULLVALUES:Minden $NULL$ értéket cserél. Használata ugyanaz, mint a@NULL(@FIELD) képletfeltételkénttörténőhasználata.
o BLANKANDNULLVALUES:A$NULL$ ésazüresértékekcseréjétiselvégzi.
• AREPLACEWITH rovatban adhatjukmeg az új értéket, amire cseréli amezőkértékeit.
A Sequence függvények között található @LAST_NON_BLANK függvény használatatűnhetne kézenfekvőnek, hogy segítségével meghatározzuk a Gázár mezőben az újértékeket. Ahhoz, hogy a függvényt használni tudjuk, a $null$ értékeket úgy kellmeghatároznunk,mintüresértékeket.
EhhezegyTypenode-ra leszszükségünk.
MégaF I L L E R nodeeléfűzzünkbeastream-beegyT Y P E node-ot!
A Type node beépítve megtalálható a már megismert Source node-ban is, csak azoknál eddig még nemismertük meg az üres értékek meghatározásának a lehetőségét. De természetesen ezt a műveletet, haszükséges,aSourcenode-oknálközvetlenüliselvégezhetjük.
A TYPES fülön lévő táblázatMISSING oszlopában határozhatjuk meg, hogy az egyesmezőkmelyértékeilegyenekatovábbiakbanüreskéntdefiniálva.
KattintsunkaG Á Z Á R mezőM I S S I N G tulajdonságára,ésválasszukazO N ( * ) opciót.
Így bekapcsoltuk egy alapértelmezett módját az üres értékek meghatározásának. Haszeretnénkrészletesebbenlátniabeállításokat,akkorválasszukaSPECIFY… opciót:
Amiaszámunkrafontosmost,azapanelalsórésze:
• ADEFINEBLANKS opcióbevankapcsolva:• Ezszükséges,egyébkéntnemhatároznánkmegazüresnekminősülőértékeket.• HaaDEFINEBLANKS opcióbevankapcsolva,akkoraMISSINGVALUES listában
mi magunk felsorolhatjuk, hogy a node mely értékeket minősítse üresnek.Például egy olyan táblában, ahol a munkahely oszlopban az adatfelvivők a„munkanélküli”szövegetadtákmeg,otteztazértéketmegadhatjukalistában.
• A RANGE opció bekapcsolásával megadhatjuk egy teljes tartományát is azértékeknek,amelyeketüreskéntszeretnénkmeghatározni.
• ANULL opcióbejelölésévela$NULL$ értékeketisüresnekdefiniáljuk.• AWHITESPACE opciómegjelölésévelafehérközöket(olyanszövegek,amelyek
nem tartalmaznak látható karaktert) tartalmazó értékeket is üreskénthatározhatjukmeg.
Zárjabeazablakokat,majdnyissamegaFillernodebeállításait,éstöltsekiarovatokat!
Jelenesetbena@LA S T _ N O N _ B L A N K ( G Á Z Á R ) képletismegfelelőlettvolna.
KapcsoljonegyT A B L E node-otastreamvégéreésellenőrizzeazeredményhelyességét!
Feladatok
1.feladat
HozzonlétreegyújszámítottmezőtÉ R T É K néven,melybenanapifogyasztásésazaznapigázárszorzatátszámoljaki!
2.feladat
Havi lebontásbanszámoljakiazösszes fogyasztástésagázszámlaösszegét!A listátévéshónapszerintrendezvejelenítsemeg!
3.feladat
Képezzen SuperNode-ot azon node-ok bevonásával, amelyek a költségek beolvasását ésegyesítésétvégzik!
KészítsenSuperNode-otazonnode-okból,amelyekaköltségstatisztikákszámolásátvégzik!(1.és2.feladat)
7.Klaszterezés
Azadatbányászatcélja:hagyományosstatisztikaiszámításokkalnemszámíthatóinformációkkinyeréseegyadathalmazból.
Akövetkezőkbenmegismerkedünknéhányadatbányászatieszközzel.
Adatokminőségénekvizsgálata:Quality(output)nodeEgy iskola évvégi jegyeit mutatja a JEGYEK.XLS fájlban található adatbázis (261 diákadatai):
OlvassukbeazadatokataJ E G Y E K . X L S állományból!
JelenítsemegabeolvasottadatokategyTablenode-al!
AzExcel(input)nodebeállításai
NevezzeátatöbbszavasmezőketazExcel(input)nodeFilterfülén!
Typefületkésőbbállítjukbe.
Állítsa a tizedesjegyeket alapértelmezésként 0 darabra a S T R E A M P R O P E R T I E S -nél! (Mertosztályzatoklesznekazadatok!)
AzOPTIONS fülöneztabeállítástkellehhezmegtenni:
Egytáblátbeillesztvenézzemegabeolvasottadatokat!
Azadatokminőségvizsgálataaztjelenti,hogymelyikváltozómennyihasználhatóadatotésmennyihiányzóadatottartalmaz.Hiányzóadatkénttekinthetők:
• nulladatok:$null$,aforrásbanishiányoztak• blank adatok: felhasználó által input és type node-nál megadott helyettesítő
adatok• 0hosszústringek• „fehér”stringek:nemláthatókarakterekbőlállóstringek
IlyenadatokelőfordulásistatisztikájátkészítielaQUALITYNODE .
IllesszünkegyQualitynode-otazExcel(source)nodeután!Próbáljukkiarajtalevőbeállításokat,futtatássalmeggyőződveazeredményről!Avégsőbeállításokezeklegyenek:
COUNTOFRECORDSWITHVALIDVALUES: megadja-e az adott mező szerint érvényesrekordokszámát.
BREAKDOWN COUNTSOF RECORDSWITH INVALID VALUES: megadja-e az adott mezőszerintérvénytelenrekordokszámátamegadottadathiba-típusokszerintibontásban.
Nem minden diák esetén szerepel az összes tantárgy (ennek oka lehet: felmentés,fakultációstárgy,nemmindenévfolyamonoktatotttárgyak,gépelésihiba,stb.)
GördítsükleazExcel(source)nodeT Y P E S fülénaföldrajzmezőM I S S I N G rovatát,ésaS P E C I F Y választásávalmagunkdefiniáljunk„null”értékűblankadatokat!
FuttassukezutánújraabeállítottQualitynode-ot!
AkövetkezőváltozáslátszikaQualitynodeeredményén,okaennek,hogy89tanulónulladatát blank (felhasználó által megadott) módon helyettesítettük – ugyancsak nullértékekkel:
AQualitynodeeredményealapjándönthetünk,melymezőket szeretnénkhasználni. Epéldánálhagyjukmega80%fölöttikitöltöttségűmezőket!Atöbbimezőrenemcélszerű
vizsgálatokat végezni, mert túl sok elhagyott adat van bennük. Cél, hogy legyen elégolyanrekordunk,melynekmindenvizsgáltmezőjébenérvényesadatszerepel.
AzExcel(source)nodeF I L T E R fülénhagyjukela80%alattikitöltöttségetmutatómezőket!
EgyS E L E C T N O D E -dalhagyjukkiazokatarekordokat,melyekbenhiányzóadatvan!
Használhattuk volna a Select node-ot a következő feltétellel is, kihasználva, hogy $null$ adattal végzettműveleteredményeis$null$,ésmindenerrevonatkozólogikaifeltételhamis:
Egyeztkövetőeredménytáblázattalnézzükmegamaradékrekordokat!
A végeredményül kapott 195 rekord „tökéletes” minőségű adat, minden mezőjeosztályzatot tartalmaz. Az adatokat sokféle előzetes vizsgálatnak vethetjük alá, emódszereket előfeldolgozásnak nevezzük. Előfeldolgozás lenne például a nyilvánvalóadathibákkiszűréseis,ennélapéldánálanem1és5közöttivagyanemegészértékekkihagyása,manuálisjavítása.
Célszerűmindenstatisztikai,adatbányászatimódszerhasználataelőttmeggyőződniazadatokminőségérőlaQualitynodesegítségével!
WebNodeAzadatbányászatban igen fontosakülönbözőattribútumok (változók,mezők)gyakoriegyüttállását megfigyelni. Halmaz típusú változók leggyakoribb ilyen attribútum-kapcsolatait szemlélteti a Web node. Kapcsolatnak nevezünk ebben az esetben kétváltozóegy-egyadottértékétegyüttesentartalmazórekordot.Pl.adiákoktáblázatában45 rekord esetén van együttmagatartás 5-ös és történelem4-es. A legtöbb rekordnálmeglévőkapcsolatokatmutatjamegaWeb(graphtípusú)node.
Előkészületként azExcel (source)nodeT Y P E fülén állítsukminda tíz használandóváltozót settípusúra!
EzutánszúrjunkbeegyWeb(graph)node-otastreambeaSelectnodeután!
AWeb node beállításainálmeg kell adni,mely (halmaz típusú!) változók kapcsolataitszeretnénkmegjeleníteni.
AmárismertmódonadjukmegmindatízváltozótaFieldslistán!
Futtassukleanode-otagépibeállításokkalazE X E C U T E gombbal!
A kapott grafikonon levő gráf csúcsai jelzik az egyes változók bizonyos értékeit, avonalak vastagságai jelzik két változóérték közti kapcsolatok számát rekord-darabszámban.Akapottgrafikonablakinteraktívelemekettartalmaz.Abalfelsőrészenlátható (pirossal kiemelt) csúszkával lehet szabályozni, hogy hány rekord fölötti
kapcsolatokatmutassonazábra,eztszámszerűlegisbelehetírni.Ha120értéketadunkmegitt,akkoreztláthatjuk:
Haegycsúcsonjobbegérrelkattintunk,gyorsmenüjelenikmeg,ittaHIDE menüponttalelrejthető ez a csúcs, a HIDE AND REPLAN-nal pedig a gráf maradék részétújraterveztethetjükecsúcsnélkül.
Próbáljukelrejteniabiológia5-ösnekmegfelelőcsúcsot!
A grafikonablakWEB feliratú eszköztárgombjánakmenüjében aREVEALALL mindencsúcs megjelenítését jelenti (a rejtettek előkerülnek), az alatta levő újra is tervez, aCLEARSELECTION törli a kijelölést a kijelölt részekről, azUPDATE frissít, az alsó kétmenüpontpedigkörbevagyhálózatszerűenalegoptimálisabbanhelyezielacsúcsokat.
A LINK menüben az első két menüpont azt adja meg, hogy a vonalak vastagságaegyenesen vagy fordítottan legyen arányos a rekordszámmal, a második pedigfolyamatosésdiszkrét(3-féle)vonalvastagságköztvált.Ugyanezeket a beállításokat megtehettük volna a Web node OPTIONS fülén is. Itt avonalak maximális számát, és megjelenítési korlátokat is megadhatunk. (Ezt lentebbkipróbáljuk,ahozzátartozóábraisottlátható.)AWebnodeAPPEARANCE füléncímet,színeket,jelmagyarázatotlehetbeállítani.
Visszatérve a Web node első (PLOT) fülére, ott beállíthatunk a DIRECTED WEB lehetőséggelegycélváltozótis.
Állítsukbeittabiológiaváltozót,samásiklistárólpedigvegyükel!
Állítsuk az érzékenységet az O P T I O N S fül S H O W O N L Y L I N K S A B O V E részén 70-re! (Így 70darabrekordnálerősebbkapcsolatokatmutatmajdcsakagrafikon.)
Kapcsoljuk be a fül alján a N E T W O R K L A Y O U T lehetőséget! (Így a grafikon-gráf csúcsai nemellipszisalakbanlesznekelhelyezve.)
Ezleszazeredményfuttatásután,középenláthatóabiológiaváltozó5-ösértéke:
Modellekhasználata
Adatbányászatimodelleketa fentiötszögalakúnode-oképítenek.Amodellépítőnode-okegy-egystream-ág„levelei”,belőlüknyílnemindulhattovább.Halefuttatjukezeketanode-okat,akkorezekafuttatáshatásáratöbbnyirespeciálistulajdonságúújnode-okathoznaklétre,melyeketkésőbbbeilleszthetünkastream-bevagyelmenthetünk.Az„ötszögek”általgenerált,készmodelleketjelentőújnode-okajobbfelsőmunkaablakMODELS fülénláthatók,duplakattintássalvagyvonszolássalilleszthetőkbeastream-be.Alakjukmindigegysárga„gyémánt”,melynek jobbalsórészénamodell típusárautalógrafikalátható:
Akészmodelleketvonszolássalvagyduplakattintássalemelhetjükbeastream-be.A modellépítés fontos előzménye, hogy megadjuk, milyen bemeneti- és milyencéladatokkal építsenmodellt egy-egy ilyen node. A bemenő és kimenő változókat kéthelyenadhatjukmeg:asourcenode-okTYPEfülénvagyegykülönTYPENODE-on.
A MO D E L S ablak most még nem tartalmaz „készmodell-node”-okat, mert még nem futtattunk egymodellépítőnode-otsem!
KlaszterezésimódszerekAklaszterezésnevűadatbányászatieljárássalfoglalkozunkelőször,enneklényege,hogyaz adathalmazt olyan csoportokra bontjuk, melyek hasonló tulajdonságú rekordokattartalmaznak, csak „alig eltérő” attribútumokkal. Például az alábbi kétváltozósadathalmazközülazelsőnélérdemes,amásodiknálnemérdemesklaszterezni.
Két attribútum (változó) esetén itt szemléletesen látszanak az „adatfelhők”. ACelementineképeselvégezniaklaszterezéstjóvaltöbbváltozóeseténis.Leggyakrabbanhasználtmodellkészítőnode-ok:Two Step: Kétlépésesmódszer. Tömöríti az adatokat az első lépésben, a másodikbanhierarchikusanépítkezveoptimalizáljaabelőlükképezhetőcsoportokszámát.
K-means: Megadott számú csoportot képez, úgy, hogy iterációkkal dolgozva kiscsoportokathoz létre,azokatazátlagaikkalhelyettesítvekészítbelőlükújabbésújabbcsoportokat, míg a csoportok száma el nem éri az előírt darabszámot. Gyakran adhasonlóeredményt,mintaTwoStep.Kohonen: kétdimenziós „adatfelhővé” alakítja a sokdimenziós adathalmazt, az X-Ykoordinátákkalábrázoltadatokszemléletesebbenmutatjákazelkülönülőcsoportokat.Anomaly: Klaszterezést végez, majdmegállapítja, hogy egyes rekordokmilyen „távol”esnek saját klaszterüktől, ahol ez az érték magas, azt „rendellenes” adatkénttekinthetjük.
Mostazelsőésazutolsómodellelismerkedünkmeg.
TwostepmodellhasználataKlaszterezzünk a tanulónyilvántartásban a főtantárgyak (irodalom, történelem,matematika,nyelv1),továbbáamagatartásésszorgalomosztályzatokalapján!
Először az Excel (source) node T Y P E S fülén a D I R E C T I O N rovatban állítsuk be ezeket aváltozókategyleendőmodellbemeneteként:
Állítsuk a Types rovatnál mindegyik változót típusúvá! Ennek szerepéthamarosanláthatjuk.
IllesszünkbeegyTwoStepmodellépítőnode-otaSelectnodeután!
Ha majd ezt lefuttatjuk, matematikai módszerek segítségével klaszterekbe sorolja azadatokat. A klaszterbe sorolás szabályait egy beilleszthető „készmodell-node”-bantárolja.Enode-otastream-beillesztveésfuttatvaegyújmezőtfoglétrehozni,melynekneve$T-TwoStep,sebbenmindenrekordhozegyjelzéstartozik,hogyőmelyikklasztertagja.
Haamodellépítőnodebeállításaitnézzük,eztláthatjuk:
MODELNAME: automatikus/useráltaladottmodellnévUSEPARTITIONEDDATA: modellépítés,tesztelésvagyérvényesítéscéljáramegadhatókkülönbözőrekordhalmazok,azelőrebeállítottakkaldolgozzon-e,vagyazösszesadattal.
STANDARDIZENUMERICFIELDS: Mindennumerikusmezőtelőször0várhatóértékű1szórású változókká transzformáljon-e, vagy adatértékeiknekmegfelelő súllyal esseneklatbaaszámításoknál?EXCLUDEOUTLIERS: A klaszterezés első lépésében a „rendellenes” adatokat kizárja aModeler a további klaszterépítésből. Ha e rekordok a végén kialakult véglegesklaszterekbe nem illenek bele, egy „zaj”-klaszterbe lesznek besorolva, $null$ lesz aklaszterjelzésük. (nem biztos, hogy lesznek ilyen rekordok, de a végső klasztereketbefolyásoljaazelsőlépésilyenmódosítása.)
CLUSTERLABEL: Alétrehozandóújmezőmilyentípusúlegyen.LABEL PREFIX: Ha string-adat a klaszternév, akkor milyen előtagja legyen aklaszterkódnak.
AUTOMATICALLYCALCULATE.. . : klaszter-darabszámkorlátainakmegadásaSPECIFYNUMBER.. . : konkrétklaszter-darabszámmegadása
Futtassukleamodellépítőnode-otagépibeállításokkal!
PármásodpercmúlvamegjelenikegykészmodellikonjaabalfelsőablakMODELS fülén.
Egyémántalakú„készmodell-node”-nakjobbegérmenüjébőlválasszukkiaB R O W S E menüpontot!
A felépített modell áttekintő leírása jelenik meg. Információkat kapunk a képzettklaszterekről.Mivelhierarchikusanjelenítimegazinformációtazablak,ezérta+jelekrekattintvanézhetjükmegarészleteket:
Kétklaszterkeletkezett,amásodiknakarészleteitkibontvaláthatjukazábrán.Azelsőés amásodik klaszterbeli adatok száma 129, illetve 66, amásodik klaszter adatainaklegnagyobbrészeirodalomból4-es(63,64%),azadatoklegnagyobbrészemagatartásból5-ös (57,58%), stb.minden Set típusú változóramegadja ezt az információt amodellleírása.
KattintsunkduplánakészmodellreaMO D E L S ablakban!
Ezzel beemeltük a stream-be egy új node-ként. Gyémánt alakja jelzi, hogy ez nemmodellépítőnode, hanemkészmodell.Bármelyolyan streambenalkalmazhatjuk ezt anode-ot, melynekmodellben szereplő változói azonosak a jelenlegivel. A kész modellugyanis szabályokat tartalmaz, milyen bemeneti változók milyen adatai esetén melyklaszterbetartozikegy-egyadat.
Akészmodell(gyémántalakú)node-játkössükaSelectnode-hoz!
KössünkegyTable(táblázatosmegjelenítés)node-ota„készmodell”-node-hoz!
FuttassukaTablenode-ot!
Mostmegnézhetjükaklaszterezéseredményét.Akészmodellnode-jaújmezőtadottazadatokhoz,ebbenolvasható,melyikrekordvanaz1-esésmelyika2-esklaszterben.
Egygrafikonnalszemléletesebbétehetjükaklasztereket.
IllesszünkegyPlotnode-otakészmodell-nodeután!
Állítsuk be az alábbi ábrán látható változókat, az irodalom-történelem tengelyeket, a nyelv1szerinti színezést,matematika szerintiméretezést és a biológia szerinti alakot, továbbá tegyükkülönpanelraaklaszterekmezőiszerintazadatokat!
FuttassukaPlotnode-ot!
Rövid vizsgálódás után leolvasható, hogy milyen típusú tanulók kerültek az egyesklaszterekbe.
Igaz-e az a mindennapos vélekedés, hogy egy diáknak vagy humán vagy reál beállítottsága van? Ennekmegfelelőenkészítünkújmezőket,sváltoztatunkamodellépítőnodebemenőadatainis.
AzExcel(source)nodeT Y P E S fülénígyállítsunkbemindent:
Itt minden változóRange típusú lett, minden változóNone értékű, modellek számáranembemenet,nemkimenet.
KétD E R I V E N O D E -dal átlagoljuk a humán (irodalom,nyelvtan, történelem,nyelv1,nyelv2) és areál(matematika,biológia)tantárgyakat,azújmezőknevelegyenh_átlagésr_átlag.
Az átlagokhoz szükséges kifejezések a két Derive node-ban a következők:(irodalom+nyelvtan+történelem+nyelv1+nyelv2)/5illetve(matematika+biológia)/2Mindkétnode-banaFIELDTYPE rovathozRANGE-tadjunkmeg.
Mivelátlagokszerepelnek,astreamproperties-nélkapcsoljunkátegytizedesjegyértékre!
Ezazértkell,mertegészrekerekítvea táblázatokbanésagrafikonokonnem jól látjukmajdazátlagszerintikülönbségeket.
Szúrjunkbekövetkezőnode-kéntegyTypenode-otésállítsukbeazalábbimódon:
Aszámítotttárgyátlagokegyikébensemszerepelatestnevelés,magatartásésszorgalomtárgy jegye, ezért ezeket is klaszterezési alapként tekintjük. Tehát a modellépítésszámára a testnevelés, magatartás, szorgalom, h_átlag, r_átlag változókat adjuk megbemenetként.
EzutánillesszünkbeegyTwoStepmodellépítőnode-ot,sebbenazalábbibeállításokattegyük:
Adjunkújnevet (TwoStep2) amodellépítőnode-nak, különben lefuttatva felülírja az előzőkészmodellünket!
Jelöljük be az EXECUTE OUTLIERS négyzetet, hogy a „kilógó” esetek kizárásávalkeletkezzenazelsőlépéstömörítettadathalmaza.Aklaszterekszámánakminimumáhozírjunk3-at,lehetőségetadvaahumánésreálonkívülmáscsoportnakis,havan.
FuttassukleamodellépítőTwostep2node-ot!
Az itt látható „készmodellt” kapjuk. Az első klaszterbe a teljes kitűnők tartoznak, amásodik klaszterben a humán átlagok átlaga a jobb, a harmadikban pedig a reálátlagoké.Megfigyelhető,hogyrealtípusúváltozókkaldolgoztunk,snemaklaszterbeesőrekordok attribútumainak százalékos megoszlását, hanem a klaszterátlagot írja kimindenváltozóra.
Emeljükbeakészmodellt(vonszolássalvagyduplaklikkel)astreambe,kössükaTypenodeután!
TegyükszemléletesséegyPlot(graphtípusú)node-dalazeredményt!
Mivelajel-alakotcsakSettípusúváltozóralehetbeállítani,ezértegymezőtnemtudunkmegjeleníteni,hagyjukkiezértatestnevelést.
FuttassukaPlotnode-ot!
E koordináta-rendszerben a mellékátló feletti pontok olyan rekordokat jelentenek,melyekben a reálátlag jobb a humánnál, a mellékátló alatti pontoknál pedig ez éppfordítvavan.
AzAnomalynodehasználata
Következőcélunk,hogy„szokatlan”rekordokatkeressünkazAnomalymodellépítőnodesegítségével.
IllesszünkeddigistreamünkbeegyAnomalymodellépítőnode-otameglévőTypenodeután!
Az Anomaly node bemenetei ugyanazok amezők,melyeket a TwoStep node számáramegadtunk. Ezen mezők adataiban fog „átlagostól eltérő” rekordokat keresni amodellünk.
Tegyük meg az Anomaly (modellépítő) node beállítópaneljénekMO D E L fülén az alábbi képenláthatóbeállításokat!
MINIMUM ANOMALY INDEX LEVEL: itt megadhatjuk milyen „szabálytalanságindex”fölött tekintsen egy rekordot anomáliának, szabálytalannak. (Ez a jelzőszám a rekordcsoportjának csoportátlagtól való átlagos eltéréséhez viszonyítja minden rekord sajátcsoportátlagától való eltérését, ha 2 fölött van az értéke, az már szabálytalanságrautalhat.)PERCENTAGEOF.. . : Az összes rekord százalékában lehet megadni, hány szabálytalanrekordotadjoneredményülazeljárás(alegnagyobbszabálytalanságindexűrekordok).NUMBEROFMOST. . . : Pontosdarabszámmallehetmegadni,hányszabálytalanrekordotadjoneredményülazeljárás.NUMBER OF ANOMALY FIELDS TO REPORT: A klaszterátlagtól legnagyobb eltéréstmutatómezőketisjelziamodellmindenrekordesetén,mégpedigazeltérésmértékévelegyütt.Meglehetadni,hányilyenmezőtakarunkkiszámíttatni.A gép által felkínált beállításokat két helyen kellett átállítani, a 3 fölöttiszabálytalanságindex-értékű rekordokat jelöltessükmeg anomáliának, illetve egyetlenmezőtadjunkmegcsakalegnagyobbeltérésvizsgálatához.
Azadathalmaztólfügg,mekkoraanomáliaindexettekintünk„szabálytalanságnak”.Kevésváltozóeseténnemérdemessokeltérés-változótkiíratni.
FuttassukabeállítottAnomalymodellépítőnode-ot!
A futtatásegykészmodellt (gyémántalak!) tesza jobb felsőablakba, aMODELS fülre.Ennek jobbegérrel elérhető gyorsmenüjében a BROWSE menüpontra kattintva eztlátjuk:
Hétszabálytalanrekordottaláltagépamegadottbeállításokszerint.Ezekcsoportjuktólvalóeltéréseah_átlagésar_átlagmezőknélalegnagyobb.Láthatjukakétklaszter(peergroup)tulajdonságaitis(zárójelbenazátlagok,standarddeviation=szórás).Atovábbirészleteket a hozzáfűzött új mezők tartalmazzák, a szinteket kibontva nézzük megezeket!
Szúrjuk be a keletkezett kész modell gyémánt alakú node-ját a Type node után, majd fűzzünkhozzáegytáblázatotoutputként!
Futtassukleamostbeszúrttáblát!
Például a kijelölt 141. rekord szabálytalanságindexe 4,1 , a saját klaszterében, az 1-esszámúbanareálátlagrovatbantérellegjobbanasajátklaszterétől.Áttekinthetőbbé válnak a rendellenes rekordok és a csoportosítási logika, ha a $O-Anomalyindexmezőalapjánsorbarendezünk,ésígynézzükát.
Szúrjunk a kész modell és a táblázat közé egy Sort node-ot, mely a $O-Anomalyindex szerintcsökkenősorrendberendeziarekordokat!
Azeredmény:
Látható,hogy3fölöttiszabálytalanságindexcsak7helyenvan,érdekesekesetlegamégkövetkező rekordok. Az első 10 anomália az első klaszterből „lóg ki”,míg a 2. számúclusterbenakiemelt11.rekorda„legszabálytalanabb”.
Önállófeladatok:
Klaszterezzünk Two Stepmodellel egyszer csak a reál, egyszer pedig csak a humán tantárgyakszerint!NézzükmegegyPlotgrafikonon,mennyibenesnekegybeakétféleklaszterek!
Keressükmegazöt„legszabálytalanabb”rekordotazösszestantárgyalapján!Figyeljükmeg,van-ekülönbségavégeredményben,hamindenváltozótDiscretetípusúnakállítunkbe!
8.NeurálishálóEz a gyakorlat arról szól, hogy egy bizonyos változó értékeit milyen adatbányászatialgoritmusokkallehet„jósolni”atöbbiváltozóértékeialapján.Adataink egy SPSS fájlban vannak. Ennek mezői egy régebbi 6400 fős amerikaistatisztikaifelmérésbenszereplőváltozók:
Afelmérésadatai:
Célváltozóvalrendelkezőadatbányász(tanuló)algoritmusokAmostkövetkezőmodellekhezcélváltozó(k)raleszszükség.Ezt/ezeketaSourcenode-ok TYPE fülén, illetve a Type node-ok beállításainál adhatjuk meg, a DIRECTION rovatban.HaOUT típusúegyváltozó,akkormodellekcélváltozójalesz(halehetséges),IN típusúváltozóbemenet,BOTH típusúmindkettő,NONE típusúpedignemveszrésztamodellépítésben.BelehetállítaniegyPARTITION lehetőségetis.Ezaztdöntiel,hogyazadott változó értékei a modellépítés és használat bizonyos fázisai számára adhatrekordokat.
Amodellekténylegeshasználataugyanistöbblépcsőseljárás.Háromvagynégylépésbenkaphatunkmatematikailagmegfelelőenalátámasztott,használhatóeredményeket.
Alépések:
• modellépítés: A modellépítő node használata egy kiválasztott rekordhalmazalapján.
• tesztelés:Akészmodellvizsgálata,finomításaegymásikrekordhalmazalapján,amodell analizálása.Hanemmegfelelőek az eredmények, újra az előző lépéshezkellvisszatérni,újmodelltkellépíteni.
• érvényesítés: A tesztelt, véglegesre alakított modell lefuttatása újabbadathalmazokon, ha kevéssé eltérő eredményeket kapunk, akkor használható akészmodell,hanagyazeltérés,azelsőlépésheztérünkvissza.
• tényleges használat: Újabban keletkező adathalmazokra, hasonlóadathalmazokban előrejelzésre használható a kész modell, amíg valamilyen újtényezőnembefolyásoljaamegfigyeltobjektumok,személyekviselkedését.
A PARTITION lehetőség egy olyan set típusú változót jelez, melynek két vagy háromértékekijelöli,hogymelyrekordoktartoznakazelső,amásodikilletveaharmadiklépésadathalmazához.Ha egy modellépítő node-nál az USE PARTITIONED DATA lehetőséget beállítjuk, amodellépítés,tesztelésvagyérvényesítéscéljáramegadottrekordhalmazokbólazelőrebeállítottakkalfogdolgozniamodell.
StatisticsnodehasználataAlapvető statisztikákat számít a megadott mezőkből. Az adott felmérésben többváltozóról gyaníthatjuk, hogy nem lényeges információt hordoz, pl. sejthető, hogyAmerikábansajáttelevízióvalszintemindenkirendelkezik.
KészítsünkegySourcenode-otafelmérés.savadathalmazbeolvasásához!
Írjukátanemnéltalálható„f”és„m”stringeketamagyar„n”és„f”rövidítésekre!
Illesszünkbeegystatisticsnode-otezekután!
Asourcenodebeállításai:
A FILTER és a TYPES fület később töltjük ki, ha előzetes információk állnakrendelkezésünkreazadatokról.
AFillernodebeállításai(azangolnyelvbenafemaleésamalemegfelelőiaférfiésanő):
Az előkészületek utánvégezhetnénk adatminőség-vizsgálatotegyQualitynode-dal,de most ez felesleges, miveltudjuk, hogy minden rekordmindenadatakivantöltve.A Statistics (output) node aváltozókról szóló statisztikákatés korrelációs együtthatókatmutat – csaknumerikustárolásúadatokra.EXAMINE: vizsgáltváltozók
STATISTICS: Milyen fajtastatisztikákat (jellemzőket)mutassonazegyesváltozókról:
• COUNT: adatokszáma• MEAN: átlag• SUM: adatokösszege• MIN: legkisebbadat• MAX: legnagyobbadat• RANGE: az előző kettő
különbsége,terjedelem• VARIANCE: szórásnégyzet
(variancia)• STD DEV: az előző
négyzetgyöke,szórásnégyzet
• STDERROROFMEAN: azátlagstandardhibája• MEDIAN: medián• MODE: módusz
CORRELATE: KorrelációszámításIttmeglehetadni,hogyafelsőlistánfelsoroltváltozókhozmilyenmásváltozókranézveszámítsonkorrelációsegyütthatókataModeler.ACORRELATIONSETTINGS gombbalakorrelációszámításbeállításaijelennekmeg:
IttaPearson-félekorrelációsegyütthatókbeállításailáthatók.Ezamérőszámaváltozóklineáris kapcsolatának erősségét méri egy -1 és 1 közé eső számmal. A változókfüggetlenségénekmértékétazmutatja,hogyeszámmennyireközelia0-hoz.A(pozitívvagynegatív irányú) lineáris kapcsolat erős, ha abszolútértékekevéssé tér el az1-től.Eztabeállítást lehetbekapcsolniaDEFINECORRELATIONSTRENGTHBYIMPORTANCE részen, a linearitás előjeles mértékét pedig a DEFINE CORRELATION STRENGTH BYABSOLUTEVALUE részen.Azalattaláthatópörgetőnyilaknálaztlehetszabályozni,hogymilyenmértékűkapcsolatesetén nevezze erősnek (strong), közepesnek (medium) vagy gyengének (weak) aváltozót.
ÁllítsukbeaStatisticsNodefentláthatóbeállításait!(Mindenfelkínáltmezőtadjunkmegafelsőésazalsólistánis!)
Futtassukleéselemezzükavégeredményt!
Alapostanulmányozásutánakövetkezőmegfigyelésekettehetjük:
Mivel anyugdíjas és a saját_tv, saját_video, saját_cd változók értéke csak 0 és 1 lehet,átlaguk értéke arra utal, hogy bennük az adatok több mint 95%-a azonos (az elsőmezőnéltöbbmint95%a0,atöbbinélpedigaz1-esvantúlsúlyban).Ígyezekamezőkjelentősen nem különböztethetnekmeg adatokat, ezért nem fognak indokot adnimásváltozókértékeinekeltéréseire.EzeketamezőketasourcenodeFILTER füléncélszerűkikapcsolni.
KapcsoljukkiafentinégymezőtaSourcenode-banaFilterfülön!
Az autókategóriák használatát is fontolóra vehetjük, hiszen az autók értékei adják azautókategóriákat, tehát az autókategóriák információja az autók értékénekinformációjából származik. Erre utal a két változó 86% erősségű korrelációja is, azazmajdnem90%-osalinearitásakétváltozóközött.Hanemakarunkfelesleges(duplikált)információbólszámolni,akkorelkellhagyniazautókategóriamezőtis.(Azinformációkegyszerűbbé tétele céljából lehetne esetleg csak ezt benn hagyni, s az autóértéketkikapcsolni.)
KapcsoljukkiazautókategóriákmezőjétisaSourcenodeFilterfülén!
Ezleszavégeredmény:
FeatureselectionnodeArraszeretnénkválaszkapni,hogybizonyosváltozókadataimennyirehatározzákmegegykonkrétváltozóadatait(ehhezmindigegykonkrétcélváltozóravanszükség).Mivelelőfordulhat, hogy akár több száz változó szerepel egy adathalmazban ezért gyakrancélszerűleszűkíteni,melyváltozókadataijöhetnekszóba.AFeatureselectionnode-nakaz a célja, hogy az adott célváltozó szempontjából lényeges bemeneti változókatfelderítse.Legyenkitűzöttcél,hogyatöbbiváltozókadataiból„jósoljuk”megaházas_e,jövedelem,elégedett, saját_pc változók értékét. Természetesen mindegyik változóhoz különvizsgálatszükséges.
Kezdjükaházas_eváltozóval!
Adjukmegasourcenodetypesfülénaházas_eváltozótkimenetnek,atöbbitbemenetnek!
Kapcsoljuk ki teljesen amodellezésből anememezőt, ez szöveges adatot tartalmaz, amatematikaiszámításoknemtudjákhasználni.
FűzzünkegyFeatureselectionnode-otaFillernodeután!
Nézzükmegabeillesztettnode-onaModelfület!
MAXIMUM PERCENTAGE OFMISSING VALUES. Nem végez számításokat még azokra aváltozókra, amelyekbenaz ittmegadott százalékérték felettimennyiségűhiányzóadatvan.MAXIMUMPERCENTAGEOFRECORDSINASINGLECATEGORY. Nemvégezszámításokatmég azokra a diszkrét adatokat tartalmazó változókra, amelyekben az itt megadottszázaléknál többazonosértékűadatvan. (pl. a„neme” változó ilyen,haszintemindenrekordnő.)
MAXIMUM NUMBER OF CATEGORIES AS A PERCENTAGE OF RECORDS. Nem végezszámításokatmégazokraadiszkrétadatokat tartalmazóváltozókra,amelyekbenaz ittmegadottszázaléknál többazeltérőadatokszáma. (pl.haautómárkanevűváltozóbanahányrekord,majdnemannyiféleautómárkavan).MINIMUM COEFFICIENT OF VARIATION. Nem végez számításokat még azokra anumerikus, Range típusú adatokat tartalmazó változókra, amelyekben az ittmegadottértékalattvanarelatívszórás(szórás/átlag)értéke.(Kiszűrhetjükazokatanumerikusváltozókat,melyeknemlényegeseneltérőadatokattartalmaznak.)MINIMUMSTANDARDDEVIATION. Nem végez számításokatmég azokra a numerikus,Range típusú adatokat tartalmazó változókra, amelyekben az itt megadott értéknélkisebbaszórás.(Hasonlóacélja,mintazelőzőbeállításnak.)
VessünkegypillantástazOptionsfülre!
Itt a bemenő változók fontosság szerinti rangsorával kapcsolatban tehetünkbeállításokat.Acélváltozószerinti„fontosságot”matematikaiszámításokadják,smeglehetadni,hogymelyeket jelöljeagép IMPORTANT (fontos),MARGINAL (határeset)ésUNIMPORTANT
(nem fontos) címkével. (A fontosság százalékban kapott érték.) Beállítható amatematikaimódszeris,deezcsakigennagyadathalmazeseténjelentnémieltérést.
A „fontosság” csak lehetőséget jelent, pontosabban csak annyit, hogy a nem fontosnak jelölt változókbiztosan nem tartalmaznak információt, „jóslatot” a célváltozóra vonatkozóan. Megeshet, hogy afontosnakmutatottváltozóksemtartalmaznakeléginformációtacélváltozóhoz.
FuttassukaFeatureSelection-t!
Akapottkészmodellakövetkezőketmutatja:
Látható, hogy két fontos változó van, a többi lényegtelen a házas_e célváltozószempontjából.HaakészFeatureselectionmodelltbeszúrjuk,akkorfilternode-kéntfogviselkedni. Azokat a változókat fogja kiválasztani,melyek jelölőnégyzetében pipa van.Alapértelmezésbenezekafontoskéntmutatottváltozók.A párbeszédpanel tetején látható Generate gombra kattintva azt ismegtehetjük, hogyFilter node-ot generálunk, mely csak a megjelölt változókat adja eredményül acélváltozóvalegyütt:
IllesszükbeaFillernodeutánakészmodelltésegytáblát!
Futtassukatáblát!
Afentieredménytkapjuk,látható,hogyanemfontosváltozókoszlopaieltűntek,anemeváltozópedigmegmaradt–őnemvettrésztamodellépítésben.
Tanulóalgoritmusokelőkészítése–adathalmazokkialakításaA tanuló algoritmusok modellépítő node-okként vannak a Modeler-be építve. Mintfentebbkiderült,mindentanulóalgoritmustháromvagynégyfázisban,háromvagynégyadathalmazon kell működtetni. A modellépítés, tesztelés vagy érvényesítés céljáraegyszerűenmegadhatókekülönbözőrekordhalmazok:hakellőennagyazadathalmaz,akkoraPARTITIONNODE segítségévelképezhetjükarészeket.APARTITIONNODE egySet típusú változót hoz létre, melynek értékei azt jelzik, hogy egy adott rekord amodellépítő, tesztelő vagy érvényesítő adatok közt szerepel-e. Az adathalmazokatvéletlenszerűen generálja a node, így használható rendezett adathalmazokban ésidősorokban is.AkeletkezőújPartitionmezőautomatikusanpartitionmodellbemenetlesz (a TYPE NODE-nál a DIRECTION rovatnál leírva szerepelt e beállítás). Akár mimagunkismegadhatunkolyanmezőt,melyarekordhalmazokatjelölki,deeztegyTYPENODE-nál a DIRECTION rovatban be kell állítani, hogy a modellek az itt megadottrekordhalmazokat tekintsék modellépítő, tesztelő, érvényesítő adatoknak (a modellnode-okUSEPARTITIONEDDATA beállításánál).
SzúrjunkbeegyPartitionNode-otaF I E L D O P S palettárólaFeatureselectionkészmodelltjelentő„gyémánt”nodeután!
Nézzükmeganodebeállításait!
PARTITIONFIELD. MegadhatóakeletkezőújmezőnevePARTITIONS. Megadható, hogy két vagy három lépés számára különítsen eladathalmazokat.
TRAINANDTEST. Modellépítéséstesztelés
TRAIN, TEST, ANDVALIDATION. Modellépítés,tesztelésésérvényesítésPARTITIONSIZE. Mindenrekordhalmazméreteszázalékbanmegadható.Haezösszesen100-nálnagyobb,piroshibaüzenetteljelziapárbeszédpanel.
VALUES. Milyenkonkrétértékekjelezzékarekordhalmazokat:
USESYSTEM-DEFINEDVALUES ("1","2"and"3"):1,2és3numerikustárolásúadatok
APPENDLABELSTOSYSTEM-DEFINEDVALUES: 1_Training,2_Testing,stb.értékekUSELABELSASVALUES: Training,Testing,stb.értékek
SET RANDOM SEED: A Modeler véletlenszám-generátora számára megadott kezdetiérték.Különbözőkezdetiértékekkülönbözővéletlenrekordhalmazokatadnakmeg.
FuttassukamegadottbeállításokkalaPartitionnode-ot!
NézzükmegazeredménytegyTypeésegyTablenode-on!
ATypenodeDIRECTION rovatamutatja,hogyamodellépítésszámáraapartitionmezőnem bemenő vagy célváltozó, hanem adathalmazokat kijelölő mező. Ilyen mezőt aPartitionnodenélkülislétrelehetettvolnahozni,deígysokkalegyszerűbbvolt.
Töröljükkiamostbeillesztetttypeéstablenode-okat!
ANeuralnetmodellhasználataAneurálishálóegyspeciálisgráffal-mintmodellel-dolgozik.Abemenőváltozókadataiegy képzelt „rétegnek” a csomópontjai, ezek értékeinek súlyozásával kapotteredményeketkapjákmegazúgynevezett rejtett „réteg” csomópontjai.Ezekegyadottküszöbérték elérésétől függően adatot adnak tovább a „célréteg” csomópontjainak,melyek nem mások, mint a célváltozók. A célváltozók is az előző rétegből kapottértékektől függően vesznek fel értékeket. A csomópontokat ezentúl neuronoknaknevezzük.
Apéldakéntbemutatotthálónanyilakhelyénmatematikaisúlyozásáll,sasúlyozottanösszeadott adatértékek,haelérnekegyadottküszöbértéket, akkorvált át akövetkezőrétegneuronjaeggyelnagyobbértékre.A Neural net típusú node neurális háló – tehát egy célváltozó meghatározására építmodellt„tanuló”algoritmussal.Asúlyozástvéletlenszerűenkezdiegyelőzetesmodellel,aztán próbál egyre jobb és jobb modellt alkotni. A tanulóalgoritmus a modelltfolyamatosanváltoztatjaelőremegadottideigvagyállapotig.
IllesszünkegyNeuralnetmodellépítőnode-otaPartitionnodeután!
Nézzükmeganodebeállításait!
USE PARTITIONED DATA: A Partition Node-nál beállított Training set alapján építmodellt.METHOD: Amodellépítéshatmatematikaimódszereközülválaszthatunk.
PREVENT OVERTRAINING: A modellépítés során egy gyorsan felépített „előzetesmodellt” finomít a Modeler. Itt az előzetes modell építéséhez szükséges rekordokszázalékosarányátlehetmegadni.SET RANDOM SEED. Az előzetes modellépítéshez szükséges véletlenszámkezdőértékénekmegadása.STOPON: Milyen kritérium elérése állítsa le amodell finomítását, hogyan álljon le azöntanulás
DEFAULT: Stream-benbeállítottfeltétel(itt20eleműhalmaztjelent)ACCURACY(%): Akkorállleatanulás,haacélváltozómodellalapjánszámítottértékearekordokmegadott%-ábanahelyesértéketadja.
CYCLES: Tanulásiciklusokszáma.TIME(MINS): A tanulási időpercbenmegadottértéke.Haeztválasztjuk,akkorlátványos futtatást láthatunk, modellépítés közben egy mozgó grafikononmutatja,mi az eddigi legjobb neurálismodell becslési százaléka (kék vonal) ésemellettazéppenaktuálismodellbecslésiaránya(pirosvonal).
OPTIMIZE: Túlnagyadathalmazzaldolgozvahasznos,haatanulóalgoritmustidőszerintvagymemóriaigényszerintoptimalizáljuk.
Atanulásiidővelcsínjánkellbánni,merthatúlhosszúideigtanulaszoftver,akkortúltanulásléphetfel,azaznem a mintában rejlő általános összefüggéseket, hanemmagát a mintát tanulja be az algoritmus. Ilyenesetbenamintaadataitalkalmazvanagybiztonsággal jó leszamodell,másesetbenazonbannem,mertamodellcsakennekamintánakaspeciálissajátosságaittartalmazza.
Futtassukanode-otafelkínáltbeállításokkal,majdnézzükmegakészmodelltulajdonságait!
Látható,hogyaháromrétegbenlevőneuronokszámátésrelatívfontosságukatmutatjaa leírás. A modellépítő adathalmazon 88%-os biztonsággal jól „jósol” a modell, amodellben összesítve mindössze 2,5 %-nyi relatív jelentősége van a végzettségváltozónak,ahálósúlyaielsősorbanazegyüttélőkváltozótveszikfigyelembe.
SzúrjukbeakészmodelltaPartitionnodeutánésnézzükmegazeredménytegytáblában!
Két új mező keletkezett. A $N-házas_e mezőben a házas_e változó bemeneti változókalapján számított („jósolt”) értékét láthatjuk. A $NC-házas_e mező pedig a modellbőlszámítottpontosértéketmutatja(ennekkerekítéseazelőbbi).
SzúrjunkbeakészmodellutánastreambeaTablenodehelyettegyAnalysis(output)node-otésfuttassukle!
Az Analysis node amodellek hatékonyságát vizsgálja. A beállított két rekordhalmazrakülön-külön mutatja, mekkora százalékban találja el a modell a tényleges célváltozóértékét, s milyen százalékban hibás a döntése. Ha a kész modell megfelelő, akkorkimenthetjükagyorsmenü(jobbegér)megfelelőmenüpontjasegítségével.
Próbáljukugyaneztamodellépítéstvégigvinniaházas_ehelyettazelégedettváltozóranézve!
Aszükségeslépésekképekkelillusztrálva:
1.SourcenodeTypesfülénacélváltozómegváltoztatása
2.AFeatureNodefuttatása,készmodelltanulmányozása(8fontosmezőlesz)
Helytakarékosságból egy SuperNode-ot készítettünk az iménti házas_e változóravonatkozóvizsgálatainkból.Ennekneve:SuperNode:házas_elett.
EzutánbeszúrtukakészFeatureselectionmodelltegynode-ként.
Két részreosztottuka rekordhalmazt,mint az imént,majdbeszúrtunkegyNeuralnetmodellépítőnode-otavégére.Eztfuttatvaakövetkezőkészmodelltkapjuk:
Igen kevés a kiírt 33%-os előrejelzés. Próbáljuk amódszert változtatni amodellépítőnodebeállításainál!
ÁllítsukamódszertDynamic-ra,kapcsoljukkiazelőzetesmodellépítéstéskössükatanulásvégét0,2percnyiidőelteltéhez!
Amodellépítéstegyablakbanegygrafikonkíséri,melyalegjobbelértelőrejelzésiaránytés az éppen aktuális előrejelzési arányt mutatja az idő függvényében, azaz a modellfolyamatosváltoztatásasorán.
Többmódosítás után úgy látszik, nem lehet jobb előrejelzési arányt elérni, a bemenőadatoknincsenekelégerősösszefüggésbenacélváltozóval.
Próbáljukugyaneztamodellépítéstésmodell-ellenőrzéstvégigvinniajövedelemváltozóranézve!
Képekben:
Azeredménymajdnem99%-oselőrejelzés!
Készítsükelamodellanalízisétis:
MivelacélváltozóRangetípusú,ezértnemlehet találatiszázalékotkimutatni,ehelyettaz előrejelzés tévedésének átlagát és szórását érdemes figyelni a táblázatban.A 46-osszórásértéknemisolyannagy,hafigyelembevesszük,hogyazeredetiadatok9-1116-igterjedtek(ezer$-ban).
Építsünkneurálishálómodelltalak_időésazautócélváltozókra!
Próbáljuk ki a neurális háló többi beállításait is! (a végeredményben nem számottevő akülönbség)
PróbáljukaPartitionnode-nál csökkenteniaTrainingsetadathalmazt! (nőamásikadathalmazhibája)
9.DöntésifaE gyakorlat célja, hogy újabb modelleket ismerjünk meg. A már tanult neurális hálómodellúgykeresösszefüggéseketbemenőváltozókésacélváltozóközött,hogymagátamodellt, a rejtett rétegben levő számításokat a felhasználó nem ismeri, csak azeredménytláthatjaéshasználhatja.
A döntési fák ugyanilyen esetekben használhatók, de bepillantást adnak azösszefüggésekszerkezetébe.
AzadathalmazEgy amerikai biztosítási cég5000ügyfeléről készült nyilvántartásból fogunkdolgozni.Azadatokatazügyfél_.savSPSSfájltartalmazza.
Az egyik cél az lesz, hogy az ügyfelek sokféle adatának az ugyf_ev változóval valóstatisztikaikapcsolatátfelderítsük.Eváltozóaztjelzi,hogyegyadottszemélyhányéveügyfeleacégnek.
Tanulmányozzukazadathalmazváltozóitazalábbitáblázatalapján!
Változónév leírásugyf_ev hányéveügyfél(célváltozó)ok miértügyfél(1-olcsó2-kényelmes3-szolgáltatások4-egyéb8-nincsválasz9-nemtudja)zona földrajzizónanem neme(0:férfi,1:nő)kor életkortanido hányévettöltötttanulássalvegzettseg végzettségkódjafogl foglalkozásikategóriakódjanyugdij nyugdíjas(0-nem,1-igen)jovedelem háztartásjövedelme(1000$)ados_mertek adósságánakmértékeajövedelemszázalékában(x100)hitelados hitelkártya-adósság(1000$)egyebados egyébadósság(1000$)kesedelem volt-ekésedelmesbankiadósságrendezése(0-nem1-igen)elegedett munkájávalmennyireelégedett(0-5)hazas_e házas-e(0-nem,1-igen)egyuttelok háztartásábanegyüttélőkszámasajathaz sajátházábanlakik-e(0-nem,1-igen)lakastipus lakásánaktípusa(1-családi,2-társas,3-tömb,4-mobil)lakas_ev hányévelakikjelenlegiotthonábanautok jelenlegisaját/béreltautókszámaauto_sajat sajátautójavan-e(-1-nincs,0-bérli,1-igen)auto_kat elsődlegesautóértékkategória(-1:nincs,0-3:árkat.)kozl_eszk munkábajárás(1-saját2-közösautó3-tömegközl4-nemgépjárművel5-nemjárbe)bejar_ido munkahelyreérésideje(perc)pol_konz politikainézetei7-esskálán(1-nagyonliberális7-nagyonkonzervatív)parttag politikaipárttagja-e(0-nem1-igen)szavaz szavazottalegutóbbiválasztásoninternet Internet(0-nincs1-modem2-DSL3-kábeles4-egyéb)
tvnezes múlthetitévénézés(óra)sajat_tv van-esajáttv-je(0-nem,1-igen)sajat_CD van-esajátCD-lejátszója(0-nem,1-igen)sajat_PC van-esajátPC-je(0-nem,1-igen)ujsag előfizet-eújságra(0-nem,1-igen)haziallat_db háziállataiszámamacska_db kutya_db madar_db hullo_db kisallat_db hal_db
Adatokbeolvasása,előzetesadatvizsgálat
HozzunklétreegySourcenode-ot,melyazadatokatbeolvassa!
A célkitűzésnek megfelelően kell beállítani a változók kimenet-típusait (DIRECTION).Kimenetkéntkelltekinteniamodelleknekazugyf_evváltozót.
Azugyf_evváltozólegyenO U T ,atöbbiI N típusú!
Figyeljükmeg,hogyazSPSSfájlbanmárdefiniálvavoltakazok,auto_sajatésazauto_katváltozók„blank”értékei.
Figyeljükmegeváltozók„blank”beállításait!
AzadattáblábanakétértékűSet típusúváltozókatFlag-kéntkellenekezelni, ilyenpl.anyugdijváltozó,melynekkétértékeegyigaz-hamisadat,attólfüggően,hogyegyügyfélnyugdíjas-e.
ÁllítsunkbemindenkétértékűSet-nekbeolvasottváltozótFlag típusúra! (nem,nyugdij,hazas_e,kesedelem,sajathaz,parttag,szavaz,sajat_tv,sajat_PC,sajat_CD,ujsag)
Azeddigibeállításokazalábbiábránkövethetők:
Végezzünkelőzetesadatvizsgálatot!
EhhezelőszöregyQualitynode-otcélszerűhasználni.
AdjunkaSourcenodeutánegyQualitynode-ot,melya„Blank”adatértékeketiskijelzi!
Apirossaljelzettbeállításokatcélszerűmegtenni.Azeredmény:
Négy mezővel van gond. A bejar_ido változó két kivétel-rekordja nem zavaró, azauto_sajatésazauto_katváltozók492darab„blank”,azaz-1értékettartalmaznak,ezaztjelenti, hogy ennyi ügyfél nem rendelkezik autóval. Ez olyan jellegű információ, amitadatkéntlehetnetekinteni!Az ok változó nagyobb gondot jelent. Az adatok 81 százalékában ez ténylegesenhasznavehetetleninformációtszolgáltat,eztamezőtvegyükkiatovábbivizsgálatokból!
ÁllítsukbeaSourcenodeT Y P E S fülén,hogyazauto_sajatésazauto_katváltozóeseténa-1értékekérvényesadatkéntszerepeljenek!
TöröljükaSourcenodeF I L T E R fülénazokmezőt!
ASourcenodeTYPES fülérőlindulvaazauto_sajatésazauto_katsoroknálkellapirossaljelölthelyenaDEFINEBLANKS jelölőnégyzetbőlapipátkivenni:
ASourcenodeFILTER fülénkellazokváltozóttörölni:
Acélváltozóvizsgálata,átalakításaCélszerű megnézni az ugyfel_ev adatértékeinek megoszlását, nincs-e túl sokféleadatérték. (Ekkor a modellek nagy hibával dolgoznak, és nem lényegeskülönbözőségeketislényegesnektekintenek.)
Rajzoltassukkiacélváltozómegoszlását!
Eztpl.egyDistributiongrafikonnaltehetjükmeg.
Azeredmény:
Azeredményaztmutatja,hogynemérdemesmegkülönböztetniacélváltozó0-52évesértékeit, célszerű a változót egyszerűbbé tenni. A statisztikában gyakori probléma ez,
ennek kivédésére az adatokat osztályokba sorolják. A leggyakrabban használtosztályozási szempont az, hogy a szórás hányszorosának megfelelő távolságrahelyezkedikelegyadatazadatokátlagától.
Készítsünkegyújmezőt,melyazugyf_evváltozóadatainakátlagtólvalóeltérésealapjánsoroljaazügyfeleketlegfeljebbötcsoportba!
EztegyBINNINGNODE fogjaelvégezni.Adjunkastream-hezegyilyennode-otasourcenodeután,snézzükabeállításait:
ABinningnode-okatjólhasználhatjuknagyadattömegegyszerűsítésére.Ezekmindigújmező(ke)tgenerálnak,melynekneveameglévőmezőnévkiegészítésévelkeletkezik.
ASETTINGS fülBINNINGMETHOD listájábólasávokraosztásmódszerétadhatjukmeg:FIXEDWIDTH: adatértékek szerinti azonos szélességű sávok képzése, TILES: azonosrekordszámúrészekrebontás,RANKS: növekvővagycsökkenősorrendűsorszámozás,aMEAN/STANDARD DEVIATIONlehetőségpedigaszerintképezsávokat,hogyazadatokátlagától pozitív vagy negatív irányban a szórás hányszorosánakmegfelelő távolságravanazadottadat.(Erreleszszükségünkmost.)AzADDAS: SUFFIX beállításanévután,azADDASPREFIXanévelé tesziamegfelelőmezőjelölő szócskát. (A mi stream-ünknél ez a _tip kódszó lesz, mely utal az ügyféltípusára.)
Minden esetben generálhatunk aGENERATE fül segítségével egy újDerivenode-ot is,mely számítások végzése nélkül, csak logikai feltételekkel készíti el a sávokat. Ez alehetőségcsakakkorhasználható,haazadottBinningnode-otegyszermárfuttattuk.Akövetkezőbeállításokatkellmegtennünk:
Itt a+/-2STANDARDDEVIATIONS beállításazt jelenti,hogymaximálisan5 csoportotképzünkarekordokból.Aszámegyenesenszemléltetieztazalábbiábra:
Legszemléletesebben ennek eredményét egy Distribution grafikonnal nézhetjük meg,úgy, hogy a keletkezett új ugyfel_ev_tip mező (a vizsgálat szempontjából már ez isváltozó!)szerintszínezzükaziméntmárkirajzoltmegoszlásigrafikont.
Figyeljük meg az ugyfel_ev_ és az ugyfel_ev_tip változók viszonyát egy színezett megoszlásigrafikonon!
Azalábbiábraalapjánkelleljárni:
Azegyszerűsítésmegfelelő,eztmutatjaafuttatás:
Négykategóriakeletkezett,azelsőbenafrissügyfelek,amásodikbana20évnélrégebbi,aharmadikbana20és30évközötti,anegyedikbena30évnélrégebbiügyfelekvannak.Akategóriaértékek:-1,0,1és2.Látható,hogy-2értékűadatoknemkeletkeztek,eztazugyfel_evváltozóerősantiszimmetriájaindokolja.
Modellépítéselőkészítése,lényegesváltozók
Egy Type node segítségével adjuk meg célváltozónak az eddigi ugyf_ev helyett az ugyf_ev_tipváltozót!
Azalábbibeállításokravanszükség:
Azugyf_ev_tipváltozótORDEREDSET típusúvákell tenni,aVALUESoszlopnál<Read>-re állítva be kell olvastatni az adatokat a READ VALUES gombbal, a DIRECTION oszlopban pedig Out-ra kell állítani. Az ugyf_ev változó nem vesz részt amodellépítésben,ezértittNone-ravankapcsolva.
E két változó sora azért egymás alatt látszik az ábrán, mert a beállítások után aDIRECTION oszloptartalmaszerintinövekvősorrendlettbekapcsolva.Ezutánamár tanultmódonki szeretnénkválasztaniacélváltozószempontjából szóbajöhetőváltozókat.
Egy Feature Selection node segítségével építsünk olyan modellt, mely megadja az ugyf_ev_tipszempontjábólrelevánsváltozókat!
Egy Feature Selection modellépítő node-ot kell beilleszteni a Type node után. Ennekpárbeszédpaneljénmegtarthatjukagépibeállításokat,majd lefuttathatjuk.A jobbfelsőModelsablakbanjelenikmegakészmodell.
Azalábbiábramutatjaanode-ot,abeállításait,ésafuttatáseredményét:
Figyeljükmegakészmodellbenafontosnakjelöltváltozókat!
Az ábra mutatja, hogy 18 darab (célváltozó szempontjából) fontos változó van azadathalmazban.Kétváltozóelevekiesikavizsgálatból,mertarekordokdöntőrészébenugyanaztazegyetlenértékettartalmazzák.
Építsük be a kész modellt a Type node után, majd válasszuk szét a rekordok halmazát egymodellépítőésegytesztelőrészre!
Azalábbiábramutatjaatennivalókat:
Akét rekordhalmazgarantálja,hogyaz5000ügyfélvéletlenszerűenkiválasztottegyikfelealapjánépüljönfeladöntésifamodell,arekordhalmazmásikfelénpedigteszteljükmajdakészmodellt.
DöntésifaalgoritmusokéskészmodellekAdöntésifa(decisiontree)modellekdöntéseksorozatainkeresztüladjákmegegy-egyrekordban a bemeneti változók értékeiből a célváltozó számított („tippelt”) értékét. Amodellben szereplő döntések egyszerű feltételekre adott válaszok. A feltételekmegkövetelhetnek Range típusú változó esetében intervallumhoz való tartozást, Settípusokeseténpedigegybizonyosrészhalmazhozvalótartozást:
E döntési fában például egy 0 vagy 1 értéket felvevő célváltozó számítási szabályaiolvashatók.Például ha apéntek változó1,5-nél nagyobb értékű, avasárnap változó2,5-nél kisebbvagy egyenlő és a péntek változó2,125-nél is nagyobb, akkor a célváltozó értéke1.A[Mode]értékekaztjelzik,hogyhaegyadottpontonabbahagynánkafaolvasását,akkorottéppenmilyenértéketkelladniacélváltozónak,hogyalegkisebbettévedjük.A döntési fa áttekinthető, ám ugyanazok a feltételek egyszerűbb, csoportosítottformábanisfelírhatók:
Ezt szabályhalmaznak (ruleset) nevezzük. A szabályokat folyamatosan kiolvasva kellértelmezni (if=ha, and=és, then=akkor). Ha egy rekordra egyik szabály sem érvényes,akkorazutolsósorbanállóDefaultértéklegyenaszámítottcélváltozóban.
A döntési fa a bemeneti változók, a szabályhalmaz pedig a célváltozó szempontjából csoportosítva írja leugyanaztadöntésistruktúrát.
Afaépítésépítkezőéslebontólépéseksorozata.Azelsőfázisbanmindenújágépítésealegnagyobb információnyereség statisztikai elve alapján halad tovább, a másodikfázisban,afatisztításánáltúltanulásrautalóágaklemetszésetörténik.
Ezutóbbirafeltétlenülszükségvan,hisztúltanítássalelérhetőazis,hogyazalgoritmusakár 100%-os pontossággal adja meg a célváltozó értékeit a modellépítőrekordhalmazon.
C5.0döntésifahasználata
IllesszünkegyC5.0modellépítőnode-otaPartitionnodeutánésfigyeljükmeganodebeállításait!
MODELFÜL:OUTPUTTYPE. Ittválasztanilehet,hogyavégeredménytdöntésifavagyszabályhalmazalakbanadja-emeganode.GROUP SYMBOLICS: Ha bejelöljük, akkor szimbolikus értékek hasonlósága alapjáncsoportosítvadolgozik.HapéldáulaHAJmezőnbelülabarnaésavörösértékekhasonlórekordokat adnak, akkor e két értéket együttesen vizsgálja.Hanem jelöljükbe, akkormindenhajszínegyenrangúkéntveszrésztatovábbifaépítésben.
USE BOOSTING: A fa továbbfejlesztését végző algoritmus bekapcsolása. Az elsőkéntkapottdöntésifátújravizsgálja,milyenrekordokbantérelaténylegesadatoktól,ezutánolyan fa-részt generál, mely az eltéréseket korrigálja. Itt megadható az is, hányszoriújravizsgálástkérünk.Afabonyolultságátésafaépítésidejétegyarántnöveli.CROSS-VALIDATE: Akkorcélszerűhasználni,haolyankevésrekordunkvan,hogynemérdemesmodellépítőés tesztelő rekordhalmazra felosztani.Részhalmazokatválasztki
ésazokonteszteliazújraésújrafelépítettfát,solyanvégeredménytad,melyatöbbfélerészhalmazonishasonlóeredménytad.
MODE: 1. SIMPLEAgépbeállításaivaldolgozika
• FAVOR: A tanulás leállítását lehet megadni. Az ACCURACY beállításával azalgoritmus sokáig tanul, a felépített fa az az egyedi adathalmaz egyeditulajdonságait minél hűbben tartalmazza. Ha azonban tesztelő adatokkalfolytatnánk a munkát, célszerűbb a túltanulást megelőzni a GENERALITYlehetőséggel.
• EXPECTED NOISE (%): Zajos vagy hibás adatok elvárható aránya. (Ez isleállásifeltétel.)
2. EXPERT:a felhasználó megadhat bizonyos belső paramétereket a modellépítőalgoritmusnak• PRUNING SEVERITY: A lokális nyesésnél milyen egy faághoz tartozó
minimáliselemszámeseténgeneráljonújágat.Azértéketnövelvekisebbéstömörebbfátkapunk.Hacsökkentjük,pontosabbfátkapunk.
• MINIMUM RECORDS PER CHILD BRANCH: A fa egy ágán levő minimáliselemszám. E beállítással korlátozható a hasadások száma. Zajt tartalmazóadatokeseténcélszerűeztazértéketnövelni.Alapértéke2.
• USE GLOBAL PRUNING: A faépítést két lépcsőben végeztethetjük ebeállítással. Az első lépcsőben egy kevés ágú fát épít a gép, a leveleincsoportosított adatokkal, majd a csoportokat helyi részfák építésévelfinomítja. Lassabb, de általában eredményesebb algoritmust ad.Alapértelmezésbenezalehetőségbevankapcsolva.
• WINNOW ATTRIBUTES: E beállítás esetén a faépítés előtt statisztikaivizsgálattalkiválasztjaafontosmezőketazalgoritmusésakevésbéfontosnakítéltmezőket kihagyja a faépítésből. Akkor célszerű használni, ha sokmezővan,vagymegakarjukelőzniasokmezőbőlszármazótúltanulást.
COSTSFÜL:
USEMISCLASSIFICATIONCOSTS:Afaépítéssoránegy-egyújágépítéseelőttösszeadjaagépatévedésekértékétaszóbajöhetőfolytatásoknál.Ezutánafolytatásrólaszerintdönt,hogy mekkora tévedés-összeget eredményez az adott választás – mindig a legkisebbösszeget fogja választani. A tévedéseket súlyozhatjuk az itt látható táblával, ígyszámszerűendominánsnakvagyjelentéktelennekadhatunkmegmindentévedéstípust.
Az ACTUAL értékek a célváltozó tényleges adatértékei, a Predicted értékek pedig ahozzájuk tartozószámítotteredményeket jelentik. (Itta -1,a0,1ésa2azugyf_ev_tipváltozólehetségesértékei.)
Atévedésisúlyoktáblázatábóliskövetkeztethetünkakövetkezőfontoskövetelményre:
AC5.0algoritmuscélváltozójacsakdiszkréttípus(Discrete,Orderedset,SetvagyFlag)lehet!
FuttassukaC5.0modellépítőnode-otagépáltaladottbeállításokkal!
Tanulmányozzukakészmodellt!
Ehhez a jobb felső Models ablakban megjelenő modell gyorsmenüjében a Browsemenüpontotkellválasztanunk:
Akészmodellszerkezetétfogjuklátni.
Bontsukkiakapottdöntésifát3szintmélységig!
Ehhezazábránpirossaljelzett3-asgombrakellkattintani:
Látható,hogyabban,hogymilyenrégiegy-együgyfél,alegfontosabbmeghatározóakorváltozó – ez logikus is. A 30 év felettiek esetében a nyugdíjas állapot a következőlényeges változó, a 30 év feletti nyugdíjasok esetében a foglalkozás lényeges, stb. Ígyszemléletesenvégigkövethetőateljesdöntésimechanizmus.
A párbeszédpanel tetején látható gombokkal azt lehet szabályozni, hogy hány döntésiszintetmutassonazablak,azALL hatásáramindenszintetkibont.AVIEWER fülönadöntési fa gráfként látható.Kibontható, kicsinyíthető ésnagyítható,elrendezéstésmegjelenítéstlehetbeállítani.
Afentiábránpirossaljelzettgombegytérképetmutatagráfról:
ASUMMARY fülönáttekintőösszegzéstkaphatunkamodellről.(EXPANDALL: mindentmutat)
Itttöbbségbenamodellépítőnodebeállításaitlátjuk,deszerepelpl.aTreedepth,azazafamélysége(szintjeiszáma)is.
IllesszükbeakészmodelltaPartitionnodeután,majdelemeztessükaModeler-relakészmodelltakétrekordhalmazon!
Azábraszerintkelleljárni:
Az Analysis node-ot már ismerjük, a célváltozót hasonlítja össze az azonos nevűszámítottváltozókértékeivel.Hagyjukmegagépibeállításait,majdfuttassuk!
Látható,hogyamodellépítőadathalmazon93%-banhelyesenszámoladöntésifa,deatesztelőadathalmazoncsak86%-ban.Ennekvalószínűokaatúltanulás.
Gyakorlófeladatok:
Készítsünk más típusú adategyszerűsítést a Binning node-dal! Először 10 szélességű sávokkal,majd 5 azonos elemszámú résszel dolgozva építsünk döntési fát! Nézzük meg az új modell„jóságának”elemzésétis!
Segítség:
AFeature Selectionnode-nál csaka10 legfontosabbváltozóthagyjukmeg, így építsünkdöntésifát!Nézzükmegazújmodell„jóságának”elemzésétis!
Segítség:
Csökkentsük a túltanulást a modellépítő node beállításai segítségével! Próbáljuk ki a S I M P L E módszer G E N E R A L I T Y beállításával, majd az E X P E R T módszer P R U N I N G S E V E R I T Y =90 ésM I N I M U M R E C O R D S P E R C H I L D B R A N C H =5beállításával!Nézzükmegmindkétmódszeráltalépítettmodell„jóságának”elemzésétis!
Segítség:
A túltanulást csökkenteni tudjuk mindkét változtatással, de nem tudunk eredményesebb modellt adni atesztelőrekordhalmazra.
Az ebben a gyakorlatban megépített C5.0 modellt építsük meg neurális hálóként is éselemeztessükakettőtegyüttegyAnalysisnode-dal!
Segítség:
Azesetektöbbségébenaneurálishálóésadöntésifaugyanannyiraeredményes.Ezannakköszönhető,hogya célváltozóra vonatkozó információt a többi adatokbólmind a kettőmódszer hasonló hatásfokkal képes„kibányászni”.
Próbáljunk egy új streammel más célváltozóhoz modellt építeni, például a pol_konz (politikaibeállítódás)változóhoz!
Megfigyelhető,hogynemmindenadathalmazbólésnemmindencélváltozóralehetjómodelltépíteni.Ennekoka,hogybizonyosváltozóknemadnakeléginformációtmásadatokranézve.Azadatbányászatcéljaéppenaz,hogyfelkutassaésmegadjaavilágbanmeglévőösszefüggéseketésmegmondja,melyadatokközöttnemérdemesösszefüggéstkeresni.
10.WebesadatbányászatE gyakorlat célja a webbányászat alapjainak megismerése. A Clementine-hozkiegészítésként telepíthetők olyan szoftver-részek, melyek segítségével web-servereklátogatottságát,alátogatókviselkedésétvizsgálhatjuk.A web-server szoftverek különféle esemény-naplózási lehetőségeket kínálnak. Arendszergazdák a biztonság és a látogatottság figyelése céljából naplóztatják a web-oldalakon történőeseményeket, ezekbőlanaplófájlokból (LOGFÁJLOKBÓL)dolgozikaClementineWebMining.
Amost következő két laborgyakorlat során a szombathelyi Berzsenyi Dániel Főiskolaportáljánaklogfájljaibólfogunkdolgozni.
Mindenadatbányászatimunkaelső lépéseazadathalmazalapos ismerete.Awebbányászati algoritmusokhasználataelőtttanulmányoznikellazelemezendőportálrészeit.
Ímeaportálkinézete(www.bdf.hu):
A portálhoz tartozó eseményként naplózva van minden kérés, amellyel egy userkommunikálaportállal-általábanvalamilyenfájltkérleaweb-serverről.(Legtöbbszöregylinkenvalókattintáshatásáratörténikez.)Akéréseketalogfájltárolja.Ímeegylogfájlelsőnéhánybekezdése:
Ezt kapja bemenetként a WEB MINING (SOURCE) NODE. (Az adatbányászat aClementine-banegyetlenSuorcenode-nak,aWebminingnode-nakhasználatátjelenti.)Az eredeti szoftver nincs felkészítve a web-bányászatra, de a Web Mining kiegészítőcsomagot feltelepítve ezzel a node-dal bővül a Clementine SOURCENODE palettája. Acsomag tartalmaz még ezen kívül számos használható demo-streamet, melyek awebbányászatmódszereitmutatjákbe,skisváltoztatássalsegíthetnekbármelyportállalkapcsolatoskérdésekmegválaszolásában.
Logfile-okelőkészítése
Bontsukkialaborgyakorlatfájljaiközötttalálhatótömörítettlog.zipfájlt,hogyaWebMiningnodedolgozhassonbelőle!
Ehheza log.zipfájl jobbegér-kattintássalelérhetőgyorsmenüjébőlAzösszeskibontása...menüpontot kell választani. A megjelenő kibontási varázsló párbeszédpanelein csakEnter-eketkellütni.
#Software:MicrosoftInternetInformationServices6.0#Version:1.0#Date:2006-08-2800:05:39#Fields:datetimes-sitenames-ipcs-methodcs-uri-stemcs-uri-querys-portcs-usernamec-ipcs(User-Agent)sc-statussc-substatussc-win32-status2006-08-2800:05:39W3SVC855251193.224.74.10GET/_vti_bin/owssvr.dll-80-72.30.98.75Mozilla/5.0+(compatible;+Yahoo!+Slurp;+http://help.yahoo.com/help/us/ysearch/slurp)404002006-08-2800:05:39W3SVC855251193.224.74.10GET/konyvtar/munkatars.htm-80-72.30.252.107Mozilla/5.0+(compatible;+Yahoo!+Slurp;+http://help.yahoo.com/help/us/ysearch/slurp)304002006-08-2800:09:22W3SVC855251193.224.74.10GET/_vti_bin/owssvr.dll-80-195.70.35.179KummHttp/1.1+(compatible;+KummClient;+Linux+rulez)302002006-08-2800:09:22W3SVC855251193.224.74.10GET/Default.aspx-80-195.70.35.179KummHttp/1.1+(compatible;+KummClient;+Linux+rulez)2000642006-08-2800:09:23W3SVC855251193.224.74.10GET/_vti_bin/owssvr.dll-80-64.4.8.130msnbot/1.0+(+http://search.msn.com/msnbot.htm)404002006-08-2800:09:25W3SVC855251193.224.74.10GET/konyvtar/macslist.html-80-64.4.8.130msnbot/1.0+(+http://search.msn.com/msnbot.htm)20000
A végeredmény egy új log nevűmappa, mely öt nap eseményeit naplózó log fájlokattartalmaz,2006.augusztus28-tólszeptember1-ig:
Afájlokösszméretearrautal,hogyeszövegesállományoksokinformációttartalmaznak.HaJegyzettömbbelnézzük meg tartalmukat, a megnyitás még 10 másodpercet is igénybe vehet, és mindegyik log fájlbanszázezresnagyságrendűleszasorokszáma.
EseménydefiníciókMielőtt összeállítanánk egy egyszerű „webbányász” streamet, elő kell készíteni aWebMiningnodehasználatát.Megkellmondaniawebminingnode-nak,hogyanaplófájlbólmilyeneseményeketszeretnénkfigyelni,milyensorokat(rekordokat)olvassonbealogfájlból.
AWebMiningnodealogfájlbólkövetkeztet,hogymelykérésektörténtekugyanabbanaz időben ugyanarról a gépről. Ennek alapján különféle felhasználókat (USEREKET)különböztetmeg,illetveegy-egyuseregy-egyalkalommaltörténőkéréseineksorozatátlátogatásnak(VISITNEK)tekinti.Abesorolásoknemmindigtökéletesek.Példáularrólnincsinformáció,konkrétankiültakérést küldő gép előtt, így egy gépről dolgozó több tényleges személyt is egyusernektekinthet aWebMining, továbbá ha az internetező felhasználó feláll a gépemellől ésvisszatérveórákmúlvakattintújraaportálon,akkortevékenységétegyhosszúvisitneklátjuk,holotterrőlvalójábanszósincs.AWebMining node egy olyan adattáblát készít a log fájlokból, melynek a következőmezőivannak:
Mezőnév JelentéseEventID Azeseményegyedisorszáma
EventCategory Esemény kategóriája – szöveges értékét a felhasználó adja meg azeseménytáblázattal
EventName Esemény neve – szöveges értékét a felhasználó adja meg azeseménytáblázattal
Resource AzURL-nekazeseményreutalótöredékeEventTimestamp EseményidejeVisitID Azeseményttartalmazóvisitegyedisorszáma
Mezőnév JelentéseVisitStartTimestamp AzeseményttartalmazóvisitkezdeténekidőpontjaUserID Useregyedisorszáma
UserType Userazonosításánakmódjátjelzőkódszám:1belsőusernévvelazonosított,2cookie-val(sütivel)azonosított,3hostnévvelazonosított
AuthorizedUserName Userbelsőazonosítója,havanUserCookie User-sütiértéke,havanHostname UserhostneveAttributeID Havaneseménnyelkapcsolatosattribútum,annakegyediazonosítójaAttributeName Havaneseménnyelkapcsolatosattribútum,annakneveAttributeValue Havaneseménnyelkapcsolatosattribútum,annakértéke
A kiemelt két mező tartalmát a felhasználó adhatja meg egy úgynevezetteseménytáblázattal. Az eseménytáblázat szabályozza azt is, hogy az adattábla milyenrekordokat tartalmazzon: azok a sorok kerülnek be a log file-ból a Clementineadattáblába,amelyeknekekétmezőjeértéketkap.Egyakorlatsegédleteiközöttszerepelmáregyilyeneseménytábla,ezaBDF_events_1.txtfájl.
Ha(Jegyzettömbbel)megnyitjuk,eztlátjuk:
Miveleztabulátorokkaltagolttáblázat,ezértnemjóllátszanakígyazoszlopok.
NyissukmegafájltazExcelsegítségével!
Ne felejtsük a Megnyitás párbeszédpanelen a fájltípust szövegfájlokra állítani!Megjelenikaszövegbeolvasóvarázsló,üssünkEntertmindháromlépésnél!
Mostmáráttekinthetőenjelenikmegazeseménytáblázatunk,szélesítsükazoszlopokat,hogymindenadatotlássunk:
Azelsősormegnevezésekettartalmaz.AzEventCategoryésEventnamealatticellákbantetszőleges elnevezéseket adhatunkmeg – a log fájlból beolvasott sorokat (kéréseket)fogjuk ígynevezniaClementineáltalgeneráltadattáblában.Aharmadikésanegyedikoszlopba az kerül, hogy milyen URL-rész és milyen attribútum együttes előfordulásaesetén kap az adott kérés valamely eseménykategóriát és eseménynevet a generáltadattáblában. A log fájlminden egyes sorát a Clementine az eseménytáblázat soraivalegymásutánhasonlítjaössze.HaalogfájlvizsgáltsorábanállókérésEventDefinitionésEvent Attributes értéke megegyezik az eseménytáblázat egyik sorában megadottértékkel, akkor azt a logfájl-beli sort hozzáveszi a generált adattáblához, és e kérésrevonatkozóannemnézitovábbazeseménytáblázatot(pedigelképzelhető,hogymégtöbbfeltételnekismegfelel),hanemtovábblépalogfájlkövetkezősorára(kérésére).Haalogfájl valamely sora nem felel meg az eseménytáblázatban szereplő egyetlen EventDefinition+EventAttributesegyüttesfeltételneksem,akkorageneráltadattáblábanezakérésnemfogrekordkéntszerepelni.
Egészítsükkiazeseménytáblázatotegyolyansorral,melyafőiskolaiAlkalmazottInformatikaésInformációmenedzsment Tanszék látogatói kéréseihez rendel eseményt! A tanszék honlapjánakfájljaira mutató URL-rész: /ttk/mszi/informatika, a hozzárendelt rekordok eseménykategóriájalegyenTanszek,azeseményneveItanszek!
Amostmegismert logika alapján nem tehetjük az eseménydefiníció sorát sem a /ttk,sema/ttk/mszielé,hiszenakkoratanszékioldalakramutatókérésekignemfogeljutniakiértékelés,csakTTKvagyMSZInevűeseménykéntfogjabeolvasniaClementine.Ezért35.sorkéntszúrjukbeazExcelvagyaJegyzettömblistájába.AmegadottURL-részmögéírjunk egy /* -ot, ami az eseménytáblázatban azt jelenti, hogy az e szövegtöredéknélhosszabb URL-részletű kéréseket is ezen eseményhez rendelt rekordok köztszerepeltetjük.
Ha az Excelben végezzük a sor beszúrását, akkor a következő figyelmeztetésre (nemExcelformátumúmentés)mégIgen-nelkellfelelni,majdkilépniazExcelből.
HaaJegyzettömbbenszúrtukbeazújeseménysorátazeseménytáblázatba,akkorarrakellfigyelni,hogyazegysorbanállóelemekettabulátorjelekkelkellelválasztani.
Az eseménytáblázatnak mindig tabulátorjelekkel elválasztott szöveges fájlnak kell lennie! Kiterjesztéseelvilegbármilehet,dejavasolta.txtkiterjesztésselutalniarra,hogyegyszerűszövegettartalmaz.
Figyeljük meg, hogy az Egyéb esemény révén minden portálhoz tartozó kéréstbeolvassunk!
AWebMiningnodehasználata
EgyüresstreambeszúrjunkbeegyWebMiningnode-ot!
Mentsükastreametlabor9_webmining.strnéven!
ÁllítsukbeanodetulajdonságaitaSettingsfülönazalábbiaknakmegfelelően!
WEBLOGFILESDIRECTORY: Ittadhatjukmega feldolgoznikívánt log fájlokmappáját.Haazeddigieknekmegfelelőenjártunkel,akkorennekazelérésiútnakavége:\9\log ,azelejepedigannakamappánakazelérésiútja,ahonnana9nevűmappanyílik.Sajnosittnincstallózásilehetőség,tehátbekellbillentyűznialogmappaelérésiútját.
MATCH FILES BY: Itt azt állíthatjuk be, hogy fájlnév vagy dátum szerint olvasson bekéréseket a log fájlokból.Mivel példánkban amegadott öt nap log fájljai vannak csakmeg,ezértcélszerűbbaFILENAME lehetőségetbekapcsolni.LOG FILE NAME PATTERN: Itt egy fáljlmaszk adható meg, hogy milyen nevű éskiterjesztésű log fájlokatolvassonbeanode.Esetünkbena*.logmaszkutalarra,hogybármilyennevű,.logkiterjesztésűfájlokatszeretnénkbeolvasniamegadottmappából.EVENTS DEFINITION FILE: Itt kell megadni az eseménytáblát, tallózássalmegkereshetjükvagybebillentyűzhetjükamártárgyaltBDF_events_1.txtelérésiútját.
OUTPUT FILE: Itt egy olyan output (kimeneti) fájl elérési útja adható meg, amelyetmindenbeolvasásutánújralétrehozaClementine.Efájlanodekimenetekéntkeletkezőadattáblát tartalmazza. Eredetileg a párbeszédpanel a$WEBMINING_ROOT/output/webminingoutput.txt nevet kínálja fel, állítsuk át ezt a...\9\BDF_events_out.txt elérésiútra,hogyközvetlenülmegnézhessükanodekimenetétésszükségeseténfelhasználhassuk.(A...hárompontannakamappánakazelérésiútjátjelzi,ahonnana9nevűmappanyílik.)REPROCESS LOG FILES: Itt azt állíthatjuk be, hogy a node változatlan újrafuttatásaeseténújrafeldolgozza-ealogfájlokadataitvagyazegyszermárlétrehozottoutputfájltbeolvasvaképezzenadattáblátanode.
Haegyadatbányászstream-etépítünk,kiegészítünk,tesztelünk,vagyvalamilyenokbóltöbbszörfuttatunk,célszerű a R E P R O C E S S L O G F I L E S jelölőnégyzetből a pipát kivenni, mert a log fájlok beolvasásaaránylaghosszú ideigtarthat(hosszabbidőszak,vagynagyforgalmúportálvizsgálataeseténakárórákigis).Azoutputfájlbeolvasásaugyanaztazeredménytszolgáltatjaaránylagrövididőalatt.
A CHANNELS beállítások és a beolvasást irányító IMPORT, LOCALE, SPECIFICATIONfülekmegismerésetúlmutatekurzuskeretein. VegyükkiaTRACKCHANNELRESPONSES jelölőnégyzetbőlapipát,mertnemadunkmegtöbbadatot.
FigyeljükmegaFilterésaTypesfülektartalmát!
Azokat a mezőneveket olvashatjuk itt, amelyeket az Eseménydefiníciók fejezetbenismertettünk.Látható,hogyazIDmezőktárolásitípusaismeretlen,atöbbimezőtárolásitípusa szöveges – holott e mezők közt két Timestamp (dátumot és időpontot együtttartalmazó„időpecsét”)isszerepel–ezeketátkellmajdalakítani,hogyhasználhassuk.
SzúrjunkbeegytáblátaWebminingnodeutánésfuttassuk!
A futás kezdetén egy karakteres ablakban tájékoztat a gép a log fájlok beolvasásánakállapotáról.Azelsőfuttatásteljesidejeatáblázatmegjelenítéséigkb.egyperc.MivelkikapcsoltukaReprocesslogfileskapcsolót,ezértamásodikfuttatásnálmárakészBDF_events_out.txt-bőldolgozikanode,ígyezekutánmárrövidebbleszafutásiidő(kb.10másodperc).
Futtassuk még egyszer a táblát, s figyeljük meg, hogy másodszor mennyivel rövidebb ideigdolgozikagép!
Avégeredményülkapotttáblábantöbbmintháromszázezerrekordvan,mindegyikegy-egyolyanfelhasználóikérés,amitazeseménytáblázatbandefiniáltunk.Ezentúlezeketarekordokattöbbnyireeseményeknekfogjuknevezni–durvánaztlehetnemondani,ezekegy-egyportálrészreirányulókattintásokatjeleznek.
Nézzükmeg,mittartalmazaBDF_events_out.txtfájl!
Látható, hogy ugyanezt a Web mining node futtatásával kapott táblát tartalmazzamezőneveknélkül,tabulátorokkaltagoltszövegfájlként.
EventstatisztikákA megfigyelt események gyakoriságát, az egyes honlaprészeken történt kérések –leegyszerűsítve: az oda irányuló kattintások – számát, megoszlását szeretnénkmegfigyelni. Külön össze szeretnénk hasonlítani az egyes karokhoz kapcsolódó ilyeneseményekszámát.
Előszöregyátfogóeseménystatisztikátkészítünkmindenmegfigyelteseményről.
RajzoltassukkiaClementine-naladefiniálteseményekeloszlását!
CélszerűaziméntbetetttáblátkitörölniazeddigistreambőléshelyetteegyDistribution(graph)node-otbetenni:
Ha beállítjuk a grafikon paneljén az Event Name mezőt és futtatjuk a grafikont, eztkapjuk:
Megfigyelhetjük,hogyaz„egyéb”eseményeknagyszámamiattnemjólkivehetőatöbbieseményekaránya.
Készítsükelugyaneztamegoszlásigrafikontaz„Egyéb”eseményekkihagyásával!Állítsunkbeazeseményekszámaszerinticsökkenősorrendetis!
Az első feladatrészhez a Select node fog segíteni, melyet a Web Mining node és aDistributionNodeközékellbeilleszteniésazalábbibeállításokatkellrajtatenni:
AmásodikfeladatrészmegvalósításáhozaDistributionNode-onkellbekapcsolniaSORT–BYCOUNT beállítást:
Afuttatásutánpedigeztlátjuk:
Úgytűnik,hogyafejezetelejénfelvetettmásikproblémáraismegoldástkaptunk,mertaBTK, TMK és TTK karok sorrendje leolvasható. Ez azonban nem jó! Hiszen ha azeseménydefiníciótmegnézzük,akkorlátható,hogyazMSZIésazItanszekeseményisa/ttkURL-részheztartozik,tehátezeketishozzákellvenniaTTKeseményeihez.AlogfilemindensorátcsakegyszersoroljabeeseménykéntaWebMiningnode,ezértpl.azMSZIeseményeitnemtekintiautomatikusanTTKeseménynekis.Eztkorrigálnikell.E célból egy új mezőt kell a táblához adni, melyben az egyes karok portáljain belülieseményeketmegjelöljük.
Adjunk egy Derive node-dal egy kar mezőt az adattáblához, melyben a „ttk”, „btk”, „mszi”, „más”értékek vannak attól függően, hogy a három kari portál közül melyikhez (vagy egyikhez sem)tartozikazesemény!
KözvetlenülaSourcenodeutáncélszerűegyDerive,egySelectésegyDistributionnode-otbeilleszteni.
ADerivenode-nálazújmezőnevelegyenkar,SET legyenatípusaésa„btk”,a„tmk”ésa„más”adatértékfeltételétegyszerűenazalábbiakszerintadjukmeg:
A„ttk”adatértékfeltételénekbeviteléhezhívjukbeakifejezésszerkesztőtésakövetkezőkifejezéstvigyükbe:
ASelectnodebeállításai:
VégülaDistributionNodebeállításai:
Afuttatáseredménye:
VisitstatisztikákAvisitekleegyszerűsítveaztakattintássorozatot(egymásutánikéréseket)jelentik,amiegyetlenuserfolyamatostevékenységétjelziaportálonvaló„tartózkodása”alatt.AVisitID mező alapján lehet azonosítani az egyes visiteket. Ez sokféle vizsgálatra adlehetőséget:meg lehetállapítaniavisitekkezdetét jelentőeseményt,avégüket jelentőeseményt,azidőtartamukat,abennüktörténteseményekszámát,azt,hogyhányféleésmilyennevűeseményektörténtekbennük,stb.Efejezetbencélkénttűzzükki,hogyazötnapalattivisitekszámát,átlagosidőtartamát,ésabennüktörténtkattintásokátlagosszámátmegállapítsuk.
Alakítsuk át az adattáblát úgy, hogy minden visithez egy rekord tartozzon és benne a visitazonosítója, percbenmért időtartama, továbbáahozzá tartozóeseményekdarabszáma jelenjenmeg!
Afeladatotháromnode-daloldhatjukmeg.
Ehhez először egy olyan mezőt kell létrehozni, melyben az eseményekhez a visitkezdetétőladdigelteltidővantárolva.Két„időpecsét”adottmindeneseményhez,az„ővisitjének” a kezdete és a saját időpontja. Ezek különbségét kellene egy új mezőbenképezni.SzúrjunkbeaWebMiningnodeutánegyDerivenode-otésállítsukbeazalábbiakszerint:
Az új mező tartalmánál a DATETIME_TIME() és a TIME_MINS_DIFFERENCE() függvényeket használjuk. Az első a Timestamp formátumból csak az órát, percet ésmásodpercet tartja meg, a második pedig két időpont közti különbséget adja megpercben.
Tehátabeírandókifejezés:time_mins_difference(datetime_time('Visit Start Timestamp'),datetime_time('EventTimestamp'))
Sajnoskeletkezhetneknegatívértékekis,haéjfélelőttkezdődikegyuservisitjeéséjfélutánfejeződikbe.
A kapott negatív értékekhez adjuk hozzá az egy napban levő percek számát, hogy a helyesidőeltéréstadjákeredményül!
Egynapban24*60=1440percvan.EgyFillernode-dala<0 feltételhezkötvekell1440-nelnövelniavisit_eddigmezőtartalmát:
Aggregáljuk (összesítsük) az adattáblánkat úgy, hogy minden rekord egy visitet tartalmazzon,ebben pedig jelenjenmeg a hozzá tartozó legnagyobb visit_eddig érték (ez a visit hosszát fogjajelenteni)ésavisitheztartozóeseményekdarabszáma!
EgyAggregate node segítségével tehetjük eztmeg. Az összesítési kulcs aVisit ID kelllegyen, így minden visitazonosítóhoz egy rekord tartozik majd, a hozzá tartozólegnagyobb visit_eddig értéket aMAX beállítással, a hozzá tartozó események (eddigirekordok) számát pedig az INCLUDE RECORD COUNT IN FIELD beállítással kaphatjukmeg.Azesemény-darabszámotjelzőmezőnekazesemény_dbnevetcélszerűadni:
Már csak az hiányzik, hogy a gép által elnevezett új visit_eddig_Max nevű mezőtátnevezzükegyjellemzőbbnévre,hiszenezavisitekténylegeshosszáttartalmazza.
NevezzükátamezőtegyFilternode-dal!
Azábránláthatóazeddigistreaméspirossalmegjelölveazátnevezésmegadása.
Nézzükmegegytáblábanazeredménytésjelenítsükmegazátlagosvisithosszatésazesemények(kattintások)átlagosvisitenbelülidarabszámát!
Kétújnode-otkelltehátastream-hezadni:
ATablenodehasználatátnemkellrészleteznünk,csakafuttatásieredménytmutatjuk:
AStatisticsnodebeállításaipéldáulakövetkezőklehetnek:
Afuttatáseredményepedigez:
Sajnos,avisithosszmezőnempontosanadjaaportálonvalóböngészésidőtartamát,hiszenvannakegyetleneseményt tartalmazó visitek is, melyekhez értelemszerűen 0 percnyi idő tartozik. Ennél pontosabbkimutatást nem lehet készíteni,mert a log fájlbannincs információ, hogy valójábanmennyi időt töltött afelhasználóegyetlenlekértlapnézegetésével.(Azislehet,hogyauserfelálltagépemellőléscsakhosszúidőmúlva tért vissza, stb.) Ezt az eredmények kiértékelésénél figyelembe kell venni, a túl hosszú visiteketérdemesilyenszemmelvizsgálni.
UserstatisztikákA portál látogatói közül vannak usernévvel azonosítható bejelentkezők és vannakolyanok,akika főiskolavalamelyiknyilvánosgépérőlérikelaportált.Hasznos lehetaportál elemzése szempontjából, hogy milyen arányban vannak a látogatók közt abejelentkezett userek, abelső gépekendolgozó, be nem jelentkezett látogatók és azok,akik egy külső gépről interneteznek. Az első csoportot az egyszerűség kedvéértbejelentetteknek, a második csoportot belsőknek, a harmadikat külsőknek fogjukelnevezni,célunk,hogyegymezőthozzunklétre,melyeháromtípustkülönböztetimegminden kérés esetén. E gyakorlat során célunk az lesz, hogy e három usertípusmegoszlásátvizsgáljuk.Vizsgálhatnánk még a különféle userek visitjeinek számát, a hozzájuk tartozóesemények számát, az egyes userek leggyakoribb kéréseit, a userekhez tartozóleggyakoribbeseményeket,stb.deekurzuskereteiköztnemférelazösszesvizsgálat.
ElőszörleolvassukauserekIPcímeit.EztaHostnamemezőtartalmazza:
A táblázatrészből látható, hogyminden IP-címaHostnamemezőben levő stringvégénszerepel és „:” karakter előzi meg. Az IP címet tehát string-függvényekkel„leválaszthatjuk”astringről.Háromfüggvénytcélszerűhasználni.
• A LENGTH(string-adat) függvény a string-adat hosszát adja numerikusértékként.
• A LOCCAR_BACK(karakter, string-adat) a megadott karakternek a string-adatbanvalóutolsóelőfordulásihelyétadjavisszanumerikusértékként.
Figyelem! Egyetlen karaktert nem stringként, idézőjelekkel határolva, hanem külön karakterre utalóformátumban,balradőlőaposztrófokközöttkellmegadniaClemnyelvben,pl. `a` . (Ahatárolójelek írásaAltGr+7billentyűkombinációvaltörténhet.)
• A SUBSTRING_BETWEEN(numerikus adat , numerikus adat , string-adat)függvényazelsőnumerikusértéktőlamásodikigterjedőrészétadjaabenneszereplőstring-adatnak.
Mindezeketfigyelembevéveakövetkezőképletszolgáltatjaegy-egyuserIP-címét:substring_between(locchar_back(`:`, length(Hostname), Hostname)+1,length(Hostname),Hostname)
Készítsünk olyan új IP nevűmezőt,melyminden eseménynél az eseményt indító user IP címéttartalmazza!(Szövegestárolásúadatoklegyenek.)
EhhezegyDerivenode szükséges. SzúrjukbeaWebMiningnode utánközvetlenülésamegadottképletetírjukbeabeállításaihozakövetkezőmódon:
Most a táblához egy „bejelentett”, „belső” és „külső” usereket jelző mezőt kellenehozzávenni. A bejelentettek rekordjaiban azAuthorizedUserName mező nem üres. Akövetkezőfeltétellellehetpéldáulezeketkiválasztani:length('AuthorizedUserName')>0
AbelsőuserekIPcímevagy10-esselkezdődik,vagy193.224.74-gyelvagy193.225.199-cel. Ezek kiválasztásához szükség lesz a STARTSTRING(numerikus adat, string-adat)
függvényre, mely a numerikus értéknek megfelelő betűszámú részét adja a string-adatnakazelejétőlkezdve.
Akövetkezőfeltételtehátéppenabelsőuserekrekordjairaleszigaz:startstring(3,IP)="10." or startstring(11,IP)="193.224.74." orstartstring(12,IP)="193.225.199."
Készítsünk olyan új usertípus nevű mezőt, mely minden eseménynél az eseményt indító usertípusáttartalmazza!(Lehetségesértékei:"bejelentett","belső","külső"–szövegestárolásúadatok.)
Ehhez egy újabb Derive node szükséges. Mivel háromféle szöveges értéket kelltartalmazzon,ezértSettípusúmezőtkelllétrehoznunk.Szúrjukbeazelőzőnodeutánésállítsukbeabeállításaitakövetkezőmódon:
AzeseményekusertípusszerintimegoszlásátmárkönnyenkiirathatjukegyPlotnode-dal.Tegyükmeg!
Lehet,hogyegyuserheztöbb,amásikhozkevesebbeseménytartozik.
Tároljukegymezőben,hogymelyikuserekhezösszesenmennyieseménytartozik!
EgyAggregatenodemegtesziezt:
Amegadottbeállításokkalmindenrekordegyusertfogjelenteni,melletteausertípusésahozzátartozórekordok(események)számafogtartozni.
Egytáblábaneztmegistekinthetjük,7775darabusertkaptunk:
Jelenítsükmegazuserekusertipusszerintimegoszlását!
EhhezegyDistributionnode-raleszszükség.Afuttatáseredménye:
Látható,hogyazelőzőmegoszlásigrafikonhozképestazarányokváltoztak.Habelegondolunk,ezarrautal,hogyabelsőésabejelentettuserektöbbetdolgoztak(többeseménytgeneráltak)aportálon,mintakülsőlátogatók.
Számítsukki,egyuserhezátlagosanhányeseménytartozik!
EztegyStatisticsnodeszámítjakinekünk,akövetkezőbeállításokkal:
A futtatás eredménye adja az egy userre eső események átlagos számát, legkisebb éslegnagyobbértékét,illetveszórását:
Mivelazegyvisitreesőeseményekátlagosszáma25,ebbőlmegbecsülhető,hogyegyuserreátlagosanmásfélvisitesik–ezttermészetesenaClementine-nalpontosanismeglehethatározni.
Gyakorlófeladatok:
Egészítsükkiazeseménytáblátúgy,hogya/konyvtar/URL-töredéknekmegfelelőeseményeketisfigyelhessük!(Ezekafőiskolaikönyvtárweb-oldalairairányulókérések.)
Nézzükmegakönyvtáreseményeitazesemény-statisztikákban!
Készítsünk olyan új mezőt, melynek segítségével kimutathatjuk, milyen százalékos aránybanfordulnakelő0hosszúságúvisitek!
Készítsünk olyan új mezőt, melynek segítségével kimutathatjuk, milyen százalékos aránybanfordulnakelőkétóránálhosszabbvisitek!
Készítsük el a különböző userek visitre vonatkozó statisztikáit! A visiteket aggregáló node-nálállítsuk be aK E Y F I E L D S beállításnál az User ID-t is, és ezután aggregáljunk User ID szerint!Számíttassukkiezutánazegyuserreesővisitekszámát!
Számítsukki,hányeseménytartozikátlagosanegybelső,egykülsőésegybennfentesuserhez!