Adatbányászati technikák 4. labor
Március 31., csütörtök 8:15-9:45, R4M labor
Órai feladatok: Bayes hálók, neurális hálók, SVM (support
vector machine)
További osztályozók:
- Indítsuk el a WEKA-t (D:/Program Files/weka ...).
- Töltsük be az előző gyakorlaton is használt bank-data-train.arff fáljt.
- Az osztályozók közül válasszuk ki a bayes/NaiveBayes
algoritmust, elemezzük az eredményt (feltételes valószínűségek, jósági
mutatók).
- A NaiveBayes paraméterei: displayModelInOldFormat
- a kimeneti modell formátumát befolyásolja; useKernelEstimator - numerikus
értékek esetén a normális eloszlás helyett ezt a módszert is
használhatjuk az valószínűségek becslésére (Kernel
density estimator); useSupervisedDiscretization
- numerikus értékekre alkalmazzunk-e diszkretizálást az algoritmus
futtatása előtt.
Próbáljuk ki a különböző paraméterek hatását.
- A következó osztályozónk a sokkal összetettebb BayesNet,
futtasuk le és vizsgáljuk meg a kimeneti eredményt (felépített háló
struktúrája, jósági mutatók a hálóhoz és a modellhez).
- A BayesNet fontosabb paraméterei: BIFFile - kezdeti
hálóstruktúra megadható BIF formátumú fájlból, ha így végezzük a
tanítást, a kezdeti és a végső háló közötti eltérésekről is kapunk majd
információt; estimator -
itt adhatjuk meg a hálóhoz tartozó feltételes valószínűségeket
meghatározó algoritmust; searchAlgorithm
- a háló struktúrájának keresését végző módszert választhatjuk ki itt; useADTree - egy módszer a
tanítási idő csökkentésére, nagy a memóriaigénye.
A háló struktúrájának tanulásához először el kell döntenünk, hogyan
járjuk be a lehetséges hálók terét (illetve annak egy részét), erre
példa a HillClimber - kicsit
változtat a struktúrán úgy, hogy a kapott háló a beállított mérték
szerint a jobb legyen, mint a kiindulási háló, majd ezt ismétli; vagy
ennek különböző változatai: K2,
RepeatedHillClimer;
további módszer a TabuSearch - nem lépünk
vissza az utolsó néhány állapotba, és a SimulatedAnnealing -
rosszabb állapotba is léphetünk, de csak bizonyos csökkenő
valószínűséggel.
Az éppen aktuális háló jóságának mérésére is több lehetőségünk van: Bayes, BDeu, Minimum Description Length (MDL),
Akaike Information Criterion
(AIC) és Entropy
értékek közül választatunk.
A feltételes valószínűségek becslésére használhatjuk a SimpleEstimator, mely
egyszerűen az adathalmazból olvassa ki a valószínűségeket, vagy a BayesNetEstimator-t, BMAEstimator-t, MultiNominalBMAEstimator-t,
melyek Bayes hálókra kifejleszett becslő eljárások (BMA: Bayesian model
averaging).
Próbálgassuk a paramétereket, érjünk el minél jobb eredményt.
- Neurális háló alapú osztályozó a functions/MultiLayerPerceptron.
Próbáljuk ki (ez több ideig tart, mint az előzőek), nézzük meg az
eredményt (neurális háló leírása, jósági mutatók).
- Az algoritmus paramétereként megadható: hiddenLayers - a rejtett
rétegek száma szintenként vesszővel elválasztva
('a'=(attribs+classes)/2,'i'=attribs,'o'=classes,'t'=attribs+classes); learningRate és momentum - a neurális háló
tanulásnál a visszacsatolás paraméterei; nominalToBinaryFilter, mormalizeAttributes, normalizeNumericClass - az
előfeldolgozást befolyásoló paraméterek, javíthatják az algoritmus
eredményességét; reset -
romló megoldás esetén újraindítás engedélyezése; trainingTime - tanulási körök
maximális száma.
A paraméterek módosításával érjünk el minél jobb ROC értéket.
- A functions/SMO egy SVM (support vector machine) alapú
osztályozást valósít meg, próbáljuk ki ezt is. Legfontosabb paramétere
a C, az új tér
komplexitását leíró paraméter, valamint az új térben a pontok
távolságát megadó kernel
függvény. (Az epsilon
értéke a hibaszámolást módosítja, de csak regressziónál van értelme,
itt nem érdemes módosítani.)
- Hasonlítsuk össze az egyes módszerekkel kapott ROC értékeket.
KnowledgeFlow
- A WEKA főmenüjében válasszuk ki a KnowledgeFlow-t. (Az
Explorerrel és a Simple CLI-vel egy szinten.)
- A következőkben az alábbi adatbányász folyamot fogjuk felépíteni.
Általános szabály az építéshez, hogy az új elemet először ki kell
jelölnünk, majd egy újabb kattintással rakhatjuk fel a vászonra. Az
összekötő nyilak felvételéhez a forrás objektumon jobb kattintás után
választhatjuk ki a küldeni kívánt adatot, majd ezt követően
kattinthatunk a cél objektumra. A feldolgozó egységek paramétereit jobb
kattintás után a Configure... menüben állíthatjuk be.
- Vegyünk fel egy ArffLoader-t
(DataSoruces), és adjuk meg neki paraméterül a bank-data-train.arff
fájlt. Továbbá vegyünk fel egy Discretize
és egy Remove elemet a
Filters palettáról. Az ArffLoader-ből küldjük át a dataSet adathalmazt
a Discretize-nak, majd onnan tovább a Remove-nak. Az előbbi feldolgozó
egységben állítsuk be, hogy a 4. attribútumot (income) ossza 10
intervallumba. Az utóbbi elem segítségével pedig töröljük ki a 2.
attribútumot (sex).
- Tovább folytatva a Remove-ból küldjük tovább a dataSet-et egy ClassAssigner-be (Evaluation
fül), ebben megadhatjuk, hogy melyik attribútum az osztályváltozó. Az
alapbeállítás az utolsó (last), ez számunkra megfelel.
- Vegyünk fel egy CrossValidaton
FoldMaker-t (Evaluation), és az előbbi csomópontból küldjük át
ide az adathalmazt. Az ebben lévő alapbeállításokon se változtassunk
most.
- Adjunk a palettához három osztályozót: J48, OneR, NaiveBayes (Classifiers
paletta különböző részeiről). Egyelőre használjuk őket
alapbeállításokkal. A keresztkiértékelést segítő csomópontból küldjük
át a tanító (trainingSet) és a tesztelő (testSet) adatokat is mind a
három osztályozónak.
- Az osztályozók után kössünk egy-egy ClassifierPerformanceEvaluator-t
(Evaluation), és küldjük ide a batchClassifier adatot. A teljesítmény
elemzők text kimenetét vezessük egy közös TextViewer (Visualization)
csomópontba.
- Futtassuk le a kész folyamot: jobb gomb az ArffLoader-re és Start
loading. Lent, a Status és Log ablakokban nyomon követhetjük az adat
feldolgozásának menetét. Majd elemezhetjük az modellek jósági mutatóit
tartalmazó kimutatást: jobb gomb a TextViewer-re és Show results.
- Egészítsük ki a gráfot további csomópontokkal. A
ClassifierPerformanceEvaluator thresholdData kimenetét irányítsuk egy ModelPerformanceChart
(Visualization) elembe. A J48 döntési fa osztályozó graph kimenetét
pedig kössük egy GraphViewer
(Visulazation) objektumra. Nézzük meg az általuk előállított
kimeneteket.
Kiegészítő feladat: A névtábla problémája
- 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.
- Az adatok itt találhatóak.