Ogólne podejście do wyboru optymalnego jądra (albo rodzaju jądra, albo parametrów jądra) w dowolnej metodzie opartej na jądrze to sprawdzanie poprawności krzyżowej. Zobacz tutaj omówienie wyboru jądra dla maszyn wektorów wsparcia: Jak wybrać jądro dla SVM?
Pomysł weryfikacji krzyżowej polega na tym, że pomijamy niektóre dane „testowe”, uruchamiamy nasz algorytm, aby dopasować model do pozostałych danych „szkoleniowych”, a następnie sprawdzamy, jak dobrze model wynikowy opisuje dane testowe (i jak duży jest błąd jest). Jest to powtarzane dla różnych pominiętych danych, błędy są uśredniane w celu utworzenia średniego błędu zweryfikowanego krzyżowo, a następnie można porównywać różne algorytmy, aby wybrać ten, który daje najmniejszy błąd. W SVM można wykorzystać np. Dokładność klasyfikacji (lub powiązane miary) jako miarę wydajności modelu. Następnie należy wybrać jądro, które daje najlepszą klasyfikację danych testowych.
Powstaje zatem pytanie: jakiej miary wydajności modelu można użyć w kPCA? Jeśli chcesz osiągnąć „dobrą separację danych” (przypuszczalnie dobrą separację klas), możesz w jakiś sposób zmierzyć to na danych szkoleniowych i użyć tego, aby znaleźć najlepsze jądro. Należy jednak pamiętać, że PCA / kPCA nie są zaprojektowane w celu uzyskania dobrego oddzielenia danych (oni nie biorą pod uwagę klasy etykiety w ogóle ). Mówiąc ogólnie, ktoś chciałby innej, niezwiązanej z klasą, miary wydajności modelu.
W standardowym PCA można użyć błędu rekonstrukcji jako miary wydajności zestawu testowego. W jądrze PCA można również obliczyć błąd rekonstrukcji, ale problem polega na tym, że nie jest on porównywalny między różnymi jądrami: błąd rekonstrukcji to odległość zmierzona w docelowej przestrzeni cech; a różne jądra odpowiadają różnym obszarom docelowym ... Mamy więc problem.
Jednym ze sposobów rozwiązania tego problemu jest jakoś obliczenie błędu rekonstrukcji w pierwotnej przestrzeni, a nie w przestrzeni docelowej. Oczywiście opuszczony punkt danych testowych znajduje się w pierwotnej przestrzeni. Ale jego rekonstrukcja kPCA żyje w [pod-wymiarowej podprzestrzeni] przestrzeni docelowej. Można jednak znaleźć punkt („obraz wstępny”) w pierwotnej przestrzeni, który byłby zmapowany jak najbliżej tego punktu rekonstrukcji, a następnie zmierzyć odległość między punktem testowym a tym obrazem wstępnym jako błąd rekonstrukcji.
Nie podam tutaj wszystkich wzorów, ale odsyłam do niektórych artykułów i wstawiam tylko kilka cyfr.
Idea „obrazu wstępnego” w kPCA została najwyraźniej wprowadzona w tym dokumencie:
- Mika, S., Schölkopf, B., Smola, AJ, Müller, KR, Scholz, M., i Rätsch, G. (1998). Jądro PCA i usuwanie szumów w przestrzeniach funkcji . W NIPS (t. 11, str. 536-542).
Mika i in. nie przeprowadzają weryfikacji krzyżowej, ale potrzebują obrazów wstępnych do celów usuwania szumów, patrz ten rysunek:
Wyprostowane (grube) punkty to wstępne obrazy projekcji kPCA (tutaj nie ma testu ani szkolenia). Znalezienie tych obrazów wstępnych nie jest trywialnym zadaniem: należy użyć opadania gradientu, a funkcja utraty zależy od jądra.
Oto najnowszy artykuł, w którym wykorzystano wstępne obrazy do celów weryfikacji krzyżowej i wyboru jądra / hiperparametrów:
Oto ich algorytm:
A oto kilka wyników (które moim zdaniem są dość oczywiste):