Czy powinienem używać Kernel Trick, gdy tylko jest to możliwe, do danych nieliniowych?

13

Niedawno dowiedziałem się o użyciu sztuczki jądra, która odwzorowuje dane na przestrzenie o wyższych wymiarach, próbując zlinearyzować dane w tych wymiarach. Czy są jakieś przypadki, w których powinienem unikać stosowania tej techniki? Czy to tylko kwestia znalezienia właściwej funkcji jądra?

W przypadku danych liniowych nie jest to oczywiście pomocne, ale w przypadku danych nieliniowych wydaje się to zawsze przydatne. Korzystanie z klasyfikatorów liniowych jest znacznie łatwiejsze niż nieliniowe pod względem czasu szkolenia i skalowalności.

JDong
źródło

Odpowiedzi:

8

W przypadku danych liniowych nie jest to oczywiście pomocne, ale w przypadku danych nieliniowych wydaje się to zawsze przydatne. Korzystanie z klasyfikatorów liniowych jest znacznie łatwiejsze niż nieliniowe pod względem czasu szkolenia i skalowalności.

@BartoszKP już wyjaśnił, dlaczego sztuczka jądra jest przydatna. Aby w pełni odpowiedzieć na twoje pytanie, chciałbym jednak zauważyć, że jądro nie jest jedyną opcją do radzenia sobie z danymi, które nie są liniowo rozdzielne.

Istnieją co najmniej trzy dobre, wspólne alternatywy dla delinearyzacji modelu:

  • Metody oparte na sieci neutalnej, w których dodajesz jedną (lub więcej) warstw jednostek przetwarzających, zdolnych do przekształcenia danych w przypadek rozdzielany liniowo. W najprostszym przypadku jest to warstwa oparta na sigmoidach, co dodaje procesowi nieliniowości. Po losowym zainicjowaniu otrzymują aktualizacje podczas optymalizacji gradientu górnej warstwy (co w rzeczywistości rozwiązuje problem liniowy).
  • W szczególności - można tu zastosować techniki głębokiego uczenia się do przygotowania danych do dalszej liniowej klasyfikacji. Jest to bardzo podobny pomysł do poprzedniego, ale tutaj najpierw trenujesz swoje warstwy przetwarzania, aby znaleźć dobry punkt wyjścia do dalszego dostrajania opartego na szkoleniu jakiegoś modelu liniowego.
  • Rzutki losowe - możesz próbkować (nieliniowe) rzuty z pewnej predefiniowanej przestrzeni i trenować liniowy klasyfikator na nich. Pomysł ten jest mocno wykorzystywany w tak zwanym ekstremalnym uczeniu maszynowym , gdzie bardzo wydajne solwery liniowe są wykorzystywane do trenowania prostego klasyfikatora na losowych projekcjach i osiągania bardzo dobrej wydajności (w przypadku problemów nieliniowych zarówno w klasyfikacji, jak i regresji, sprawdź na przykład ekstremalne uczenie się maszyny ).

Podsumowując - jądro jest świetną techniką delinearyzacji i można jej użyć, gdy problem nie jest liniowy, ale nie powinna być ślepa. To tylko jedna z co najmniej kilku interesujących metod, które mogą prowadzić do różnych wyników, w zależności od problemu i wymagań. W szczególności ELM ma tendencję do znajdowania bardzo podobnych rozwiązań do rozwiązań dostarczanych przez jądro SVM, podczas gdy w tym samym czasie można trenować rzędy wielkości szybciej (więc skaluje się znacznie lepiej niż jądra SVM).

lejlot
źródło
10

Cena, którą płacisz za sztuczkę jądra, za metody liniowe, ma gorsze granice uogólnienia. W przypadku modelu liniowego jego wymiar VC jest również liniowy pod względem liczby wymiarów (np. Wymiar VC dla Perceptronu wynosi d + 1).

Teraz, jeśli wykonasz złożoną nieliniową transformację do przestrzeni o wysokich wymiarach, wymiar VC twojego zestawu hipotez jest znacznie większy, ponieważ jest teraz liniowy pod względem liczby wymiarów w nowej, wysokiej przestrzeni wymiarowej. I wraz z tym granica uogólnienia idzie w górę.

