SVM, czyli support vector machine, to klasyfikator, który wybiera granicę między klasami z możliwie największym marginesem. Jeśli szukasz odpowiedzi na pytanie, czym jest SVM, to właśnie to jest kluczowa idea: nie tylko rozdzielić grupy, ale zostawić między nimi jak najszerszą, wiarygodną przerwę.

Punkty leżące najbliżej tej granicy nazywają się wektorami nośnymi. Są najważniejsze, bo to one wyznaczają, gdzie może przebiegać separator.

Dlaczego margines ma znaczenie

Wyobraź sobie dwa zbiory punktów: jeden z klasy A, a drugi z klasy B. Wiele prostych mogłoby je rozdzielić. SVM wybiera tę prostą, która zostawia największy bufor bezpieczeństwa po obu stronach.

Szerszy margines często sprawia, że klasyfikator jest mniej wrażliwy na małe zmiany w danych treningowych. Nie gwarantuje to lepszych wyników w praktyce, ale jest to główna intuicja stojąca za SVM.

Jak wygląda granica decyzyjna w SVM

W liniowym SVM granica decyzyjna jest hiperpłaszczyzną:

wx+b=0w \cdot x + b = 0

Klasyfikator przewiduje jedną klasę, gdy wx+b>0w \cdot x + b > 0, a drugą, gdy wx+b<0w \cdot x + b < 0.

W standardowym skalowaniu max-margin dla danych separowalnych SVM wybiera ww i bb tak, aby

yi(wxi+b)1y_i(w \cdot x_i + b) \ge 1

dla każdego punktu treningowego, a jednocześnie aby margines był możliwie największy. W tym skalowaniu pełna szerokość marginesu wynosi

2w.\frac{2}{\|w\|}.

Ważna praktyczna intuicja jest prostsza niż sam wzór: mniejsze w\|w\| oznacza szerszy margines w tym znormalizowanym ustawieniu.

Przykład: jednowymiarowy SVM

Przykład jednowymiarowy pozwala łatwo zobaczyć ideę marginesu.

Załóżmy, że klasa ujemna ma punkty w x=0x=0 i x=1x=1, a klasa dodatnia ma punkty w x=4x=4 i x=5x=5.

Każdy próg między 11 a 44 rozdziela klasy. Na przykład działa x=2x=2 i działa też x=3x=3, ale te wybory nie dają takiego samego bufora po obu stronach.

W tym jednowymiarowym, separowalnym układzie SVM wybiera środek między najbliższymi punktami przeciwnych klas, więc próg decyzyjny to

x=2.5.x = 2.5.

Najbliższy punkt klasy ujemnej to x=1x=1, a najbliższy punkt klasy dodatniej to x=4x=4. To właśnie wektory nośne. Każdy z nich leży w odległości 1.51.5 od granicy, więc margines jest zrównoważony i możliwie szeroki.

Możesz zapisać ten klasyfikator jako „przewiduj klasę dodatnią, gdy x>2.5x > 2.5, a ujemną, gdy x<2.5x < 2.5”. Ten prosty przypadek pokazuje właściwą ideę: granicę wyznaczają najtrudniejsze pobliskie przypadki, a nie odległe punkty, które i tak są łatwe do sklasyfikowania.

Hard-margin vs soft-margin SVM

Hard-margin SVM działa tylko wtedy, gdy dane treningowe są idealnie liniowo separowalne. Jeśli choć jeden punkt łamie ten warunek, podejście hard-margin nie pasuje do danych.

Dlatego w wielu praktycznych zastosowaniach używa się soft margin. Soft-margin SVM nadal preferuje szeroki margines, ale dopuszcza, by niektóre punkty znalazły się wewnątrz marginesu albo nawet po złej stronie granicy, za odpowiednią karą.

Parametr CC kontroluje ten kompromis. Większe CC silniej karze naruszenia. Mniejsze CC daje większą elastyczność. Żaden wybór nie jest automatycznie lepszy; zależy to od danych i powinno być sprawdzone na zbiorze walidacyjnym.

Kiedy kernel SVM pomaga

Czasem prosta granica nie wystarcza w oryginalnej przestrzeni cech. Kernel SVM radzi sobie z tym, porównując punkty za pomocą funkcji jądra, co może umożliwić zakrzywioną granicę bez jawnego zapisywania ogromnego przekształconego wektora cech.

Kluczowy warunek jest taki, że dodatkowa elastyczność pomaga tylko wtedy, gdy wzorzec w danych naprawdę tego wymaga. Jądra mogą poprawić model, ale mogą też utrudnić strojenie, więc należy je walidować, a nie wybierać domyślnie.

Częste błędy przy SVM

Myślenie, że każdy punkt jest równie ważny

W SVM najważniejsze są punkty najbliższe granicy. Punkty daleko od granicy często mają niewielki wpływ na końcowy separator.

Zapominanie o warunku dla hard margin

Idealna liniowa separowalność to rzeczywisty warunek, a nie domyślne założenie. Jeśli klasy nakładają się na siebie, potrzebujesz soft margin albo innego modelu.

Ignorowanie skalowania cech

SVM opiera się na odległościach i iloczynach skalarnych. Jeśli jedna cecha jest mierzona w znacznie większej skali niż inna, może zdominować granicę, chyba że najpierw przeskalujesz dane wejściowe.

Zakładanie, że kernel jest automatycznie lepszy

Bardziej elastyczna granica może lepiej dopasować dane treningowe, ale to nie oznacza automatycznie lepszej generalizacji.

Gdzie stosuje się SVM

SVM stosuje się w problemach klasyfikacyjnych, w których granica między klasami może być dość wyraźna i gdzie rozumowanie oparte na marginesie jest pomocne. Są szczególnie popularne w małych i średnich problemach tabelarycznych oraz w klasyfikacji tekstu, gdzie często występują przestrzenie cech o dużym wymiarze.

Stosuje się je także do regresji w pokrewnej metodzie zwanej support vector regression, ale to inna konfiguracja niż obraz klasyfikacji binarnej opisany tutaj.

Spróbuj podobnego zadania z SVM

Weź jednowymiarowe punkty z przykładu i dodaj jeden nowy punkt klasy ujemnej w x=2.2x=2.2. Teraz czysta szeroka przerwa znika. Zastanów się, co się zmienia, jeśli upierasz się przy hard margin, a co się zmienia, jeśli dopuszczasz soft margin. Takie porównanie często najszybciej pozwala zrozumieć SVM.

Potrzebujesz pomocy z zadaniem?

Prześlij pytanie i otrzymaj zweryfikowane rozwiązanie krok po kroku w kilka sekund.

Otwórz GPAI Solver →