Techniki klasyfikacji danych w środowisku Matlab

Transkrypt

Techniki klasyfikacji danych w środowisku Matlab
Techniki klasyfikacji danych w środowisku Matlab
Celem klasyfikacji danych jest zbudowanie modelu klasyfikatora, który w procesie
klasyfikacji przydziela kaŜdej próbce testowej wartość atrybutu klasy w oparciu
o wartości pozostałych atrybutów – deskryptorów. Klasyfikacja jest metodą eksploracji
danych z nadzorem.
Drzewo klasyfikacyjne (decyzyjne) składa się z korzenia oraz gałęzi prowadzących z korzenia
do węzłów. W węzłach zapisywany jest warunek, który dotyczy obserwacji, zaś na samym
dole drzewa znajdują się liście określające klasy.
Algorytmem stosowanym do konstrukcji drzew decyzyjnych jest algorytm zachłanny, który
tworzy drzewo decyzyjne w rekurencyjny sposób techniką „z góry na dół”, w sposób „dziel
i rządź”. Najczęściej stosowanymi algorytmami, są: ID3, C4.5, CART lub CHAID, róŜni je
przede wszystkim przyjęte kryterium podziału – sposobu tworzenia nowych węzłów w
drzewie. Kryterium podziału powinna minimalizować wystąpienia błędnej klasyfikacji próbek
danych.
Analiza dyskryminacyjna polega na klasyfikowaniu danych do określonych klas na podstawie
poznanych danych. Najczęściej stosowaną metodą dyskryminacji jest liniowa funkcja
dyskryminacyjna, która rozdziela dane na zadaną liczbę klas. Podstawowym ograniczeniem
tej metody jest załoŜenie liniowej separowalności klas danych. W przypadku, gdy nie
zdołamy podzielić danych na klasy za pomocą linii prostej stosujemy inne funkcje
dyskryminujące.
Tabela 1. Zbiór danych testowych – gatunki irysów.
Nazwa zbioru, autor Iris, R.A. Fisher
Nazwa pliku
Iris.txt
Liczba klas
3
Liczba próbek
150 (50 na klasę)
Nazwy klas –
Iris Setosa, Iris Versicolour, Iris Virginica
gatunki irysów
Liczba atrybutów
5 (wraz z nazwą klasy)
Długość
Szerokość listka Długość płatka
listka
kielicha [cm]
[cm]
Nazwy atrybutów
kielicha
[cm]
Szerokość płatka
[cm]
Tabela 2. Zbiór danych testowych – miejsca lokalizacji białek.
Protein Localization Sites, Kenta Nakai, Institue of Molecular and
Nazwa zbioru, autor
Cellular Biology, Osaka, University
Nazwa pliku
Ecoli.txt
Liczba klas
8
Liczba próbek
336
Nazwy klas, liczba
cp (cytoplasm)
143
1
próbek z danej klasy
Liczba atrybutów
Nazwy atrybutów
im (inner membrane without signal sequence)
77
pp (perisplasm)
52
imU (inner membrane, uncleavable signal sequence)
35
om (outer membrane)
20
omL (outer membrane lipoprotein)
5
imL (inner membrane lipoprotein)
2
imS (inner membrane, cleavable signal sequence)
2
9 (wraz z nazwą klasy)
Nr probki, mcg, gvh, lip, chg, aac, alm1, alm2, nazwa klasy
Tabela 3. Zbiór danych testowych – rozpoznawanie gatunków win.
Wine recognition data, Institute of Pharmaceutical and Food Analysis
Nazwa zbioru, autor
and Technologies, Via Brigata Salerno, Italy
Nazwa pliku
Wine.txt
Liczba klas
3
Liczba próbek
178
Klasa1 59
Nazwy klas, liczba
Klasa2 71
próbek z danej klasy
Klasa3 48
1) Alcohol
2) Malic acid
3) Ash
4) Alcalinity of ash
5) Magnesium
6) Total phenols
Liczba atrybutów i
7) Flavanoids
nazwy
8) Nonflavanoid phenols
9) Proanthocyanins
10)Color intensity
11)Hue
12)OD280/OD315 of diluted wines
13)Proline
Ćwiczenie I
Zbiór testowy Iris.
a) Wyświetlić informacje statystyczne na temat próbek danych takie jak:
- średnia wartość atrybutu
- wartość maksymalna atrybutu
- wartość minimalna atrybutu
- odchylenie standardowe
b) Wyświetlić próbki złoŜone z pierwszych dwóch atrybutów – długości i szerokości
płatków kielicha - pogrupowane względem nazwy klas, drugi rysunek dla dwóch
pozostałych atrybutów. Opisać rysunki.
Podpowiedź: funkcje gscatter(), xlabel(), ylabel().
2
c) Dokonać klasyfikacji uŜywając róŜnych typów analizy dyskryminacyjnej, wyświetlić
błąd klasyfikacji. Klasyfikacji dokonać trzykrotnie – dla pierwszych dwóch atrybutów,
dwóch kolejnych oraz wszystkich czterech. Dane trenujące i testujące podajemy
identyczne.
Podpowiedź: wywołanie funkcji classify()
[wynik_klasyfikacji, blad_klasyfikacji]=classify (dane_trenujace,
dane_testujace, nazwy_klas, typ_funkcji_dyskryminujacej)
Typy funkcji dyskryminującej:
'linear',
'quadratic',
'diagLinear',
'diagQuadratic',
'mahalanobis'.
d) Dwukrotnie zbudować drzewa klasyfikacyjne zgodnie z danymi wybieranymi do
klasyfikacji w powyŜszych punktach. Obliczyć błąd klasyfikacji. Wyświetlić drzewa.
Dane trenujące i testujące podajemy identyczne.
Podpowiedź: funkcje treefit (), treeval (), treedisp().
Nazwy klas dla drzewa klasyfikacyjnego powinny być zapisane jako łańcuchy
znakowe typu danych cell, dlatego teŜ naleŜy w pierwszej kolejności zmienne w
kolumnie z nazwą klasy zamienić na typ łańcuchowy, a następnie dokonać konwersji
na typ cell. MoŜna tego uniknąć podając typ drzewa w metodzie
treefit('method','classification'), ale nie poznamy błędu klasyfikacji.
Konwersja danych rzeczywistoliczbowych opisujących nazwy klas na dane typu cell:
temp=java_array('java.lang.String', liczba_probek); %utworzenie
macierzy danych typu łańcuchowego
temp(1)=java.lang.String(num2str(kolumna_nazw_klas(1))); %przykład
zamiany pierwszej nazwy klasy o typie rzeczywistoliczbowym na element
tablicy typu łańcuchowego
nazwa_klasy(1)=cell(temp(1)); %nazwa klasy jest juŜ zmienną typu cell
Pozostałe konwersje typów dla pozostałych próbek naleŜy przeprowadzić iteracyjnie.
Aby macierz z nazwami klasy była typu kolumnowego jak pozostałe macierze
atrybutów naleŜy ją transponować.
nazwa_klasy= nazwa_klasy’;
Wywołanie funkcji treefit(), utworzenie drzewa klasyfikacyjnego:
drzewo=treefit(zbior_trenujacy,nazwy_klas_jako_typ_cell);
Wywołanie funkcji treeval(), wyświetlenie wyników klasyfikacji:
klasyfikacja = treeval(drzewo,zbior_testowy);
Obliczenie błędu klasyfikacji rozpoczynamy od pobrania wartości nazw z drzewa
klasyfikacyjnego i następnie porównujemy ciągi łańcuchów nazw.
klasy = drzewo.classname(klasyfikacja);
blad_klasyfikacji = ~strcmp(klasy,nazwa_klasy);
blad_klasyfikacji_w_procentach =sum(blad_klasyfikacji) /
liczba_probek
e) Porównać błędy klasyfikacji klasyfikatorów.
3
Ćwiczenie II
Wykonać porównanie klasyfikatorów analogiczne jak w ćwiczeniu pierwszym dla danych
zapisanych w ecoli.txt oraz wine.txt. Dane tworzące klasyfikator i dane trenujące powinny
być identyczne (przypadek, gdy nie posiadamy próbek testujących a zamierzamy testować
zbudowane klasyfikatory za pomocą danych uczących). Dane przetwarzane to w
pierwszej kolejności wszystkie atrybuty a w drugim podejściu klasyfikacji 2 atrybuty
wybrane przez uŜytkownika.
Podpowiedź. Dane w pliku ecoli.txt zapisane w kolumnie pierwszej oznaczają numerację
próbek i naleŜy je pominąć.
4