Myślę, że próbujesz zacząć od złego końca. To, co należy wiedzieć o używaniu SVM, polega na tym, że ten algorytm znajduje hiperpłaszczyznę w hiperprzestrzeni atrybutów, która najlepiej oddziela dwie klasy, gdzie najlepiej oznacza największy margines między klasami (wiedza o tym, jak to się robi, jest tutaj twoim wrogiem, ponieważ rozmywa cały obraz), co ilustruje takie słynne zdjęcie:
Pozostały problemy.
Po pierwsze, co z tymi paskudnymi wartościami odstającymi bezwstydnie w centrum chmury punktów innej klasy?
W tym celu pozwalamy optymalizatorowi pozostawić niektóre próbki błędnie oznakowane, a jednak ukarać każdy z takich przykładów. Aby uniknąć wieloobiektywnej optymalizacji, kary za błędnie oznakowane przypadki są łączone z wielkością marginesu za pomocą dodatkowego parametru C, który kontroluje równowagę między tymi celami.
Następnie czasami problem nie jest po prostu liniowy i nie można znaleźć dobrej hiperpłaszczyzny. Tutaj wprowadzamy sztuczkę jądra - po prostu projektujemy oryginalną, nieliniową przestrzeń na wyższą wymiarowo z pewną nieliniową transformacją, oczywiście określoną przez szereg dodatkowych parametrów, mając nadzieję, że w wynikowej przestrzeni problem będzie odpowiedni dla zwykłego SVM:
Po raz kolejny, z pewną matematyką i widzimy, że całą procedurę transformacji można elegancko ukryć, modyfikując funkcję celu, zastępując iloczyn iloczynu obiektów tak zwaną funkcją jądra.
Wreszcie, to wszystko działa dla 2 klas, a ty masz 3; co z tym zrobić? Tutaj tworzymy 3 klasyfikatory 2-klasowe (siedząca - bez siedzenia, stojąca - bez stania, chodzenia - bez chodzenia), a w klasyfikacji łączymy te z głosowaniem.
Ok, więc problemy wydają się rozwiązane, ale musimy wybrać jądro (tutaj konsultujemy się z naszą intuicją i wybrać RBF) i dopasować co najmniej kilka parametrów (jądro C +). I musimy mieć do tego funkcję celu nadającą bezpieczeństwo, na przykład przybliżenie błędu w wyniku weryfikacji krzyżowej. Więc zostawiamy komputer nad tym pracujący, idziemy na kawę, wracamy i widzimy, że istnieją pewne optymalne parametry. Wspaniały! Teraz zaczynamy zagnieżdżoną weryfikację krzyżową, aby uzyskać przybliżenie błędu i voila.
Ten krótki przepływ pracy jest oczywiście zbyt uproszczony, aby był w pełni poprawny, ale pokazuje powody, dla których myślę, że powinieneś najpierw spróbować z losowym lasem , który jest prawie niezależny od parametrów, natywnie wieloklasowy, zapewnia bezstronne oszacowanie błędów i działa prawie tak dobrze, jak dobrze dopasowane SVM .