encyklopedia.run.place

Support Vector Machines

Support Vector Machines (SVM, Maszyny Wektorów Nośnych) to rodzina metod uczenia maszynowego opracowanych w latach 90. XX wieku, wykorzystywanych głównie do klasyfikacji i regresji. Algorytm opiera się na konstrukcji maksymalnego marginesu pomiędzy dwoma klasami w przestrzeni cech, wykorzystując jednocześnie wektory wsparcia – podzestaw obserwacji, które definiują pozycję granicy decyzyjnej.

Historia

Pierwszą wersję SVM opracowali Vladimir Vapnik i Alexey Chervonenkis w latach 1960‑70, a następnie w 1992 r. opublikowali pracę „Support-Vector Networks”, w której wprowadzili koncepcję kernela (jądro) umożliwiającą pracę w przestrzeni o wysokiej wymiarowości bez konieczności jej explicite wyliczania. Od tego czasu SVM stały się jedną z najważniejszych technik w uczeniu maszynowym i są szeroko stosowane w praktyce.

Zasada działania

Podstawowym problemem SVM jest znalezienie hiperpłaszczyzny (lub jej nieliniowego odpowiednika), która rozdziela dwie klasy z maksymalnym marginesem. Formalnie, w wersji liniowej, rozwiązanie polega na minimalizacji funkcji

        ½‖w‖² + C Σ ξᵢ
    

przy warunkach

        yᵢ(w·xᵢ + b) ≥ 1 − ξᵢ, ξᵢ ≥ 0,
    

gdzie w i b definiują hiperpłaszczyznę, C jest parametrem regularyzacji, a ξᵢ to zmienne luzujące (slack variables) pozwalające na pewne naruszenia marginesu w problemach nieidealnie separowalnych.

Metoda Lagrange'a

W celu rozwiązania problemu stosuje się metodę Lagrange'a, przekształcając pierwotny problem konweksyjny w jego dualny (dualny problem optymalizacji). W wersji dualnej funkcja do maksymalizacji przyjmuje postać

        Σ αᵢ − ½ Σ Σ αᵢαⱼ yᵢyⱼ (xᵢ·xⱼ),
    

gdzie współczynniki αᵢ (zwane multiplikatorami Lagrange'a) są nieujemne i spełniają warunek Σ αᵢ yᵢ = 0. Rozwiązanie tego problemu jest zwykle uzyskiwane przy użyciu algorytmów programowania kwadratowego lub metod sekwencyjnych optymalizacji (SMO – Sequential Minimal Optimization).

Funkcje jądra

Kluczową cechą SVM jest możliwość zastosowania jąder, które pozwalają na pracę w przestrzeni o dużej wymiarowości bez konieczności jej jawnego wyznaczania (tzw. trik jądra). Najczęściej używane funkcje jądra to:

  • Jądro liniowe – K(x, z) = x·z
  • Jądro wielomianowe – K(x, z) = (γ x·z + r)ᵈ
  • Jądro radialne (RBF) – K(x, z) = exp(−γ‖x−z‖²)
  • Jądro sigmoidalne – K(x, z) = tanh(γ x·z + r)

Dzięki tym funkcjom SVM może tworzyć nieliniowe granice decyzyjne, które w rzeczywistości są liniowe w wyższym wymiarze cech.

Algorytm uczenia

Proces uczenia SVM składa się z następujących kroków:

  1. Wybór odpowiedniej funkcji jądra i parametrów (γ, d, C).
  2. Formułowanie problemu dualnego i jego rozwiązanie metodą optymalizacji (np. SMO lub QP).
  3. Wyodrębnienie wektorów wsparcia – obserwacji, dla których αᵢ > 0.
  4. Obliczenie stałej b na podstawie wektorów wsparcia.
  5. Model gotowy do klasyfikacji nowych przykładów przy użyciu funkcji decyzyjnej f(x) = Σ αᵢ yᵢ K(xᵢ, x) + b.

Zastosowania

SVM znalazły szerokie zastosowanie w wielu dziedzinach, m.in.:

Zalety i wady

Zalety:

  • Silna teoria matematyczna oparta na optymalizacji konweksyjnej – gwarancja globalnego optimum.
  • Efektywne w wysokich wymiarach dzięki trikowi jądra.
  • Możliwość regulacji złożoności modelu poprzez parametr C i wybór jądra.

Wady:

  • Wymaga starannego doboru parametrów – proces może być kosztowny obliczeniowo.
  • Słabo skaluje się do bardzo dużych zbiorów danych (powyżej setek tysięcy przykładów) bez dodatkowych technik przyspieszających.
  • Model jest mniej interpretowalny niż np. drzewa decyzyjne.

Implementacje

W środowiskach programistycznych dostępnych jest wiele implementacji SVM, w tym biblioteki LIBSVM, scikit-learn (Python), TensorFlow oraz R (pakiet e1071).

Literatura

  • V. N. Vapnik, The Nature of Statistical Learning Theory, Springer, 1995.
  • C. Cortes, V. Vapnik, „Support-Vector Networks”, Machine Learning, 1995.
  • J. Platt, „Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines”, 1998.

Maszyny wektorów nośnych pozostają jednym z filarów współczesnego uczenia maszynowego, łącząc solidną teorię matematyczną z praktyczną skutecznością w różnorodnych aplikacjach.