SVM - Support Vector Machine

Czym jest SVM?

Support Vector Machine (SVM) to wszechstronny algorytm uczenia maszynowego, który znajduje zastosowanie zarówno w klasyfikacji, jak i regresji. Jego celem jest znalezienie hiperpłaszczyzny w przestrzeni cech, która maksymalizuje margines między dwiema klasami. Dzięki temu SVM skutecznie rozróżnia klasy i charakteryzuje się wysoką ogólną wydajnością, zwłaszcza na danych o dużej liczbie wymiarów.

Kluczowe pojęcia:

  1. Hiperpłaszczyzna:

    • To n-1 wymiarowa granica decyzyjna, która dzieli przestrzeń cech na dwie części odpowiadające różnym klasom.
  2. Wektory nośne (support vectors):

    • Punkty danych, które są najbliżej hiperpłaszczyzny i definiują jej położenie. Mają kluczowy wpływ na optymalne rozwiązanie.
  3. Margines:

    • Odległość między hiperpłaszczyzną a najbliższymi punktami z obu klas. SVM dąży do maksymalizacji tego marginesu.
  4. Jądra (kernels):

    • Funkcje pozwalające na odwzorowanie danych do przestrzeni o wyższym wymiarze, umożliwiając modelowanie bardziej skomplikowanych granic decyzyjnych. Popularne jądra to:
      • Liniowe (linear)
      • Wielomianowe (polynomial)
      • Radialne funkcje bazowe (RBF)
      • Sigmoidalne

Proces działania SVM:

  1. Transformacja danych:

    • Dane wejściowe są mapowane do przestrzeni cech (w razie potrzeby z zastosowaniem funkcji jądra).
  2. Znajdowanie hiperpłaszczyzny:

    • Algorytm wyznacza optymalną hiperpłaszczyznę, która maksymalizuje margines między klasami.
  3. Klasyfikacja punktów:

    • Nowe punkty są klasyfikowane na podstawie ich położenia względem hiperpłaszczyzny.

Zalety SVM:

Wady SVM:

Parametry w SVM:

  1. Parametr regularizacji (\(C\)):

    • Kontroluje równowagę między szerokością marginesu a liczbą błędów klasyfikacji.
    • Duża wartość \(C\): Większy nacisk na poprawną klasyfikację punktów (ryzyko overfittingu).
    • Mała wartość \(C\): Większy margines kosztem większej liczby błędów klasyfikacji.
  2. Parametry funkcji jądra:

    • W przypadku RBF: Parametr \(\gamma\) kontroluje wpływ pojedynczego punktu na granicę decyzyjną.
    • Małe \(\gamma\): Większy zasięg wpływu punktu.
    • Duże \(\gamma\): Mniejszy zasięg, bardziej szczegółowe dopasowanie.

Zastosowania:

  1. Rozpoznawanie obrazów:
    • Klasyfikacja obiektów na zdjęciach, np. twarzy, znaków drogowych.
  2. Bioinformatyka:
    • Przewidywanie struktury białek, analiza ekspresji genów.
  3. Systemy rekomendacyjne:
    • Personalizowane sugestie na podstawie preferencji użytkownika.
  4. Analiza sentymentu:
    • Klasyfikacja opinii jako pozytywnych lub negatywnych.
  5. Wykrywanie oszustw:
    • Identyfikacja podejrzanych transakcji w finansach.

Przykład działania:

Załóżmy, że chcemy sklasyfikować punkty na płaszczyźnie (2D) na dwie klasy:

Dane:

  1. Punkty klasy \(C_1\): \((2, 3), (3, 3), (4, 5)\)
  2. Punkty klasy \(C_2\): \((6, 7), (7, 8), (8, 7)\)

SVM wyznacza hiperpłaszczyznę w postaci równania: \[ w_1 \cdot x_1 + w_2 \cdot x_2 + b = 0 \]

Warianty SVM:

  1. SVC (Support Vector Classification):
    • Klasyfikacja binarna i wieloklasowa.
  2. SVR (Support Vector Regression):
    • Zastosowanie SVM w problemach regresji.
  3. One-Class SVM:
    • Wykrywanie anomalii na podstawie analizy jednego klastra danych.

SVM to potężne narzędzie w eksploracji danych, szczególnie skuteczne w zadaniach wymagających rozróżniania między różnymi klasami, dzięki swojej zdolności do modelowania skomplikowanych granic decyzyjnych.