PDF pagePrint page

Zadanie klasyfikacji to najpowszechniejsze z zadań uczenia maszynowego. Polega ono na przypisaniu klasy do każdej z nowych instancji (obiektów). Rozróżniamy klasyfikację binarną, gdzie do wyboru mamy dwie klasy oraz klasyfikację wieloklasową. Przykładem klasyfikacji binarnej może być określanie występowania pewnej choroby. Proces polega na przypisaniu do danych medycznych klasy ‘chory’, bądź ‘zdrowy’. Zastosowaniem klasyfikacji wieloklasowej może być rozpoznawanie liter, gdzie instancją jest opisany przez atrybuty (np. wartości pikseli) obrazek z literą. Klasą dla tak rozpoznanych liter jest po prostu znak reprezentujący tę literę.

Rozwiązanie zadanie klasyfikacji umożliwia szereg technik i algorytmów uczących. Algorytmy takie nazywamy klasyfikatorami. Wyróżniamy klasyfikatory oparte o: drzewa decyzyjne (J48, LMT, M5P, DecisionStump), regresje liniową, regresje logistyczną, maszynę wektorów wspierających (SVM, SMO), generację reguł (JRipper, M5Rules, OneR, PART) oraz metody łączone (AdaBoostM1, Bagging, LogitBoost, MultiBoostAB, Stacking, CostSensitiveClassifier).

W przykładzie użyjemy dobrze znany nam zbiór danych iris. Stworzymy model klasyfikujący gatunki irysów. Do budowy modelu wykorzystamy algorytm uczący J48. Wynikiem działania algorytmu jest drzewo decyzyjne:

Następnie dokonamy ewaluacji stworzonego modelu:

Według powyższych danych udało nam się poprawnie zaklasyfikować 98% instancji. Niestety wykonana przed chwilą ewaluacja wykorzystała ten sam zbiór do testowania co do uczenia. Postępowanie takie może prowadzić do wielu błędów i nie daje nam obiektywnej informacji o tym jak model będzie sobie radzić na nowych danych uczących. Dlatego też teraz wykorzystamy ewaluację typu “ten fold cross validation”:

Jak widać teraz poprawnie klasyfikujemy 96% instancji. Mamy przy tym większe prawdopodobieństwo, że z tak dobrym wynikiem nasz model będzie sobie radzić z klasyfikacją nowych instancji.