Jak wybrać jądro dla SVM?

95

Podczas korzystania z SVM musimy wybrać jądro.

Zastanawiam się, jak wybrać jądro. Jakieś kryteria wyboru jądra?

xiaohan2012
źródło
jaki jest rozmiar problemu? (# zmienne, obserwacje)?
user603,
Proszę tylko o uogólnione rozwiązanie, nie określono konkretnego problemu
xiaohan2012,

Odpowiedzi:

54

Jądro jest w rzeczywistości miarą podobieństwa, więc wybór jądra zgodnie z wcześniejszą wiedzą o niezmiennościach sugerowaną przez Robina (+1) jest dobrym pomysłem.

Z braku wiedzy eksperckiej jądro Radial Basis Function stanowi dobre domyślne jądro (po ustaleniu jest to problem wymagający modelu nieliniowego).

Wybór parametrów jądra i jądra / regularyzacji można zautomatyzować, optymalizując wybór modelu opartego na walidacji krzyżowej (lub wykorzystując margines promienia lub granice zakresu). Najprostszą rzeczą jest zminimalizowanie kryterium ciągłego wyboru modelu za pomocą metody simpleks Neldera-Meada, która nie wymaga obliczania gradientu i działa dobrze dla rozsądnej liczby hiperparametrów. Jeśli musisz dostroić więcej niż kilka hiperparametrów, automatyczny wybór modelu może spowodować poważne nadmierne dopasowanie ze względu na wariancję kryterium wyboru modelu. Możliwe jest zastosowanie optymalizacji opartej na gradiencie, ale wzrost wydajności zwykle nie jest wart wysiłku, aby go zakodować).

Zautomatyzowany wybór jąder i parametrów jądra / regularyzacji jest trudnym zagadnieniem, ponieważ bardzo łatwo jest zastąpić kryterium wyboru modelu (zwykle oparte na krzyżowej weryfikacji) i możesz uzyskać gorszy model niż na początku. Zautomatyzowany wybór modelu może również wpływać na ocenę wydajności, więc upewnij się, że ocena wydajności ocenia cały proces dopasowania modelu (szkolenie i wybór modelu). Aby uzyskać szczegółowe informacje, patrz

GC Cawley i NLC Talbot, Zapobieganie nadmiernemu dopasowaniu w wyborze modelu poprzez bayesowską regularyzację hiperparametrów, Journal of Machine Learning Research, tom 8, strony 841-861, kwiecień 2007. (pdf)

i

GC Cawley i NLC Talbot, Nadmierne dopasowanie w wyborze modelu, a następnie uprzedzenie wyboru w ocenie wydajności, Journal of Machine Learning Research, vol. 11, s. 2079–2107, lipiec 2010 r. (Pdf)

Dikran Torbacz
źródło
Rozumiem, że podstawa promieniowa jest miarą podobieństwa, ponieważ jest prawie równa 0 dla wektorów daleko od siebie i osiąga maksimum na identycznych wektorach. Nie rozumiem jednak, w jaki sposób ten pomysł stosuje się do algorytmu liniowego (używanie produktu kropkowego jako jądra). Jak możemy interpretować iloczyn skalarny jako miarę podobieństwa?
Bananin
@ Banan w iloczynie kropkowym można zapisać jako iloczyn wielkości dwóch wektorów razy cosinus kąta między nimi, więc można myśleć o nim jako o pomiarze podobieństwa pod względem kierunku wektorów (ale oczywiście również zależny o ich wielkości)
Dikran Torbacz
34

Jeśli nie jesteś pewien, co byłoby najlepsze, możesz skorzystać z automatycznych technik selekcji (np. Walidacja krzyżowa, ...). W takim przypadku możesz nawet użyć kombinacji klasyfikatorów (jeśli twoim problemem jest klasyfikacja) uzyskanych z innym jądrem.

Jednak „zaletą” pracy z jądrem jest to, że zmieniasz zwykłą geometrię „euklidesową”, aby pasowała do twojego własnego problemu. Powinieneś także naprawdę spróbować zrozumieć, jakie jest zainteresowanie jądra twoim problemem, co jest szczególne w geometrii twojego problemu . Może to obejmować:

  • Niezmienność : jeśli istnieje rodzina transformacji, które zasadniczo nie zmieniają twojego problemu, jądro powinno to odzwierciedlić. Niezmienność przez rotację jest zawarta w jądrze gaussa, ale możesz pomyśleć o wielu innych rzeczach: tłumaczeniu, homotetii, reprezentacji dowolnej grupy, ...
  • Co to jest dobry separator? jeśli masz pojęcie o tym, czym jest dobry separator (tj. dobra reguła klasyfikacji) w twoim problemie z klasyfikacją, powinno to zostać uwzględnione przy wyborze jądra. Pamiętaj, że SVM da ci klasyfikatory formularza

f^(x)=i=1nλiK(x,xi)

Jeśli wiesz, że separator liniowy byłby dobry, możesz użyć jądra, które daje funkcje afiniczne (tj. ). Jeśli uważasz, że gładkie granice w duchu gładkiego KNN byłyby lepsze, możesz wziąć jądro gaussowskie ...K(x,xi)=x,Axi+c

Robin Girard
źródło
W swojej odpowiedzi wspomniałeś, że „zaletą” pracy z jądrem jest to, że zmieniasz zwykłą geometrię „euklidesową”, tak aby pasowała ona do twojego problemu. Powinieneś także naprawdę spróbować zrozumieć, na czym polega interes jądra dla twojego problemu, co jest szczególne w geometrii twojego problemu. ” Czy możesz podać kilka odniesień na początek. Dzięki.
Raihana,
11

Zawsze mam wrażenie, że wybór hiperparametru dla SVM odbywa się poprzez krzyżową weryfikację w połączeniu z wyszukiwaniem siatki.

bayerj
źródło
2
Mam to samo odczucie
xiaohan2012,
2
wyszukiwanie w sieci jest złym pomysłem, spędzasz dużo czasu na wyszukiwaniu w obszarach, w których wydajność jest niska. Stosuj algorytmy optymalizacji bez gradientu, takie jak metoda simpleksowa Neldera-Meada, która jest znacznie bardziej wydajna w praktyce (np. Fminsearch () w MATLAB).
Dikran Marsupial
Nie, używaj modeli graficznych lub procesów Gaussa do globalnej optymalizacji w połączeniu z oczekiwanymi informacjami. (Patrz „Algorytmy optymalizacji
hiperparametrów
2

Ogólnie rzecz biorąc, jądro RBF jest rozsądnym pierwszym wyborem. Ponadto jądro liniowe jest szczególnym przypadkiem RBF, w szczególności, gdy liczba funkcji jest bardzo duża, można po prostu użyć jądra liniowego.

boyxiaolong
źródło
1
Zależy to od tego, czy dane można rozdzielić liniowo, czy nie, a nie od liczby posiadanych wymiarów. Gdy liczba funkcji jest bardzo duża (ponownie w zależności od danych), najpierw zastosujesz redukcję wymiarowości, PCA lub LDA (liniowe lub nieliniowe warianty jądra)