Opracowaliśmy prosty interfejs graficzny do naszej implementacji algorytmu SVM, nazwany SVM Classifier. Interfejs ten pozwala początkującym użytkownikom na pobranie oprogramowania do lokalnej instalacji i łatwe zastosowanie zaawansowanego algorytmu uczenia maszynowego do swoich danych. Zaimplementowaliśmy publicznie dostępną aplikację, która pozwala użytkownikom SVM na przeprowadzanie treningu, klasyfikacji i predykcji SVM. W celu uzyskania szczegółowych informacji na temat korzystania z oprogramowania, przykładowych zbiorów danych i wyjaśnień dotyczących podstawowych algorytmów, odsyłamy czytelników na stronę internetową i do wymienionych tam źródeł. Użytkownicy SVM mogą być również zainteresowani kilkoma innymi licencjonowanymi implementacjami SVM, które zostały opisane wcześniej, w tym LIBSVM .
Użyliśmy algorytmów SVM zaimplementowanych przez zespół Libsvm jako rdzenia. W celu maksymalizacji kompatybilności międzyplatformowej SVM Classifier został zaimplementowany w języku java przy użyciu standardowych bibliotek swing (Rysunek 1).
Jako narzędzia do budowania wykorzystywane są open source, wieloplatformowy Apache Ant oraz darmowa edycja Borland JBuilder 2005 Foundation. Chociaż SVM Classifier został stworzony na WinXP OS, został pomyślnie przetestowany na Linuksie i innych platformach Windows, i będzie działał na Mac OS9 z rozszerzeniem Swing. Użytkownicy są w stanie uruchomić SVM Classifier na każdym komputerze z java 1.4 runtime lub wyższą wersją.
Aplikacja posiada dwie ramki, ramkę klasyfikacji i ramkę predykcji. W obu ramkach dane mogą być importowane w formacie „Labeled” lub „Delimited” (Rysunek 2 i Rysunek 3).
W ramce klasyfikacji użytkownik utworzy model ze zbioru danych treningowych do klasyfikacji (C-SVC, nu-SVC), regresji (epsilon-SVR, nu-SVR) i estymacji rozkładu.
W tej ramce użytkownik ma możliwość zaimportowania zbioru danych treningowych do aplikacji, wybrania ścieżki do zapisania pliku modelu, wybrania odpowiedniego typu SVM i jądra oraz utworzenia modelu dla zbioru danych. Plik z modelem może być później wykorzystany do predykcji. Istnieje również możliwość wyboru walidacji krzyżowej. Technika walidacji krzyżowej (CV) jest używana do oszacowania dokładności każdej kombinacji parametrów w określonym zakresie i pomaga nam zdecydować o najlepszych parametrach dla problemu klasyfikacji.
W predykcji model zostanie zastosowany do danych testowych, aby przewidzieć klasyfikację nieznanych danych. Udostępniliśmy również narzędzie do przeglądania danych dwuwymiarowych, które jest dostępne z paska menu widoku (Rysunek 4).
Typy jąder
K(x i , x j ) = Φ(x i )TΦ(x j ) nazywamy funkcją jądra. Tutaj wektory treningowe x i są mapowane do wyższej (prawdopodobnie nieskończonej) przestrzeni wymiarowej przez funkcję Φ. Istnieją następujące cztery podstawowe jądra: liniowe, wielomianowe, radialna funkcja podstawowa (RBF) i sigmoidalne:
-
Liniowe: K(x i , x j ) = x i Tx j
-
Polynomialne: Jądro wielomianowe stopnia d ma postać
K(x i , x j ) = (x i , x j )d
-
RBF: Jądro gaussowskie, znane również jako radialna funkcja bazowa, ma postać
Gdzie σ oznacza szerokość okna
-
Sigmoida: Jądro sigmoidalne ma postać
K(x i , x j ) = tanh(k(x i x j ) + ϑ)
Gdy jądro sigmoidalne jest używane z SVM można ją traktować jako dwuwarstwową sieć neuronową.
Typy SVM
1. C-SVC: C-Support Vector Classification (Binary Case)
Dany zbiór treningowy par instancja-etykieta (x i , y i ), i = 1,…., l gdzie x i ∈ Rn i y ∈ {1, -1}l, ← maszyny wektorów podporowych (SVM) wymagają rozwiązania następującego problemu optymalizacyjnego:
SVM znajduje liniową hiperpłaszczyznę separującą z maksymalnym marginesem w tej wielowymiarowej przestrzeni. C > 0 jest parametrem kary składnika błędu . Funkcją decyzyjną jest:
2. nu-SVC: ν-Support Vector Classification (Binary Case)
Parametr ν ∈ (0, 1) jest górnym ograniczeniem frakcji błędów szkolenia i dolnym ograniczeniem frakcji wektorów wsparcia . Biorąc pod uwagę wektory szkoleniowe x i ∈ Rn, i = 1,…,l, w dwóch klasach, oraz wektor y ∈ Rls taki, że y i ∈ {1, -1}, rozważaną postacią pierwotną jest:
A funkcja decyzyjna to:
3. epsilon-SVR: ε-Support Vector Regression (ε-SVR)
Jednym z rozszerzeń SVM jest to dla zadania regresji. Problem regresji jest dany zawsze, gdy Y = ℝ dla zbioru danych treningowych Z = {(x i , y i ) ∈ X × Y | i = 1,…,M}, a naszym zainteresowaniem jest znalezienie funkcji postaci f: X → RD. Sformułowanie pierwotne dla SVR jest wtedy dane przez:
Musimy wprowadzić dwa rodzaje zmiennych luźnych ξ i i , jedną do kontroli błędu wywołanego przez obserwacje większe od górnej granicy ε-rurki, a drugą dla obserwacji mniejszych od dolnej granicy. Przybliżona funkcja to:
4. nu-SVR: ν-Support Vector Regression (ν-SVR)
Podobnie jak w przypadku ν-SVC, dla regresji należy użyć parametru ν, aby kontrolować liczbę wektorów wsparcia. Jednakże, w przeciwieństwie do ν-SVC, gdzie C jest zastąpione przez ν, tutaj ν zastępuje parametr ε ε-SVR. Wówczas funkcja decyzyjna jest taka sama jak w ε-SVR.
5. Jednoklasowy SVM: estymacja rozkładu
Klasyfikacja jednoklasowa różni się od standardowego problemu klasyfikacji tym, że dane treningowe nie są identycznie rozłożone jak dane testowe. Zbiór danych zawiera dwie klasy: jedna z nich, klasa docelowa, jest dobrze próbkowana, podczas gdy druga klasa jest nieobecna lub próbkowana bardzo słabo. Schölkopf et al. zaproponowali podejście, w którym klasa docelowa jest oddzielona od początku hiperpłaszczyzną. Rozważana postać pierwotna to:
A funkcja decyzyjna to:
Walidacja krzyżowa
Celem stosowania walidacji krzyżowej jest zidentyfikowanie dobrych parametrów, tak aby klasyfikator mógł dokładnie przewidywać nieznane dane .
Powszechnym sposobem jest rozdzielenie danych treningowych na dwie części, z których jedna jest uważana za nieznaną podczas szkolenia klasyfikatora. Następnie dokładność przewidywania na tym zestawie może dokładniej odzwierciedlać wydajność w klasyfikowaniu nieznanych danych. Ulepszoną wersją tej procedury jest walidacja krzyżowa.
W walidacji krzyżowej v-krotnej, zbiór treningowy jest dzielony na v podzbiorów o równej wielkości. Po kolei jeden podzbiór jest testowany przy użyciu klasyfikatora wytrenowanego na pozostałych v – 1 podzbiorach. W ten sposób, każda instancja z całego zbioru treningowego jest przewidywana raz, więc dokładność walidacji krzyżowej jest procentem danych, które są poprawnie sklasyfikowane. Procedura walidacji krzyżowej może zapobiec problemowi overfitting .
Shrinking
Chang i Lin wspomnieli, że ponieważ dla wielu problemów liczba wolnych wektorów wsparcia (tj. 0 <α i < C) jest niewielka, technika shrinking zmniejsza rozmiar problemu roboczego bez uwzględniania niektórych zmiennych ograniczonych .
Buforowanie
Buforowanie jest kolejną techniką zmniejszania czasu obliczeniowego. Ponieważ Q (Q jest macierzą półokreśloną dodatnią l na l, Q ij = y i y j K(x i , x j )) jest w pełni gęsta i może nie być przechowywana w pamięci komputera, elementy Qij są obliczane w miarę potrzeb. Zazwyczaj do przechowywania ostatnio używanych Qij używa się specjalnej pamięci wykorzystującej ideę cache’u .