Adatbányászati technikák 2. labor

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

Március 3.,  csütörtök 8:15-9:45, R4M labor


Órai feladatok: ismerkedés a WEKA-val, adatfileok előfeldolgozása, osztályozá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 arlista-tab.txt, bank-data.csv, uniq.txt, atlag.awk fileokat a C:/USER könyvtárba.
  5. Nyissuk meg a uniq.txt filet az nedit uniq.txt & paranccsal!
  6. Nyissunk meg a következő AWK filet az editorban: nedit atlag.awk &
    Adjuk ki a következő parancsot: awk -f atlag.awk bank-data.txt
Ismerkedés a WEKA-val:
  1. Indítsuk el a WEKA-t (D:/Program Files/weka ...) (WEKA manual, tutorial)
  2. Indítsuk el az Explorer-t
  3. Nyissuk meg a bank-data.csv filet (Open file, File type-> CSV)
  4. Lehetőségek a Preprocess menüben:
  5. Nézzünk bele az adatba (Edit ...)
  6. Nézzük végig az attribútumokat, adattípusokat
  7. Mit jelent a hisztogram? Mit lehet állítani?
  8. Visualize All
  9. Lehetőségek a Filter menüben (Pl. RemoveUseless)
  10. Van Undo!
  11. A Visualize menü
  12. A Select attibutes menü
  13. A Classify menü:
  14. Choose: a klasszifikáló algorimus kiválasztása:
  1. Test options: Use training set, Supplied test set, Cross-validation, Percentage split
  2. Próbáljuk ki az IBk algoritmust különböző beállításokkal! Hogyan mérjük az eredményt?
  3. Hozzuk az arlista-tab.txt CSV formátumra és próbáljuk betölteni a WEKA-ba. (Figyelni kell az elválasztó karakterre, egyéb speciális karakterekre).
  4. Szükség esetén változtassuk meg az adattípusokat! Ezt lehet a Preprocess menü algoritmusaival is, vagy a CSV fileból egyy editor (nedit) segítségével közvetlenül a WEKA saját formátumába alakíthatjuk: arff file
    Az ARFF formátumról itt találhatunk bővebb leírást: http://www.cs.waikato.ac.nz/~ml/weka/arff.html
    Egy példa pedig: labor.arff
  5. Az előállított arlista.arff fileon kísérletezzünk! Legyen az osztályváltozó az Akciós attribútum, osztályozzunk az IBk és logisztikus regresszióval, különféle beállításokkal. Próbáljunk minél jobb eredményt elérni!
  6. Mi a hatása az IBk osztályozónál a nearestNeighbourSearchAlgorithm opciónál a KDTree választásának?
  7. Hogyan változnak az eredmények, ha a Test options-nál a Cross-validation helyett a Percentage split-et választjuk? (A More optionsnál változtathatjuk a Random seedet.)
Aki kész van:
  1. Helyettesítsük  az Akciós attribútumot egy hasonoló eloszlású véletlennel. Hogyan működnek ezen az osztályozók?
  2. A Supplied training set használatához osszuk fel az adatokat 75%, 25% arányban training ill. test adatokra. A kapott adatokkal futtassuk az osztályozókat!
  3. Lehet kísérletezni a labor.arff adatokkal is.

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

Kiegészítő feladat: képek osztályozása hisztogram alapján

  1. Írjunk egy programot (tetszőleges programozási nyelven), mely képekhez hisztogramot készít. Egy szürke árnyalatos kép hisztogramja egy grafikon, mely megmutatja, hogy az egyes szürke árnyalatokból hány pixel található a képen. Hasonlóan kaphatjuk egy kép piros, zöld és kék árnyalathoz tartozó hisztogramját. Osztályozás szempontjából nincs szükségünk nagyon részletes leírásra, elég ha a színtartományt néhány (mondjuk 8) részre osztjuk, és így vizsgáljuk az egyes részekbe eső pixelek számát. Így mind a három alapszínre kiszámolva a hisztogramot, egy képhez három darab 8 hosszú vektort kapunk, melyek együttesen egy 24 dimenziós vektornak tekinthetők.
  2. A választott programozási nyelven implementáljuk a K-legközelebbi szomszéd (K-Nearest Neighbour, KNN) algoritmust az előbbi 24 dimenziós vektorokkal, mint leírókkal. A K értéke legyen például 5. Először az algoritmus egy adott vektorhoz keresse meg a (szintén vektorokból álló) refencialista legközelebbi 5 elemét. Majd a legközelebbi szomszédok osztálya alapján többségi szavazással jósolja meg az adott vektor osztályát.
  3. Teszteljük programjaink működését. Az itt található 25 kép egy része téli témájú, a többi nem. Ez az információ mindegyik képről ismert. Válasszunk egy tetszőleges képet, és csak a többi kép osztályának ismeretében osztályozzuk az adott képet. Ismételjük meg az előző kísérletet különböző nehézségű képekkel.
  4. Mit módosíthatnánk az előbbi algoritmuson, hogy jobb eredményt adjon? (Egyformán fontos-e a kép piros, zöld és kék histogramja a leírásban? Milyen más módon lehetne egy képhez leírókat rendelni?)