Adatbányászati technikák 5. labor

Katona Gyula (kiskat@cs.bme.hu), Tóth Ágnes (tothagi@cs.bme.hu)

Április 14.,  csütörtök 8:15-9:45, R4M labor


Órai feladatok:  Experimenter, gnuplot, klaszterezés


Pár dolog, ami múlkor nem ment, reméljük most fog:
  1. Indítsuk el az xservert: XWin Server (az asztalon).
  2. A megjelenő terminál ablakban beállíthatunk különféle dolgokat. Például a VT Options-ban bállíthatjuk: Enable Scrollbar.
  3. Adjuk ki a cd /cygdrive/c/user/ utasítást!
  4. Töltsük le az bank-data.csv, atlag.awk fileokat a C:/USER könyvtárba.
  5. Nyissunk meg a következő AWK filet az editorban: nedit atlag.awk &
    Adjuk ki a következő parancsot: awk -f atlag.awk bank-data.csv

  1. Indítsuk el a WEKA-t (D:/Program Files/weka ...).
  2. Kattintsunk az Experimenterre. Ebben betölthető egyszerre több adathalmaz, és megadható több algoritmus. A futtatáskor minden adaton minden algoritmust lefuttat és egy összehasonlítást ad az eredmények között.
  3. Egy új Experiment megadásához kattintsunk a New gombra.
  4. Datasets -> Add new -> bank-data-train.arff
  5. Algoritms -> Add new -> Válasszunk ki párat (pl. IB1, J48, BayesNet,...)
  6. Result destination -> ARFF file és írjunk be egy nevet.
  7. Run -> Start 
  8. Az Explorerben nyissuk meg a fenti eredmény állományt, az Edit-tel nézzük meg mi van benne, értelmezzük.
  9. Vissza az Exprimenterbe -> Analyze-> Preform Test. A jobb oldalon különféle dolgokat állíthatunk, a bal  oldalon látható az összehasonlítás.
  10. classifiers/meta/CVParameterSelection: megadhatunk tetszőleges osztályozó algoritmust, melynek adott paramétereit keresztvalidálás segítségével optimalizájla, minél nagyobb Accuracy értéket elérve.
  11. Példa: a bank-data-train.arff adat betöltése után a CVParameterSelection-nek adjuk meg a J48 algoritmust, a CVParameter részben pedig vegyük fel a "C 0.01 0.4 40.0" kifejezést (a C, confidenceFactor értékét 0.01 és 0.4 között futtatjuk 40 lépéssel). Az algoritmus eredményeként megkapjuk a legjobb C értéket, ami 0.03, valamint a megfelelő modellt és jósági mutatókat. Futtassuk az M értékét is, 2 és 10 között 1 lépésközzel.
    Az eljárás előnye, hogy tetszőlegesen sok paraméter által meghatározott paramétertér bejárható, hátránya viszont, hogy az osztályozó algoritmusnak csak a közvetlen paramétereire használhatjuk (azaz ha az algoritmusunk paramétere egy további algoritmus, akkor annak paramétereire nem), és az optimalizálni kívánt jósági mutató sem változtatható.
  12. classifiers/meta/GridSearch: az előző módszerrel ellentétben többféle célfüggvény szerint optimalizálhatunk, és az algoritmusok belső paramétere is változtatható, viszont egyszerre csak két paramétert futtathatunk.
    Példa: optimalizáljuk az SMO algoritmus C paraméterét és az RBFKernel almetódus gamma paraméterét. Beállítások: evaluation=Accuracy; filter=weka.filters.AllFilter; classifier=weka.classifiers.functions.SMO, ennek paraméterei között: kernel=weka.classifiers.functions.supportVector.RBFKernel; XProperty=classifier.c, XMin=1, XMax=16, XStep=1, XExpression=I; YProperty=classifier.kernel.gamma; YMin=-5, YMax=2, YStep=1, YBase=10, YExpression=pow(BASE,I).
    Mit jelentenek a beállított paraméterek? Értelmezzük a kimenetet! Milyen további beállítási lehetőségei vannak az algoritmusnak?

Gnuplot

  1.  A terminál ablakban írjuk be, hogy gnuplot
  2.  Próbáljuk ki a következő pár dogot:
  1. Egyszerű leírás: http://www.duke.edu/~hpgavin/gnuplot.html
    részletes dokumentáció: http://www.gnuplot.info/documentation.html
    Trükkök: http://gnuplot-tricks.blogspot.com/
  2. Töltsük le a bank-data-train.dat és a bank.gp fileokat.
  3. Adjuk ki a gnuplot bank.gp utasítást, ami végrehajtja a bank.gp script utasításait. A bank-data-train.dat lényegében a ugyanaz, mint az arff file, csak gnuplot számára emészthetően. Nézzük meg a scriptet velamilyen editorral (pl. nedit bank.gp). Mit csinál a script?
  4. Mit csinál, ha az első két sort is végrehajtja (töröljük az #-t)?
  5. Töltsük le a regress.arff   filet. WEKA-ban futtassunk regressziós becslést, az unemployment és centralization a magyarázó és a volume a magyarázandó változó. Az eredmény egy sík a térben. Ábrázoljuk az adatpontokat és a kapott síkot gnuplottal!
    (Ehhez az adat file-t konvertálni kell a gnuplot számára: kitörölni vagy kommentelni a fejlécet és a vesszőket space-re cserélni pl. tr-rel.)
  6. Ha valamilyen osztályózót futtatunk (pl. J48), akkor a megnézhetjük a ROC görbét (3. alkalom). Ott el is lehet menteni az görbe pontjait (sok más adattal együtt.) Ebből lehet rajzolni gnuplottal is. Csináljunk egy olyat,  hogy két különbőző algoritmusból származó ROC görbét rajzolunk ki egy ábrára.

Klaszterezés

  1. Töltsük le a 2d-data.arff filet, klaszterezzük a Cluster/SimpleKMeans algoritmussal. Próbálkozzunk különféle beállításokkal (seed!!, kluszterek száma, távolság mértéke)!
    Az eredményt a Visualize Cluster Assignment-nél tudjuk megnézni. Hány klasztert érdemes választani?
  2. Ugyanez a feladat a 3d-data.arff file esetén. Ezt jobban meg lehet nézni gnuplottal (splot), az adatfile megfelelő formában:  3d-data.txt. A klaszterezés eredménye is elmenthető file-ba a Visualize Cluster Assignment-nél. Az így kapott file-t megfelelő konvertálás után kirajzolhatjuk gnuplottal (a különböző kluszterek legyenek különböző színűek, bejelölhetjük a klaszterek középpontját is).
  3. Most a bank.arff adatot kluszterezzük, legyen k=6. Próbáljuk értelmezeni a kapott klasztereket és ábrákat!

A nagyházi feladat 3. része itt található.

Kiegészítő feladat: K-means

  1. Írj tetszőleges programnyelven k-means algoritmust.