Politechnika Łódzka 2

Politechnika Łódzka

Wydział Fizyki Technicznej, Informatyki i Matematyki Stosowanej

Kierunek: Matematyka

Specjalność: Analiza Danych w Biznesie i Logistyce

Projekt z przedmiotu

Techniki Analizy Danych

Poprawność klasyfikacji danych w oparciu o różne drzewa decyzyjne

Anna Ociepa

Łukasz Cichoszewski

Łódź, styczeń 2014

Spis treści:

1. Wprowadzenie

2. Wybrane rodzaje drzew decyzyjnych

3. Tworzenie projektu w Weka KnowledgeFlow

4. Projekt w programie NetBeans w języku Java

  1. Wprowadzenie

Celem naszego projektu jest porównanie czterech drzew decyzyjnych:

Dokonamy tego wykorzystując środowisko Weka KnowledgeFlow oraz program NetBeans, w którym zaprezentujemy kod napisany w języku Java.

W naszym projekcie użyjemy danych, które dotyczą cech różnych odmian papryk. (Tutaj trochę informacji na ten temat, tzn. skąd pochodzą dane, z jakich lat, jakie są atrybuty, który będzie klasowy, ile jest obserwacji, co z nimi będziemy robić, jak dzielimy na zbiór testowy i uczący)

Dane te znajdują się w pliku „papryka - pomiary.arff”.

  1. Wybrane rodzaje drzew decyzyjnych

Zaczniemy od krótkich informacji na temat klasyfikatorów, z których będziemy korzystać.

“Pruning” (cięcie) to technika, która redukuje rozmiar drzewa decyzyjnego, poprzez usuwanie sekcji drzewa, które są mało istotne przy klasyfikacji instancji. Kolejnym celem „cięcia” jest zmniejszona złożoność końcowego klasyfikatora oraz zwiększona dokładność predykcyjna poprzez redukcję przeuczenia i usunięcie części klasyfikatora, które mogą być oparte na szumnych lub błędnych danych.

Algorytm C 4.5 dzieli pierwotny zestaw danych względem każdej ze zmiennych. W ten sposób powstaje tyle wariantów podziału, ile w zestawie jest zmiennych objaśniających. Dla każdego podziału liczona jest wartość metryki information gain (zysk informacyjny), która zdefiniowana jest jako przyrost entropii (funkcja przyrostu informacji) uzyskanych podzbiorów w stosunku do zbioru pierwotnego w każdym z podzbiorów. Zmienna o najwyższym współczynniku information gain staje się pierwszym węzłem drzewa. Następnie dla wszystkich podzbiorów powtarza się tę operację aż do wyczerpania wszystkich instancji.

  1. Tworzenie projektu w Weka KnowledgeFlow

W tej części zajmiemy się utworzeniem projektu w środowisku Weka KnowledgeFlow. W tym celu wykonujemy następujące kroki:

  1. Wczytanie danych z pliku

Z folderu DataSources wybieramy i umieszczamy w przestrzeni roboczej ArffLoader, dzięki czemu będziemy mogli korzystać z pliku o rozszerzeniu .arff . Następnie wczytujemy nasze dane, które znajdują się w pliku „papryka - pomiary.arff”. Aby obejrzeć graficzne przestawienie danych, z folderu Visualization wybieramy DataVisualizer i przesyłamy dataSet z ArffLoader do DataVisualizer.

  1. Wybór atrybutu klasowego

Aby wybrać atrybut klasowy dla naszych danych, z folderu Visualization wybieramy ClassAssigner. Dalej przesyłamy dataSet z ArffLoader do ClassAssigner. Ustawiamy ostatni atrybut jako klasowy, zatem w polu classColumn wpisujemy „last”.

  1. Podział danych na zbiór testowy i uczący

Zrobimy to poprzez podział procentowy. Z folderu Evaluation wybieramy TrainTestSplitMaker. Przesyłamy dataSet z CrossAssigner do TrainTestSplitMaker, a następnie w ustawieniach TrainTestSplitMaker w polu trainPercent wpisujemy jaki procent danych ma być zbiorem uczącym, w naszym przypadku 80.0.

Aby zobaczyć w jaki sposób dane zostały podzielone za pomocą TrainTestSplitMaker trzeba z folderu Visualization wybrać dwukrotnie TextViewer do jednego przesłać trainingSet, a do drugiego testSet.

  1. Wybór klasyfikatorów

Sklasyfikujemy teraz dane za pomocą czterech różnych klasyfikatorów (wymienionych wcześniej drzew decyzyjnych):

Z folderu Classifiers wybieramy podfolder trees, a następnie kolejne drzewa. Z TrainTestSplitMaker przesyłamy trainingSet i testSet do każdego z nich.

  1. Ocena klasyfikacji

Aby ocenić poprawność klasyfikacji dla każdego z klasyfikatorów, z folderu Evaluation wybieramy ClassifierPerrformanceEvaluator i z każdego drzewa decyzyjnego przesyłamy do niego batchClasifier.

  1. Wyświetlanie wyniku ewaluacji

