Loading [MathJax]/jax/output/HTML-CSS/jax.js

Optymalny klasyfikator statystyczny

Zadanie klasyfikacji nadzorowanej (por. [Stapor2005], [Stapor2011]) można rozpatrywać w kategoriach probabilistycznych (por. [Greblicki1974], [Berger1985]). Wówczas przestrzeń obserwacji to zbiór wszystkich możliwych wartości wektora cech, natomiast zbiór wszystkich numerów klas I={1,2,,L} jest przestrzenią decyzyjną. Prawdopodobieństwa pojawiania się obiektów z poszczególnych klas to prawdopodobieństwa a priori P(J=j)=pj dla j1,,L. Jest to rozkład dyskretnej zmiennej losowej J. Wektor losowy cech X dla każdego j{1,,k} ma natomiast rozkład prawdopodobieństwa wyrażony gęstością warunkową cech w klasie daną wzorem

f(x|j)=fj(x) dla xRd,jI

Gęstość bezwarunkowa zmiennej X wyraża się wzorem

f(x)=jJpjfj(x)

Przyjmujemy, że f(x)>0 dla każdego xRd. Obliczmy teraz prawdopodobieństwo warunkowe, że obiekt, któremu odpowiada wektor x należy do klasy j tzn.:

P(J=j|X=x) dla j{1,,L},xR

Stosując wzór Bayesa otrzymujemy

P(J=j|X=x)=P(X=X|J=j)P(J=j)j{1,L}P(X=x|J=j)P(J=j).

Przyjmując oznaczenia

pj=P(J=j)pj(x)=P(J=j|X=x)f(x)=j{1,L}P(X=x|J=j)P(J=j)

otrzymujemy

pj(x)=pjfj(x)f(x)

Prawdopodobieństwo pj(x) nazywamy prawdopodobieństwem a posteriori klasy j. Optymalny klasyfikator statystyczny (klasyfikator Bayesa) obiekt reprezentowany przez wektor cech x przyporządkowuje do tej klasy dla której wartość prawdopodobieństwa a posteriori jest największa. Ponieważ dla dowolnego wektora cech x wartość f(x) jest stała a więc reguła decyzyjna klasyfikatora Bayesa jest następująca

ϕBayes(x)=i gdy pi(x)fi(x)=max1jLpjfj(x)

Ponieważ logarytm jest funkcją rosnącą a więc powyższą regułę można również zapisać w równoważnej postaci

ϕBayes(x)=i gdy lnpi(x)fi(x)=max1jLlnpjfj(x)

Często spotykamy się z przypadkiem kiedy rozkłady wektorów cech pochodzą z wielowymiarowego rozkładu normalnego. Mamy wówczas do czynienia ze szczególnym przypadkiem klasyfikatora Bayesa czyli klasyfikatorem gaussowskim. Funkcje gęstości d-wymiarowego rozkładu normalnego dane są wzorami

(1)fj(x)=1(2π)d/2|Σj|1/2exp(12(xmj)TΣ1j(xmj))

gdzie x jest d-wymiarowym wektorem cech, mj jest d-wymiarowym wektorem wartości średnich, Σj macierzą kowariancji w klasie j. Po podstawieniu (1) uzyskujemy ogólny wzór na funkcje dyskryminacyjne klasyfikatora gaussowskiego

gj(x)=pj(2π)d/2|Σj|1/2exp(12(xmj)TΣ1j(xmj))

Po zlogarytmowaniu otrzymujemy

ln(gj(x))=ln(pj(2π)d/2|Σj|1/2exp(12(xmj)TΣ1j(xmj)))==lnpj+ln(2π)d/2)+ln(|Σj|1/2)12(xmj)TΣ1j(xmj)==lnpjd2ln2π+12ln|Σj|12(xmj)TΣ1j(xmj).

Pomijając stałą d2ln2π otrzymujemy funkcje klasyfikujące dla klasyfikatora gaussowskiego

(2)gj(x)=lnpj+12ln|Σj|12(xmj)TΣ1j(xmj) dla j{1,,L}

Z powyższego wzoru wynika, że w ogólnym przypadku funkcja klasyfikująca jest funkcją kwadratową, co z kolei oznacza, że powierzchnie rozdzielające w przestrzeni cech są hiperpłaszczyznami drugiego stopnia a ich typ zależy od parametrów rozkładu cech. W przypadku dwuwymiarowej przestrzeni cech mamy do czynienia z krzywymi płaskimi drugiego stopnia.

Załóżmy, że macierze kowariancji we wszystkich klasach są takie same tzn Σj=Σ dla każdego j{1,,l}. Wówczas po usunięciu jednakowego dla wszystkich klas czynnika 12ln|Σ| otrzymujemy następującą funkcję dyskryminacyjną

gj(x)=lnpj12(xmj)TΣ1j(xmj) dla j{1,,L}.

