Weka Weka - úvod • systém pro analýzu dat a prediktivní modelování • University of Waikato, Nový Zéland • 1993 TCL/TK, C, Makefiles • 1997 rozhodnutí přejít na čistou Javu • integrována – RapidMiner – Petaho (systém business intelligence) • GNU General Public License Ovládání • grafické rozhraní – Explorer – jednotlivé činnosti na kliknutí – Experimenter – systematické srovnání – Knowledge flow – činnosti jako tok • příkazový řádek • Java API Ukázka – grafické rozhraní ... ... příkazový řádek ... java –classpath weka.jar weka.classifiers.bayes.NaiveBayes –t data/iris.arff ... Java API 1. Attribute-Relation File Format (ARFF) 2. Předzpracování dat Histogramy užitečný číselný atribut Filtry • Remove –V –R 1-5,8 (V = inverze, zachovej pouze tyto atributy) • Discretize – některé algoritmy nepracují s čísly – urychlení – někdy i zvýšení přesnosti • převzorkování • doplnění chybějících atributů, odstranění chybějících hodnot • Obfuscator • Principal Component Analysis, Partial Least Squares • AttributeSelection StringToWordVector Klasifikace – algoritmy 1 • NaiveBayes, BayesNet, Averaged One-Dependence Estimators (AODE) • SMO, SMOreg, LibSVM StringKernel @attribute name string @attribute class {female, male} @data Midori,female Koichi,male • 291 ženských a 385 mužských jmen (odstraněno 13 univerzálních jmen) • první spuštění: Q[2] = 63 % Další SVM parametry a jejich optimalizace • meta.CVParameterSelection –P "C 0.5 50000.0 5.0" ... Cross-validation Parameter: '-C' ranged from 0.5 to 50000.0 with 5.0 steps Classifier Options: -C 12500.375 ... • bez predikce spolehlivosti TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.887 0.192 0.777 0.887 0.828 0.847 female 0.808 0.113 0.904 0.808 0.853 0.847 male Weighted Avg. 0.842 0.147 0.849 0.842 0.842 0.847 • predikce spolehlivosti logistickou regresí TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.835 0.148 0.81 0.835 0.822 0.921 female 0.852 0.165 0.872 0.852 0.862 0.921 male Weighted Avg. 0.845 0.158 0.846 0.845 0.845 0.921 Predikovaná spolehlivost a ROC křivka Klasifikace – algoritmy 2 • MultilayerPerceptron – validační množina – pomalé • LinearRegression • PLSClassifier – Partial Least Squares regression • stromy – J48, RandomForest, ... • meta – boosting, bagging, ... – ClassifivationViaRegression – AttributeSelectedClassifier – CostSensitiveClassifier Vážení chyb TP Rate 0.81 0.915 • meta.CostSensitiveClassifier % Rows Columns 2 2 % Matrix elements 0 2 1 0 • cena za špatně klasifikovaný P je 2x větší než za N Výběr atributů Metoda hodnocení • atributů – ChiSquaredAttributeEval – SVMAttributeEval • podmnožiny – CfsSubsetEval – WrapperSubsetEval, ClassifierSubsetEval Metoda prohledávání • pro atributy – Ranker • pro podmnožiny – BestFirst – GeneticSearch Redukce dimenzí filtrem • Principal Component Analysis, Partial Least Squares Experimenter Knowledge Flow Zdroje Spuštění Weky • ssh –X lethe • module add java • vytvořte si pracovní adresář (mkdir , cd ) • wget loschmidt.chemi.muni.cz/~tonda/w.zip • unzip w.zip • java –Xmx256m –jar weka.jar Úkol 1 Explorer – J48 a SMO • spusťte 2x Weku a Explorer • v obou – otevřete spambase.arff a běžte do tabu Classify – v Test options, More options nastavte Output predictions na Plain text • v prvním – vyberte klasifikátor trees.J48 – klikněte do políčka vpravo od tlačítka Choose a nastavte • useLaplace: True – spusťte 10-ti násobné křížové ověření • v druhém – vyberte klasifikátor functions.SMO – klikněte do políčka vpravo od tlačítka Choose a nastavte • buildLogisticModels: True • numFolds: 10 – spusťte 10-ti násobné křížové ověření • Srovnejte rychlost a přesnost obou algoritmů. Odhadněte užitečnost predikce důvěryhodnosti výsledku (=== Predictions on test data ===, sloupec prediction). Úkol 2 Knoledge Flow - ROC křivky • spusťte Knowledge Flow • otevřete spam_roc.kf • nastavte ArffLoader na spambase.arff • klikněte pravým tlačítkem na ArffLoader, Start loading • srovnejte ROC křivky NaiveBayese a BayesNetu (klik pravým tlačítkem na horní Model Performance Chart, Show chart) • srovnejte ROC křivky BayesNetu a AODE. • Po kliknutí na bod křivky se zobrazí čísla. Kolik procent spamu identifikujeme, pokud jsme ochotní tolerovat, že ve spamovém koši skončí 4 % hamu (spam = class 1, osa X: FPR = FP/N, osa Y: TPR = TP / P)? Úkol 3 Experimenter - srovnání klasifikátorů • spusťe Experimenter • klikněte na tlačítko New • Result destination: nastavte cestu a zvolte jméno nového ARFF souboru • přidejte dataset spam_discretized.arff • přidejte algoritmy bayes.AODE, tree.J48, tree.RandomForest • spusťte výpočet v tabu Run • jakmile skončí, přejďěte do tabu Analyse • klikněte na Experiment a Perform Test • Je přesnost některé z metod na této sadě statisticky významně lepší na hladině 0.05? Jak je to s Area_under_ROC?