W SVM poszukujesz dwóch rzeczy: hiperpłaszczyzny o największym minimalnym marginesie i hiperpłaszczyzny, która poprawnie oddziela jak najwięcej instancji. Problem polega na tym, że nie zawsze będziesz w stanie uzyskać obie rzeczy. Parametr c określa, jak wielkie jest twoje pragnienie. Narysowałem poniżej mały przykład, aby to zilustrować. Po lewej stronie masz niskie c, co daje dość duży minimalny margines (fioletowy). Wymaga to jednak zaniedbania wartości odstającej niebieskiego koła, której nie udało się poprawnie sklasyfikować. Po prawej stronie masz wysokie c. Teraz nie zaniedbujesz wartości odstającej, dzięki czemu uzyskasz znacznie mniejszy margines.
Który z tych klasyfikatorów jest najlepszy? To zależy od tego, jak będą wyglądać przyszłe dane, które przewidujesz, i najczęściej tego nie wiesz. Jeśli przyszłe dane wyglądają tak:
wtedy klasyfikator wyuczony przy użyciu dużej wartości c jest najlepszy.
Z drugiej strony, jeśli przyszłe dane wyglądają tak:
wtedy klasyfikator wyuczony przy użyciu niskiej wartości c jest najlepszy.
W zależności od zestawu danych zmiana c może, ale nie musi, powodować powstanie innej hiperpłaszczyzny. Jeśli to ma produkować inną hiperpłaszczyznę, że nie oznacza to, że klasyfikator będzie wyjściowe różnych klas dla danego danych, które zostały wykorzystane do sklasyfikowania. Weka to dobre narzędzie do wizualizacji danych i zabawy z różnymi ustawieniami SVM. Może to pomóc lepiej zrozumieć, jak wyglądają twoje dane i dlaczego zmiana wartości c nie zmienia błędu klasyfikacji. Ogólnie rzecz biorąc, niewiele instancji treningowych i wiele atrybutów ułatwia liniowe rozdzielenie danych. Również fakt, że oceniasz swoje dane treningowe, a nie nowe, niewidoczne dane, ułatwia separację.
Z jakiego rodzaju danych próbujesz się nauczyć modelu? Ile danych? Czy możemy to zobaczyć?