Jądro liniowe i jądro nieliniowe dla maszyny wektora wsparcia?


45

Czy podczas korzystania z maszyny wektorów pomocniczych istnieją jakieś wytyczne dotyczące wyboru jądra liniowego vs. jądra nieliniowego, takiego jak RBF? Kiedyś słyszałem, że nieliniowe jądro nie działa dobrze, gdy liczba funkcji jest duża. Czy są jakieś odniesienia w tej sprawie?


1
według mojej mądrości opiera się to na aktualnym problemie i korzystanie z takich przeszkód w praktyce jest niebezpieczne.
htrahdis

Odpowiedzi:


66

Zwykle decyduje się, czy użyć jądra liniowego czy RBF (aka Gaussa). Należy wziąć pod uwagę dwa główne czynniki:

  1. Rozwiązanie problemu optymalizacji jądra liniowego jest znacznie szybsze, patrz np. LIBLINEAR.
  2. Zazwyczaj najlepsza możliwa wydajność predykcyjna jest lepsza dla nieliniowego jądra (lub przynajmniej tak dobrego jak dla liniowego).

Wykazano, że jądro liniowe jest zdegenerowaną wersją RBF , dlatego jądro liniowe nigdy nie jest bardziej dokładne niż odpowiednio dostrojone jądro RBF. Cytując streszczenie z artykułu, który połączyłem:

Analiza wskazuje również, że jeśli dokonano pełnego wyboru modelu przy użyciu jądra Gaussa, nie ma potrzeby rozważania liniowej SVM.

Podstawową praktyczną zasadę pokrótce opisano w praktycznym przewodniku NTU dotyczącym wspierania klasyfikacji wektorów (załącznik C).

Jeśli liczba elementów jest duża, może nie być konieczne mapowanie danych do przestrzeni o wyższych wymiarach. Oznacza to, że mapowanie nieliniowe nie poprawia wydajności. Korzystanie z jądra liniowego jest wystarczające i wystarczy wyszukać parametr C.

Twój wniosek jest mniej więcej słuszny, ale masz argument w odwrotnej kolejności. W praktyce, liniowe jądro ma tendencję do działania bardzo dobrze, gdy liczba elementów jest duża (np. Nie ma potrzeby mapowania do jeszcze większej przestrzeni wymiarów elementów). Typowym tego przykładem jest klasyfikacja dokumentów z tysiącami wymiarów w przestrzeni wejściowej.

W takich przypadkach jądra nieliniowe niekoniecznie są znacznie bardziej dokładne niż liniowe. Zasadniczo oznacza to, że jądra nieliniowe tracą na atrakcyjności: wymagają dużo więcej zasobów, aby trenować z niewielką lub żadną korzyścią w zakresie wydajności predykcyjnej, więc po co to robić.

TL; DR

Zawsze najpierw wypróbuj liniowy, ponieważ trenowanie jest znacznie szybsze (ORAZ test). Jeśli dokładność jest wystarczająca, poklep się po plecach za dobrze wykonaną robotę i przejdź do następnego problemu. Jeśli nie, spróbuj nieliniowego jądra.


1
Mam wyjaśnienie dotyczące sztuczki jądra: stats.stackexchange.com/questions/131138/…

37

Andrew Ng podaje miłą, praktyczną objaśnienie w tym filmie od 14:46, chociaż cały film jest wart obejrzenia.

Kluczowe punkty

  • Użyj liniowego jądra, gdy liczba funkcji jest większa niż liczba obserwacji.
  • Użyj jądra gaussowskiego, gdy liczba obserwacji jest większa niż liczba funkcji.
  • Jeśli liczba obserwacji jest większa niż 50 000, może to stanowić problem przy korzystaniu z jądra gaussowskiego; stąd można użyć liniowego jądra.

uzgodnione ................
datmannz

1
link nie żyje: Myślę, że to ten sam film: youtube.com/watch?v=hDh7jmEGoY0
ihebiheb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.