Adatbányászati technikák 3. labor

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

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


Órai feladatok:  osztályozás, dötési fa, döntési szabályok

Pár dolog, ami múlkor sem 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
Döntési fák:
  1. Indítsuk el a WEKA-t (D:/Program Files/weka ...)
  2. Az Explorer-ben nyissuk meg a bank-data-train.arff filet (Preprocess: Open file, File type-> CSV), mely banki ügyfelek adatait tartalmazza. A feladatunk, hogy döntési fával osztályozót készítsünk, mely megpróbálja előrejelezni, hogy mely ügyfelek vesznek befektetési kötvényt. Erre a célra a WEKA J48 metódusát fogjuk használni, mely lényegében a C4.5 döntési fa algoritmus implementációja. (Tehát csúcsvágáskor az entrópiából számolt információ nyereséget, illetve az arányt vizsgálja.)
  3. Futtassuk le a J48 osztályozót alapbeállításokkal (Classify: Choose, trees/J48, majd Start). Vizsgáljuk meg az eredményt: láthatjuk a felépített döntési fát, és különböző statisztikai adatokat a modell jóságáról.
    Lent található a Confusion Matrix, mely True Positive (pozitívnak jósolt és valóban pozitív), False Positive (pozitívnak jósolt, de valójában hamis), False Negative (negatívnak jósolt, de valójában pozitív) és True Negative (negatívnak jósolt és valóban negatív) egyedek számát.
    Ebből kiszámolhatók a TP Rate (TP/P, P=TP+FN), FP Rate (FP/P), Precision (TP/(TP+FP)), Recall (TP/(TP+FN)), F-measure (2*Precision*Recall/(Precision+Recall)) mutatók.
    Nagyon fontos jósági mérőszám a ROC, receiver operating characteristic. A legtöbb osztályozó algoritmus nem csak 0 vagy 1 értéket tud visszaadni, jelezve, hogy melyik osztályba tartozik az adott egyed, hanem valószínűséget, mely a döntés biztosságát mutatja, azaz egy 0 és 1 közötti valós számot. Ezután egy adott 't' küszöb alatt az egyedeket a 0-s osztályba soroljuk, felette pedig az 1-esbe. Ezt a küszöböt változtatva változik az előrejelzés, a confusion matrix, és ezzel együtt a TP Rate és FP Rate. A ROC görbe a t küszöbérték különböző értékeihez tartozó (FP Rate, TP Rate) pontpárokat mutatja. Tökéletes osztályozó esetén a görbe a (0,0)-(0,1)-(1,1) pontokkal meghatározott vonal lenne, véletlen próbálkozásnál pedig a (0,0)-(1,1) átló. Ennek alapján a ROC érték a görbe alatti területet méri, minél nagyobb értéket kapunk, annél jobb az osztályozónk (ebben az értelemben).
    Az eredmények külön ablakban is megtekinthetők (Jobb klikk a Result list megfelelő elemére, View in separate window).
  4. A Result list-ben eltárolódnak korábbi futtatásaink, azok eredményét és beállított paramétereit később visszakereshetjük. Ugyanitt érhetők el az eredmények megértését segítő különböző grafikonok, a következő lépésekben ezeket tekintjük át.
  5. Visualize classifier error: : Az osztályozási hibát egy grafikonon vizsgálhatjuk, állítható a két tengelyen szereplő attributum, a színezés az osztályváltozó tényleges értékét mutatja. (Itt észrevehetjük, ha például egy attribútum valamely konkrét értékére nagyon rossz az előrejelzésünk.)
  6. Visualize tree: A döntési fa szebb megjelenítése. (Jobb klikk után állíthatók a megjelenítési paraméterek.)
  7. Visualize margin curve: Egy egyedhez tartozó margin értékét bináris változó esetén úgy kapjuk, hogy az egyed tényleges osztályának az előrejelzés szerinti valószínűségéből kivonjuk a jósolt osztály valószínűségét. (Például, ha a döntésünk során 0.7 valószínűséggel 1-es osztályt jósoltunk - és 0.3 valószínűséggel 0-t gondoltunk -, de az egyed valójában a 0-s osztály tagja, akkor a margin értéke 0.3-0.7=-0.4.) Ábrázolhatjuk az egyedek számát, ezen érték szerint növekvően rendezve.
  8. Visualize treshold curve: Itt a korábban ismertett ROC görbét láthatjuk az osztályváltozó különböző értékeire. A tengelyeknek egyéb statisztikai mutatókat is választhatunk.
  9. Cost/Benefit analysis: Egy hiba mátrixot megadva számolhatunk költség, illetve hasznosság értékeket. Majd a ROC görbén megkereshetjük azt a döntési küszöb értéket, amelyik várhatóan a legkisebb költséggel jár (legtöbb hasznot hozza).
  10. Visualize cost curve
  11. A J48 algoritmus futtatásánál különböző paramétereket állíthatunk be. (Klikk az algoritmus nevére.) Megadhatjuk, hogy csak bináris elágazásokat engedünk meg vagy sem, mekkora minimális tisztaságot követelünk meg a levelekben, legalább hány egyedet tartalmazzanak a levelek. Akarunk-e a fa építése utáni metszést, a fa épításe utáni részfaemelést. Próbálgassuk az algoritmust különböző paraméterekkel, érjünk el minél magasabb ROC értéket.
  12. A következőkben a felépített modellt fogjuk alkalmazni a bank-data-test.arff file-on, mely olyan ügyfelek adatait tartalmazza, akikről még nem tudjuk, hogy vesznek-e majd befektetési kötvényt (Test options: Supplied test set, Set..., Open file, majd Start).
  13. Az előrejelzett osztályváltozókat kimenthetjük külön fileba (Visualize classifier errors: Save). Tekintsük meg a kapott filet. (A predictedpep attribútum az előrejelzett változó.)
  14. A modell készítés és előrejelzés parancssorból is elérhető, a Simple CLI segítségével. (Az Explorer-rel azonos szinten választható ki.)
    Modellépítés: java weka.classifiers.trees.J48 -C 0.25 -M 2 -t directory-path\bank.arff -d directory-path \bank.model
    Előrejelzés: java weka.classifiers.trees.J48 -p 9 -l directory-path\bank.model -T directory-path \bank-new.arff
  15. Készítsünk minél jobb modellt, használjuk a múltkor megismert Preprocess: Filter, Select Attributes lehetőségeket. Továbbá hasznos lehet még a Filter: AddExpression művelet, mellyel származtatott attributumokat vehetünk fel.
  16. Gyakoroljuk a house-votes-84.arff fileon.
  17. További döntési fa építő algoritmusok a WEKA-ban: Id3 (csak nominális attributumokkal használható), Simple Cart.
  18. A tanult döntési szabály készítő algoritmusok: ZeroR, OneR, Prism (csak nominális), ezeket is próbáljuk ki.

A nagyházi feladat 2. része hamarosan elérhető.

Kiegészítő feladat: A névtábla problémája

  1. Egy adatbányászati konferencián minden részvevő névtábláján szerepelt egy + vagy egy - jel is, ami kizárólag a névtől függött.
    A feladat annak kitalálása, hogy milyen szabály alapján rendelték a nevekhez a jeleket.
  2. Az adatok itt találhatóak.