Którego jądra SVM należy użyć do problemu klasyfikacji binarnej?


9

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.


jak reprezentujesz swoje strony internetowe? worek słów? Wybór jądra zależy od podobieństwa, jakie chcesz w swoim obszarze wejściowym.
Memming

@Memming Tak, używam reprezentacji worków słów. Co dokładnie rozumiesz przez miarę podobieństwa? Sprawdzam, czy strona zawiera określone informacje, czy nie.
pemistahl

Ten poradnik może ci się przydać, jeśli go jeszcze nie sprawdziłeś ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). Libsvm ma wbudowany schemat k-fold cross-validation do wyboru między modelami i parametrami modelu.
Zoran

@PeterStahl Ponadto zależy to od tego, jakiego rodzaju granic klas oczekujesz. Nie mam doświadczenia z przestrzenią worków słów, więc nie mogę ci pomóc.
Memming

Odpowiedzi:


10

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.


Dziękuję bardzo za twoje przemyślenia. Przepraszam za spóźnioną reakcję. Piszę moją pracę magisterską, dla której muszę ocenić wyniki dla kilku klasyfikatorów, nie tylko SVM. Niestety nie mam czasu na testowanie wielu kombinacji parametrów. Dlatego prawdopodobnie będę trzymać się liniowego jądra.
pemistahl

Powodzenia! Myślę, że to dobry telefon.
Kyle.

7

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).

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.