Wsparcie Maszyny wektorowe wykorzystują sztuczkę jądra w najbardziej efektywny sposób, wykonując dwie rzeczy:

BartoszKP
źródło
1
„jest również liniowy pod względem liczby ciężarów” pod względem wymiaru przestrzeni, a nie liczby ciężarów. Możesz mieć liniowy klasyfikator sparametryzowany z dowolną liczbą wag, ale jego wymiar VC nadal wynosi d + 1 (gdzie d to wymiar przestrzenny). „wymiar VC dla modeli SVM jest związany z liczbą wektorów pomocniczych” Jak dokładnie wymiar VC jest wyrenderowany z liczbą SV? Jestem świadomy twardego marginesu, ale afaik w przypadku miękkiego marginesu nie ma takiego stosunku. Nawet w granicach złożoności Radamachera nie znajdziesz liczby SV jako zmiennej.
lejlot
Również „więc nie ma znaczenia, jak„ duża ”jest przestrzeń docelowa jądra, nie tracisz nic w kategoriach związanych z generalizacją”, o ile wiem, jest całkowicie fałszywa. Przestrzenie wielowymiarowe doprowadzą do utraty możliwości generalizacji, nawet przy tak silnie uregulowanym modelu jak SVM.
lejlot
1
@lejlot Dzięki, poprawiono pierwsze dwa błędy. Potrzebuję trochę czasu, aby odnieść się do dwóch ostatnich uwag - postaram się poprawić odpowiedź i podać źródła, po
ponownym sprawdzeniu
1
Jest teraz prawie poprawny, ale jaki jest powód przypuszczenia, że ​​wielkość przestrzeni jądra jest nieistotna? Weź dowolny zestaw danych, uruchom SVM z jądrem RBF i C-> inf, a źle się dopasujesz. To nie jest takie proste. Liczba wymiarów w przestrzeni cech jest istotna , ale można ją kontrolować za pomocą C (jako górnej granicy mnożników Lagrange'a). W szczególności - wymiar VC dla SVM z RBF jest nieskończonością, a ograniczenie związane z generalizacją (Vapnika) jest bezużyteczne (Radamacher może działać, ale to zupełnie inna historia).
lejlot
1
@lejlot Podałem jeszcze inne odniesienie - wyraźnie określają granicę dla miękkiego marginesu i nie zależy to od liczby wymiarów.
BartoszKP
6

Postaram się udzielić nietechnicznej odpowiedzi na twoje pytanie.

Rzeczywiście, liniowa powinna być preferowana i powinna być pierwszym wyborem z powodów, o których wspominasz, czasu szkolenia, skalowalności, a także łatwości interpretacji ostatecznego modelu, wyboru pracy na pierwotnej lub podwójnej, większej tolerancji na przeregulowanie itp.

Jeśli model liniowy nie zapewnia zadowalającej wydajności, możesz wypróbować rozwiązania nieliniowe. Niektóre kompromisy do rozważenia obejmują:

  • wybór jądra. Nie jest to oczywiste, zwykle musisz przetestować różne opcje
  • istnieje niebezpieczeństwo przeregulowania zestawu treningowego. W rzeczywistości dość łatwo można go założyć, jeśli chcesz. Aby uniknąć nadmiernego dopasowania, potrzebujesz silniejszych ram oceny (musisz zmierzyć wariancję / stabilność wydajności na niewidzialnych danych) i potrzebujesz wystarczającej ilości danych, aby móc dokonać właściwego wyboru modelu
  • pracujesz na dualnym, a zatem nie możesz zinterpretować ostatecznego modelu, tzn. nie możesz twierdzić, że funkcja X jest ważniejsza niż funkcja Y itp.
  • czas szkolenia wydłuża się wraz z ilością danych (mniej z liczbą funkcji, ponieważ jest to podwójna)
iliasfl
źródło
Jest to interesujący wgląd w „pracę z podwójnym”, co prowadzi do niemożności ubiegania się o ważność funkcji. Czy miałbyś jakieś odniesienia do materiałów wyjaśniających dalej?
javadba,