Adatbányászati technikák 5. labor
Á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:
- Indítsuk el az xservert: XWin
Server (az asztalon).
- 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.
- Adjuk ki a cd
/cygdrive/c/user/
utasítást!
- Töltsük le az bank-data.csv, atlag.awk
fileokat a C:/USER könyvtárba.
- 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
- Indítsuk el a WEKA-t (D:/Program Files/weka ...).
- 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.
- Egy új
Experiment megadásához kattintsunk a New gombra.
- Datasets
-> Add new
-> bank-data-train.arff
- Algoritms
-> Add new
-> Válasszunk ki párat (pl. IB1, J48, BayesNet,...)
- Result
destination -> ARFF file és
írjunk be egy nevet.
- Run -> Start
- Az Explorerben
nyissuk
meg
a
fenti eredmény állományt, az Edit-tel nézzük
meg mi van benne, értelmezzük.
- 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.
- 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.
- 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ó.
- 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
- A
terminál
ablakban
írjuk
be, hogy gnuplot
- Próbáljuk
ki
a
következő
pár dogot:
- plot sin(x)
- plot sin(x**2)
- plot sin(x)/x, log(x)
- plot 2*x+1,3*x-4, sqrt(x)
- splot sin(x*y/20)
- splot sin(x**2+y**2)
- 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/
- Töltsük le a bank-data-train.dat
és a bank.gp fileokat.
- 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?
- Mit csinál, ha az első két sort is
végrehajtja (töröljük az #-t)?
- 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.)
- 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
- 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?
- 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).
- Most a bank.arff adatot kluszterezzük,
legyen k=6. Próbáljuk értelmezeni a kapott klasztereket és ábrákat!
Kiegészítő feladat: K-means
- Írj tetszőleges programnyelven k-means algoritmust.