Można pokazać, że po dokonaniu w powyższym wzorze szeregu mnożeń a następnie usunięciu stałego dla wszystkich klas czynnika xTΣ1x uzyskujemy uproszczoną postać wzoru funkcji dyskryminacyjnych

gj(x)=xTΣ1mj12mTjΣ1jmj+ln(pj) dla j{1,,L}

Wówczas funkcje dyskryminacyjne są funkcjami liniowymi, co z kolei oznacza, że powierzchnie rozdzielające w przestrzeni cech są hiperpłaszczyznami.

Załóżmy dodatkowo, że cechy w poszczególnych klasach są statystycznie niezależne i mają tę samą wariancję σ2 tzn

(3)Σi=σ2I

gdzie I jest macierzą jednostkową stopnia L. Wówczas po podstawieniu (3) do wzoru (2) uzyskujemy

gj(x)=12σ2(xmj)T(xmj)+ln(pj) dla j{1,,L}

Stąd po wymnożeniu składnika (xmj)T(xmj) i usunięciu wspólnego dla wszystkich klas czynnika xTx otrzymujemy następujący wzór na funkcję dyskryminacyjną

gj(x)=12σ2(2mTjx+mTjmj)+ln(pj)=wTj+w0

gdzie wj=1σ2mj, w0=12σ2mTjmj+lnpj. Również w tym przypadku funkcje dyskryminacyjne są funkcjami liniowymi z czego z kolei wynika, że powierzchnie rozdzielające w przestrzeni cech są hiperpłaszczyznami. Jeśli teraz dodatkowo założymy, że prawdopodobieństwa a priori poszczególnych klas są jednakowe to uzyskamy następująca postać funkcji dyskryminacyjnej

gj(x)=12σ2(2mTjx+mTjmj)

Klasyfikator mający funkcje dyskryminacyjne powyższej postaci nazywamy klasyfikatorem minimalno-odległościowym.

Optymalna klasyfikacja bayesowska wymaga znajomości rozkładu zmiennej losowej J i warunkowej gęstości rozkładu prawdopodobieństwa cech w klasach. W praktycznych zadaniach klasyfikacji tej wiedzy na ogół nie mamy. Spotykamy się z sytuacjami gdzie znana jest postać rozkładu lecz nie są znane jego parametry lub nieznana jest nawet postać rozkładu prawdopodobieństwa. W przypadku gdy znana postać warunkowego rozkładu cech w klasach natomiast nie są znane jego parametry wówczas brakującą wiedzę rekompensujemy informacjami zawartymi w zbiorze uczącym. Zadanie polega na estymacji brakujących parametrów i wstawieniu uzyskanych wartości do funkcji klasyfikujących optymalnego algorytmu Bayesa. Algorytm uzyskany w ten sposób nazywamy Parametrycznym klasyfikatorem Bayesa. Prawdopodobieństwa a priori klas przybliżamy częstościami występowania poszczególnych klas w zbiorze uczącym tzn

pj=NjN

gdzie N to liczebność całego zbioru uczącego, natomiast Nj to liczebność j-tej klasy. Estymacja parametrów gęstości warunkowych cech w klasach zależy od samej postaci tych gęstości i może odbywać się na przykład metodą największej wiarogodności (por. [Gren1987]).

Przykład 4

Rozważmy zbiór danych Iris. Jest to wielowymiarowy zbiór danych na temat irisów wprowadzony w 1936r. przez Rolanda Fishera. Zbiór ten zawiera 150 obiektów z trzech różnych gatunków irysów: setosa, versicolor, virginica. Każdy z obiektów jest charakteryzowany przez cztery cechy: długość (w cm.) listka kielicha kwiatowego, szerokość (w cm) listka kielicha kwiatowego, długość (w cm) płatka kwiatu, szerokość (w cm) płatka kwiatu. Zbiór ten dzielimy, w sposób losowy na dwie części: uczącą i testową w stosunku 70:30. Następnie przeprowadzamy na zbiorze uczącym proces uczenia klasyfikatora Bayesa. Sprawność klasyfikatora to prawie 98%. Jedna próbka ze zbioru testowego została błędnie zaklasyfikowana. Poniżej prezentujemy skrypt w języku python realizujący powyższą procedurę.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
from sklearn.cross_validation import train_test_split

#importujemy zbiór danych
iris = datasets.load_iris()

gnb = GaussianNB()

#Zbiór obiektów
X = iris.data

#Wektor poprawnej klasyfikacji obiektów
y = iris.target

y=np.array(y)

#Dzielimy losowo zbiór na dwie części
train, test, train_targets, test_targets = train_test_split(X, y,
                                 test_size=0.30, random_state=42)

#Uczymy klasyfikator
clf = gnb.fit(train, train_targets)

#Testujemy
Z = clf.predict(test)
Następna część - Klasyfikator minimalno-odległościowy