Maszyna wektorów nośnych (ang. Support Vector Machine, SVM) to algorytm uczenia nadzorowanego, który szuka granicy decyzyjnej — tzw. hiperpłaszczyzny — najlepiej oddzielającej dwie klasy danych. „Najlepiej” znaczy tu: z możliwie największym marginesem, czyli odstępem między granicą a najbliższymi punktami każdej z klas. Te najbliższe punkty to właśnie wektory nośne i to one (a nie cała chmura danych) wyznaczają, gdzie przebiega granica.
Jak to działa
Wyobraź sobie dwie grupy punktów na płaszczyźnie. Linii, które je rozdzielą, jest nieskończenie wiele. SVM wybiera tę jedną, która zostawia najszerszy „pas bez ziemi niczyjej” po obu stronach. Im szerszy margines, tym model lepiej radzi sobie z generalizacją i wykazuje lepszą zdolność generalizacji na nowe dane.
W rzeczywistości dane rzadko da się rozdzielić prostą linią. Tu wchodzi kernel trick: zamiast ręcznie dodawać nowe cechy, SVM przenosi dane do przestrzeni o wyższej liczbie wymiarów, gdzie liniowy podział staje się możliwy. Popularne jądra (kernele) to linear, poly i rbf (radialne). Dzięki temu SVM dobrze radzi sobie z danymi o wielu cechach, np. tekstem zamienionym na wektory.
Przykład z praktyki
Najprostsza droga to scikit-learn w Pythonie. Klasyfikacja sprowadza się do kilku linijek:
from sklearn.svm import SVC
model = SVC(kernel='rbf', C=1.0)
model.fit(X_train, y_train)
Klasyczny scenariusz: filtr spamu albo klasyfikacja recenzji na pozytywne/negatywne. Tekst zamieniasz na wektory (np. TF-IDF), a SVM uczy się granicy między klasami. Przy mniejszych, dobrze opisanych zbiorach często bije bardziej „modne” sieci neuronowe.
Na co uważać
- Skalowanie cech to obowiązek. SVM jest wrażliwy na zakresy wartości — przepuść dane przez
StandardScaler, inaczej cecha o dużych liczbach zdominuje resztę. - Parametr
Cigammadecydują o przeuczeniu. Za dużeC= model wkuwa szum zamiast się uczyć. - Mit „SVM tylko dla dwóch klas”. Dla wielu klas biblioteki robią one-vs-rest albo one-vs-one pod spodem — działa, choć trzeba wiedzieć, co liczysz.
- Skala danych. Przy milionach próbek SVM bywa wolny w treningu — wtedy lepiej spojrzeć w stronę modeli liniowych lub gradient boosting.
Pojęcia powiązane
Warto znać przy okazji: hiperpłaszczyzna, margines, kernel trick, klasyfikacja, regresja (SVM ma też wariant SVR), regularyzacja, overfitting, scikit-learn oraz uczenie nadzorowane jako szersza kategoria.