Aby wyświetlić efekty klasyfikacji w formie tekstowej z folderu Visualization musimy wybrać TextViewer i przesłać do niego text z ClassifierPerrformanceEvaluator

Aby wyświetlić efekty klasyfikacji w formie graficznej z folderu Visualization musimy wybrać ModelPerformanceChart i przesłać do niego thresholdData z ClassifierPerrformanceEvaluator.

Ostateczny projekt wygląda następująco:

  1. Podsumowanie i porównanie otrzymanych wyników

Aby uruchomić schemat wystarczy kliknąć strzałkę (Run this flow) w lewym górnym rogu. Możemy teraz zobaczyć wyniki ewaluacji.

Klikając prawym przyciskiem myszy na TextViewer wybieramy Show results. Dla każdego z drzew wyświetlają nam się wyniki:

Popatrzmy teraz na macierz Confusion Matrix. W wierszach znajdują się wartości prognozowane, w kolumnach zaś empiryczne. Na uwagę zasługują wartości elementów na głównej przekątnej, które znacznie przewyższają wartości pozostałych komórek, oznaczających poprawnie sklasyfikowane instancje, co przemawia na rzecz dużej trafności drzewa decyzyjnego.

Spójrzmy teraz na porównanie ilości poprawnie i niepoprawnie sklasyfikowanych instancji dla każdego drzewa decyzyjnego:

J48 LMT NBTree RandomForest

Correctly

Classified

Instances

327 81.75 % 335 83.75 % 320 80 % 351 87.75 %

Incorrectly

Classified

Instances

73 18.25 % 65 16.25 % 80 20 % 49 12.25 %

Odczytując wyniki z powyższej tabeli możemy wnioskować, że najlepsze jest użycie drzewa RandomForest, gdyż w przypadku tego klasyfikatora otrzymujemy największą ilość poprawnie sklasyfikowanych instancji.

  1. Graficzne przedstawienie wyników

Możemy również obejrzeć graficzne przedstawienie powyższych wyników. W tym celu musimy kliknąć prawym przyciskiem myszy na ModelPerformanceChart i wybrać Show chart. Wyświetla nam się:

Dobrą jakość wygenerowanego drzewa potwierdza krzywa ROC (Receiver Operating Characteristic).Warto zwrócić uwagę na jej pożądany wygląd – wyraźna wklęsłość, która świadczy o dużej trafności klasyfikacji dla każdego z klasyfikatorów.

  1. Projekt w programie NetBeans w języku Java

Teraz wykorzystamy program NetBeans i napiszemy kod w języku Java odpowiadający wykonanemu w programie Weka schematowi.

Rozpoczniemy od stworzenia nowego projektu o nazwie Projekt.java i wgraniu biblioteki weka.jar.

Napisany kod ma postać:

Możemy zauważyć, że otrzymane wyniki są takie same jak w części, gdzie tworzyliśmy projekt w programie Weka.


Wyszukiwarka

Podobne podstrony:
Tabelka pomiarowa do 21, BIOTECHNOLOGIA POLITECHNIKA ŁÓDZKA, CHEMIA FIZYCZNA
1.10spis treci do cigi z metro, POLITECHNIKA (Łódzka), Metrologia, 1semestr
Prawo inżynierskie i ochrona własności intelektualnych. Wykład 3, Studia, Politechnika Łódzka - Pend
obliczenia i wnioski, BIOTECHNOLOGIA POLITECHNIKA ŁÓDZKA, CHEMIA FIZYCZNA
Harmonogram 2015 TECHN, Politechnika Łódzka, Technologia Żywności i Żywienie Czlowieka, Semestr I, M
sprawozdanie z soku, POLITECHNIKA ŁÓDZKA, Technologia Żywności i Żywienia Człowieka, semestr 6, Ogól
str tytul, POLITECHNIKA ŁÓDZKA, BIOCHEMIA
enzymologia 11-15, BIOTECHNOLOGIA POLITECHNIKA ŁÓDZKA, ENZYMOLOGIA
tabeleNNN(1), Laborki Fizyka Politechnika Łódzka, W5
Politechnika Łódzka Sprawozdanie nrE Chemia Fizyczna
W2(1), Politechnika Łódzka, fizyka-sprawozdania
konsp15, BIOTECHNOLOGIA POLITECHNIKA ŁÓDZKA, CHEMIA FIZYCZNA
konspekt 53, BIOTECHNOLOGIA POLITECHNIKA ŁÓDZKA, CHEMIA FIZYCZNA
wykład4 Systemowe zarządanie wg. PN-18001, BIOTECHNOLOGIA POLITECHNIKA ŁÓDZKA, ZARZĄDZANIE BEZPIECZE
Laborki Fizyka, Laborki Fizyka Politechnika Łódzka, M6B,A

więcej podobnych podstron