Support Vector Machine (SVM)
Definicja
Support Vector Machine (SVM) to metoda z zakresu uczenia maszynowego, wykorzystywana przede wszystkim do klasyfikacji oraz regresji. Algorytm ten opiera się na koncepcji odnajdywania hiperpowierzchni (ang. hyperplane) w przestrzeni cech, która maksymalnie oddziela klasy danych przy jednoczesnym minimalizowaniu ryzyka błędnej klasyfikacji.
Historia
Podstawy teoretyczne SVM zostały opracowane w latach 60. XX wieku, ale przełomowy wkład wniósł w 1995 roku Vladimir Vapnik wraz z zespołem w Bell Labs, publikując pracę, w której przedstawiono algorytm Maximum Margin Classifier. Od tego czasu SVM stała się jedną z najważniejszych i najczęściej stosowanych technik w statystycznym uczeniu.
Zasada działania
Algorytm SVM dąży do znalezienia tak zwanej maksymalnej marginesu (ang. maximum margin) — najgłębszego odstępu pomiędzy dwoma klasami w przestrzeni cech. W praktyce oznacza to:
- Wybór hiperpowierzchni rozdzielającej klasy.
- Optymalizacja tej powierzchni tak, aby odległość (margines) od najbliższych punktów obu klas (zwanych wektorami nośnymi) była maksymalna.
- Wprowadzenie jądra (ang. kernel) w celu przekształcenia danych do wyższej wymiarowości, co umożliwia rozdzielenie danych nieliniowych.
Formalnie problem optymalizacji można przedstawić jako rozwiązanie następującego zadania kwadratowego:
minimize (1/2)||w||^2 + C Σ ξ_i subject to y_i (w·φ(x_i) + b) ≥ 1 - ξ_i, ξ_i ≥ 0
gdzie w i b określają hiperpowierzchnię, ξ_i są zmiennymi slack (zapasowymi), C jest parametrem regularyzacji, a φ to funkcja mapująca dane do przestrzeni cech.
Rodzaje SVM
- SVM liniowy – stosowany, gdy dane są rozdzielne w pierwotnej przestrzeni.
- SVM jądrowe – wykorzystuje funkcje jądrowe (np. RBF, polynomialne, sigmoid) do przekształcania danych.
- Support Vector Regression (SVR) – wariant przeznaczony do zadań regresyjnych.
- One-Class SVM – metoda wykrywania anomalii i klasyfikacji jednowarstwowej.
Zastosowania
SVM znajduje zastosowanie w wielu dziedzinach, m.in.:
- Rozpoznawanie obrazu i wizji komputerowej (np. detekcja twarzy).
- Biologia bioinformatyczna – klasyfikacja sekwencji DNA, prognozowanie struktury białek.
- Bioinformatyka – klasyfikacja mikroarrayów genetycznych.
- Finanse – prognozowanie cen akcji, wykrywanie oszustw.
- Przetwarzanie języka naturalnego – klasyfikacja tekstu, analiza sentymentu.
Zalety
- Wysoka skuteczność przy małej liczbie parametrów.
- Możliwość zastosowania jąder pozwalająca na rozdzielanie danych nieliniowych.
- Stabilność w obecności szumu dzięki użyciu zmiennych slack.
- Modele oparte na wektorach nośnych, co często prowadzi do prostych i interpretowalnych rozwiązań.
Wady
- Wysoka złożoność obliczeniowa przy dużych zbiorach danych (O(n³) w najgorszym wypadku).
- Wrażliwość na wybór parametrów C oraz funkcji jądra.
- Trudności z interpretacją przy użyciu wysokowymiarowych jąder.
Implementacje i biblioteki
W środowiskach programistycznych dostępne są liczne implementacje SVM, m.in.:
- Scikit‑learn (Python)
- LIBSVM (biblioteka C/C++)
- LIBLINEAR – zoptymalizowana wersja dla problemów liniowych.
- R – pakiet
e1071icaret.
Literatura
- Vapnik, V. N. The Nature of Statistical Learning Theory. Springer, 1995.
- Cortes, C., & Vapnik, V. “Support‑Vector Networks”. Machine Learning, 20(3):273‑297, 1995.
- Schölkopf, B., & Smola, A. J. Learning with Kernels. MIT Press, 2002.
- James, G., et al. An Introduction to Statistical Learning. Springer, 2013 – rozdział poświęcony SVM.
Powiązane pojęcia
Więcej informacji można znaleźć w artykułach: