Support Vector Machine (SVM)

Support Vector Machine (SVM) to metoda uczenia maszynowego służąca głównie do klasyfikacji (a także do regresji), która wyznacza granicę decyzyjną maksymalizującą „margines” między klasami na podstawie wybranych obserwacji brzegowych zwanych *wektorami nośnymi*. W praktyce SVM buduje model, który rozdziela dane możliwie „najpewniej” (z największym zapasem), a w wersjach nieliniowych wykorzystuje funkcje jądra (*kernel*), aby rozdzielać dane w przestrzeniach o wyższym wymiarze.

SVM można rozumieć jako formalny sposób znalezienia najlepszego hiperplanu (w 2D: prostej, w 3D: płaszczyzny) rozdzielającego dwie klasy. „Najlepszy” oznacza tu taki, który maksymalizuje odległość od najbliższych punktów obu klas. Te najbliższe punkty to właśnie *support vectors* — obserwacje, które w największym stopniu „podpierają” położenie granicy decyzyjnej. Dzięki temu model bywa odporny na niewielkie fluktuacje danych: jeśli większość punktów jest daleko od granicy, to ich dokładne położenie ma mniejsze znaczenie niż położenie punktów brzegowych.

W realnych danych idealne rozdzielenie klas często nie jest możliwe (np. część klientów o podobnych cechach raz spłaca kredyt, a raz nie). Dlatego stosuje się tzw. miękki margines (*soft margin*), który dopuszcza pewne błędy klasyfikacji, ale je „karze” w funkcji celu. Kluczowym parametrem jest zwykle C, kontrolujący kompromis między szerokością marginesu a liczbą/skalą naruszeń (błędów lub punktów po „złej” stronie granicy). Duże C skłania model do mocniejszego dopasowania do danych treningowych (mniej błędów na treningu), małe C — do większej tolerancji błędów i szerszego marginesu (często lepsza uogólnialność, ale nie zawsze).

Istotną zaletą SVM jest możliwość modelowania zależności nieliniowych poprzez trik jądrowy. Zamiast jawnie przekształcać dane do przestrzeni o wyższym wymiarze, SVM korzysta z funkcji jądra, która pozwala obliczać iloczyny skalarne w tej przestrzeni „pośrednio”. Popularne jądra to liniowe (gdy zależność jest w przybliżeniu liniowa), wielomianowe oraz RBF (gaussowskie), często używane, gdy granica decyzyjna ma być gładka i nieliniowa. Przykład: w wykrywaniu spamu w e-mailach SVM z jądrem liniowym bywa skuteczne na cechach tekstowych (np. TF‑IDF), natomiast w klasyfikacji obrazów (po odpowiednim wektorowaniu cech) czasem stosuje się jądro RBF, jeśli separacja liniowa jest niewystarczająca.

  • Kluczowe właściwości
  • Maksymalizacja marginesu: model wybiera granicę decyzyjną tak, by maksymalizować minimalną odległość do najbliższych punktów obu klas, co często poprawia zdolność uogólniania.
  • Wektory nośne: tylko część obserwacji (te najbliżej granicy) bezpośrednio wpływa na rozwiązanie; wiele punktów „daleko” od granicy ma ograniczony wpływ.
  • Parametryzacja kompromisu (C): reguluje równowagę między dopasowaniem do danych a tolerancją błędów (miękki margines).
  • Jądra (kernel): umożliwiają nieliniową klasyfikację bez jawnego zwiększania wymiaru cech; wybór jądra i jego parametrów (np. gamma w RBF) silnie wpływa na wynik.
  • Wrażliwość na skalę cech: SVM zwykle wymaga standaryzacji/normalizacji cech, bo odległości i iloczyny skalarne są kluczowe dla działania algorytmu.
  • Typowe konteksty zastosowań
  • Finanse i ryzyko: klasyfikacja klientów (np. ryzyko niespłacenia), wykrywanie anomalii/transakcji podejrzanych (często w wariantach SVM do detekcji odstępstw, np. one-class SVM), segmentacja zachowań użytkowników.
  • Ekonomia i biznes: przewidywanie zdarzeń binarnych (np. churn: odejście klienta vs. pozostanie), klasyfikacja dokumentów (umowy, reklamacje) i wiadomości (spam/ham), scoring jakości leadów sprzedażowych.
  • Analiza tekstu: kategoryzacja artykułów, opinii i zgłoszeń serwisowych; SVM liniowy jest często konkurencyjny na rzadkich, wysokowymiarowych reprezentacjach tekstu.
  • Medycyna i przemysł: klasyfikacja sygnałów i danych z czujników (np. wykrywanie usterek), gdzie liczba cech bywa duża w relacji do liczby obserwacji.
  • Częste nieporozumienia
  • „SVM zawsze jest najlepszy”: SVM bywa bardzo skuteczny, ale nie dominuje we wszystkich problemach; w dużych zbiorach danych lub przy bardzo złożonych wzorcach inne metody (np. drzewa zespołowe, sieci neuronowe) mogą być praktyczniejsze lub dokładniejsze.
  • „Kernel zawsze poprawia wynik”: jądra nieliniowe zwiększają elastyczność, ale też ryzyko przeuczenia i koszty obliczeń; czasem model liniowy jest wystarczający i bardziej stabilny.
  • „Nie trzeba stroić parametrów”: dobór C, rodzaju jądra i parametrów jądra (np. gamma) jest zwykle krytyczny; bez walidacji krzyżowej łatwo uzyskać wynik pozornie dobry na treningu, a słaby w praktyce.
  • „SVM daje prawdopodobieństwa”: podstawowy SVM zwraca wynik decyzyjny (odległość od granicy), nie bezpośrednie prawdopodobieństwo; probabilistyczna interpretacja wymaga dodatkowej kalibracji.
  • „SVM nie działa przy wielu klasach”: SVM jest z natury binarny, ale wieloklasowość realizuje się przez strategie typu one-vs-rest lub one-vs-one; to standardowa praktyka, choć zwiększa złożoność treningu i interpretacji.