Podręcznik
2. Sieci wektorów nośnych SVM
2.6. Program komputerowy uczenia sieci SVM
Wykorzystując możliwości jakie stwarza Matlab opracowany został pakiet programów SVM z interfejsem graficznym pozwalający na symulację sieci SVM, zarówno w trybie uczenia jak i odtwarzania (rys. 5.8) [46].

Wywołanie programu odbywa się po napisaniu nazwy pliku głównego SVM_win w oknie komend Matlaba. Przed rozpoczęciem procesu uczenia użytkownik musi wczytać dane uczące learning data i ewentualnie testujące testing data (można wykorzystać przycisk "Load data"). Składają się na nie zbiory wektorów (pola xlearn, xtest) przygotowane w postaci macierzy o tylu wierszach ile jest par danych i kolumnach odpowiadającym poszczególnym zmiennym tworzącym wektor
(wektory ułożone poziomo) oraz zbiory wartości zadanych
tworzące wektor kolumnowy, określający wielkości stowarzyszone z wektorami wejściowymi
(pola dlearn i dtest). Przy klasyfikacji danych należących do wielu klas: 1, 2, 3, ..., M wektor wartości zadanych
jest wektorem kolumnowym, w którym poszczególne pozycje oznaczają numer przypisany klasie (kolejne liczby naturalne). W zadaniu regresji elementami wektora
są wartości rzeczywiste (zadane)
stowarzyszone z
. Po zadaniu wartości uczących należy wybrać algorytm uczący sieci klasyfikacyjnej (SVC - Support Vector Classification) bądź regresyjnej (SVR - Support vector Regression). Służy do tego celu przycisk wyboru w polu Algorithm. W przypadku zadania klasyfikacji jest do wyboru osiem algorytmów multi-klasowych. W przypadku regresji dostępne są: algorytm BSVR, nu-SVR, epsilon-SVR oraz MYSVR. W obu przypadkach zalecany jest algorytm BSVM (klasyfikacja) lub BSVR (regresja). W przypadku rozpoznawania wielu klas użytkownik może wybrać między różnymi odmianami podejść do problemu w polu Multiclass. Są to: one-against-one, one-against-all, internal algorithm, (wieloklasowość wbudowana w algorytmie rozwiązania).
Projektując sieć należy zdecydować o typie funkcji jądra (liniowy, wielomianowy, radialny gaussowski oraz sigmoidalny (opcje wyboru w polu Kernel functions). Zalecane jest uniwersalne jądro typu radialnego. W zależności od wybranego typu jądra pojawią się czynne pola wyboru odpowiadających im hiperparametrów (stopień wielomianu , współczynnik funkcji gaussowskiej
, współczynnik
dla funkcji wielomianowej jądra). W przypadku regresji konieczne jest również podanie wartości progu
. Niezależnie od rodzaju zadania (klasyfikacja bądź regresja) należy podać wartość współczynnika regularyzacji
(pole C cost) decydującego o stopniu złożoności wytrenowanej sieci SVM. Zwykle jest to wartość dużo większa od jedności. Naciśnięcie przycisku Learning SVM uruchamia proces uczenia, w wyniku którego program wyznacza wszystkie parametry adaptacyjne sieci (wartości wag, liczbę wektorów podtrzymujących, centra funkcji radialnych lub współczynniki funkcji wielomianowych). Jednocześnie po zakończeniu uczenia sieć automatycznie dokonuje odtworzenia sygnałów wyjściowych dla danych uczących wysyłając wynik do przestrzeni roboczej Matlaba (wektor
) oraz wypisując w odpowiednim polu menu głównego liczbę błędów klasyfikacji a także ich procentową wartość dla danych uczących i testujących.
Program SVM jest używany w laboratorium sieci neuronowych Zakładu Elektrotechniki Teoretycznej i Informatyki Stosowanej Politechniki Warszawskiej, między innymi do klasyfikacji tekstur na podstawie wczytanych obrazów tych tekstur. Temu celowi służy przycisk Selection of texture uruchamiający dodatkowe menu wyboru tekstur i generacji ich cech według różnych algorytmów przetwarzania (algorytm Markova, Gabora, GLCM Haralicka, Unsera oraz fraktalny). Obraz tekstury jest dzielony na ramki o wymiarach
, przy czym połowa ramek jest używana do uczenia a druga do testowania. Można dokonać losowego przypisania ramek do obu kategorii używając przycisku Random data selection