Jestem początkującym, jeśli chodzi o obsługę maszyn wektorowych. Czy istnieją jakieś wytyczne, które mówią, które jądro (np. Liniowe, wielomianowe) najlepiej nadaje się do określonego problemu? W moim przypadku muszę klasyfikować strony internetowe według tego, czy zawierają one określone informacje, czy nie, tj. Mam problem z klasyfikacją binarną.
Czy możesz ogólnie powiedzieć, które jądro najlepiej nadaje się do tego zadania? Czy też muszę wypróbować kilka z nich w moim konkretnym zestawie danych, aby znaleźć najlepszy? Nawiasem mówiąc, używam scikit-learn biblioteki Python, która korzysta z biblioteki libSVM.
classification
svm
model-selection
libsvm
kernel-trick
pemistahl
źródło
źródło
Odpowiedzi:
Rzeczywiście trafiłeś na coś otwartego w literaturze. Jak mówisz, istnieje wiele różnych jąder (np. Liniowa, radialna funkcja podstawowa, sigmoid, wielomian) i wykonasz zadanie klasyfikacji w przestrzeni zdefiniowanej przez ich odpowiednie równania. O ile mi wiadomo, nikt ostatecznie nie wykazał, że jedno jądro zawsze najlepiej radzi sobie z jednym rodzajem zadania klasyfikacji tekstu w porównaniu do drugiego.
Jedną rzeczą do rozważenia jest to, że każda funkcja jądra ma 1 lub więcej parametrów, które będą musiały zostać zoptymalizowane dla twojego zestawu danych, co oznacza, że jeśli robisz to poprawnie, powinieneś mieć drugą kolekcję treningową, na której możesz sprawdź najlepsze wartości dla tych parametrów. (Mówię drugą kolekcję wstrzymującą, ponieważ powinieneś już mieć taką, której używasz, aby dowiedzieć się, jakie najlepsze funkcje wejściowe dla twojego klasyfikatora.) Przeprowadziłem już pewien eksperyment, w którym przeprowadziłem optymalizację na dużą skalę każdego z te parametry dla prostego zadania klasyfikacji tekstowej wykazały, że każde jądro wydawało się działać całkiem dobrze, ale zrobiło to w różnych konfiguracjach. Jeśli dobrze pamiętam moje wyniki, sigmoid działał najlepiej, ale robił to z bardzo szczegółowymi tuningami parametrów - tymi, których znalezienie zajęło mi ponad miesiąc.
źródło
Wypróbuj jądro Gaussa.
Jądro gaussowskie jest często wypróbowywane jako pierwsze i okazuje się być najlepszym jądrem w wielu aplikacjach (również z funkcjami worek słów). Powinieneś także spróbować jądra liniowego. Nie oczekuj, że przyniesie dobre wyniki, problemy z klasyfikacją tekstu są zwykle nieliniowe. Daje to jednak poczucie danych i możesz cieszyć się, jak bardzo nieliniowość poprawia wyniki.
Upewnij się, że poprawnie sprawdziłeś poprawność szerokości jądra i pomyśl o tym, jak chcesz znormalizować swoje funkcje (tf-idf itp.).
Powiedziałbym, że możesz poprawić swoje wyniki dzięki lepszej normalizacji funkcji bardziej niż poprzez wybranie innego jądra (tj. Nie Gaussa).
źródło