Spróbuję odpowiedzieć na to pytanie, łącząc opublikowane dowody, osobiste doświadczenia i spekulacje.
A) Opublikowane dowody.
Jedyny znany mi artykuł, który pomaga odpowiedzieć na to pytanie, to Delgado i in. 2014 - Czy potrzebujemy setek klasyfikatorów, aby rozwiązać rzeczywiste problemy klasyfikacyjne? - JMLR, który uruchamia setki różnych algorytmów i implementacji na 121 zestawach danych z UCI. Stwierdzają, że chociaż RBF SVM nie jest „najlepszym” algorytmem (to losowe lasy, jeśli dobrze pamiętam), należy do pierwszej 3 (lub 5).
Jeśli uważasz, że ich wybór zestawów danych jest „dobrą próbką” problemów w świecie rzeczywistym, to SVM jest zdecydowanie algorytmem, który należy wypróbować w przypadku nowych problemów, ale najpierw należy wypróbować losowy las!
Ograniczenia w uogólnianiu tego wyniku są takie, że zbiory danych są prawie wszystkie wysokie i chude (n >> p), niezbyt rzadkie - co, jak przypuszczam, powinno być większym problemem dla RF, i niezbyt dużym (zarówno n, jak i p).
Wreszcie, wciąż na podstawie opublikowanych dowodów, polecam dwa witryny, które porównują różne wdrożenia losowych lasów:
B) Doświadczenie osobiste.
Uważam, że artykuły takie jak Delgado i inne są bardzo ważne dla społeczności uczącej się maszynowo, więc próbowałem powtórzyć ich wyniki w różnych warunkach. Uruchomiłem około 15 różnych algorytmów na ponad 100 binarnych zestawach danych (z zestawu danych Delgado). Myślę też, że bardziej ostrożnie wybrałem hiperparametry niż one.
Moje wyniki są takie, że SVM był „najlepszym algorytmem” (średnia ranga 4,9). Uważam, że SVM przeszedł RF, ponieważ oryginalny zestaw danych zawierał wiele problemów wieloklasowych - które omówię w części spekulacyjnej - powinien stanowić problem dla SVM.
EDYCJA (16 czerwca):
Ale RF jest o wiele szybszy i był drugim najlepszym algorytmem (średnia ranga 5,6), a następnie gbm (5,8), sieci (7,2) i tak dalej). Nie próbowałem standardowej regresji logistycznej w tych problemach, ale próbowałem elastycznej sieci (L1 i L2 regulowana LR), ale nie działała ona dobrze (średnia ranga 8,3) ~
Nie skończyłem jeszcze analizować wyników ani pisać artykułu, więc nie mogę nawet wskazać raportu technicznego z wynikami. Mam nadzieję, że za kilka tygodni mogę ponownie edytować tę odpowiedź i wskazać raport techniczny z wynikami.
Artykuł jest dostępny na stronie http://arxiv.org/abs/1606.00930 Okazuje się, że po pełnej analizie RF i SVM są prawie równoważne pod względem oczekiwanego poziomu błędu, a SVM jest najszybszy (ku mojemu zaskoczeniu !!). Nie jestem już tak zdecydowany w polecaniu RF (z powodu prędkości).
Moje osobiste doświadczenie jest takie, że chociaż SVM może zapewnić ci dodatkową dokładność, prawie zawsze lepiej jest użyć RF.
Również w przypadku większych problemów może być niemożliwe użycie wsadowego solwera SVM (nigdy nie korzystałem z internetowego solwera SVM, takiego jak LASVM lub inne).
Wreszcie zastosowałem regresję logistyczną tylko w jednej sytuacji. Pracowałem nad „intensywną” inżynierią funkcji nad problemem związanym z klasyfikacją obrazu (na przykład - łączenie dwóch różnych opisów obrazu i wymiarowość opisów). I użyłem regresji logistycznej, aby wybrać spośród wielu alternatyw (ponieważ w LR nie ma wyszukiwania hiperparametrów). Po ustaleniu najlepszych funkcji (zgodnie z LR) zastosowaliśmy RF (wybierając najlepsze hiperparametry), aby uzyskać ostateczny klasyfikator.
C) Spekulacja
Nigdy poważnie nie pracowałem nad problemami wieloklasowymi, ale mam wrażenie, że SVM nie są dla nich tak dobre. Problemem nie jest problem pomiędzy rozwiązaniami jeden na jednego lub jeden na wszystkich, ale to, że wszystkie implementacje, które znam, będą używać tych samych hiperparametrów dla wszystkich klasyfikatorów (OVO lub OVA). Wybór prawidłowych hiperparametrów dla SVM jest tak kosztowny, że żadna z dostępnych implementacji, które znam, nie będzie szukała poszczególnych klasyfikatorów. Spekuluję, że jest to problem dla SVM (ale nie problem dla RF !!).
Z drugiej strony, w przypadku problemów z wieloklasami poszedłbym prosto do RF.
Nie mam wystarczających uprawnień, aby móc pisać komentarze, dlatego przedstawię tu swoje uwagi / uwagi jako odpowiedź.
Z mojego doświadczenia wynika, że klasyfikatory wektorów wsparcia (SVC) są na równi lub przewyższają inne metody, gdy klasy binarne są zrównoważone. W przypadku klas niezrównoważonych SVC ma słabą wydajność.
Często nie radzę sobie z problemami wieloklasowymi, ale widziałem również dobre wyniki w SVC w przypadku problemów wieloklasowych.
Inną rzeczą, którą zauważyłem, jest to, że klątwa celowości nie wydaje się wpływać na SVC tak bardzo, jak inne techniki modelowania. Innymi słowy, gdy dodam więcej terminów w modelu, inne techniki zaczynają słabo działać na zestawie testowym (lub wstrzymującym) w porównaniu do zestawu treningowego. Ale nie tak bardzo, kiedy używam SVC. Z tego powodu, jeśli modelowe parsimony nie jest twoim priorytetem, SVC może być lepszą opcją, ponieważ możesz wrzucić wiele terminów bez zbytniego dopasowania do innych metod.
Jednym z problemów, które mam z SVC, jest to, że nie zapewnia ono domyślnie miary (takiej jak przewidywane prawdopodobieństwo), aby móc uporządkować obserwacje w kolejności. Możesz użyć skalowania Platta (zaimplementowanego w pakiecie sklearn.svm w Pythonie), ale zauważyłem pewne niespójności. (Mogę udostępnić szczegóły, jeśli ktoś jest zainteresowany.)
Nie jestem pewien, czy to naprawdę odpowiada na twoje pytanie, ale to są moje spostrzeżenia. Mam nadzieję, że to pomaga.
źródło
RFM i (RBF) SVM mają za sobą różne teorie, ale zakładając, że masz wystarczającą ilość danych, działają one podobnie dobrze. Oboje mogą nauczyć się złożonych funkcji i dobrze radzić sobie z hałaśliwymi i nieinformacyjnymi zmiennymi i wartościami odstającymi.
Jeśli próbujesz uzyskać najlepsze wyniki dla czegoś takiego jak kaggle, i tak zestawisz wiele modeli, w tym RF i SVM.
W ustawieniach bez kłopotów możesz zastanowić się, jak trudno jest wdrożyć model, wprowadzić go do produkcji, dokonać prognozy, zinterpretować, wyjaśnić kierownikowi itp.
SVM (liniowy lub wysoce uregulowany RBF) byłby zdecydowanie preferowany, jeśli masz małą ilość danych lub masz do czynienia z przebiegiem wymiarowym. Jest tego kilka powodów, jednym z nich jest to, że lepiej szukać hiperpłaszczyzny o maksymalnym marginesie zamiast serii najlepszych podziałów na twoich cechach, a także zwykle nie ma potrzeby złożonej granicy, ponieważ w przestrzeni o dużych wymiarach będzie jakaś hiperpłaszczyzna, która i tak może oddzielić dane. Innym problemem jest to, że RF jest trudniejszy do dostrojenia (ma więcej parametrów do dostrojenia), więc potrzebujesz więcej danych.
Inna myśl, krzyżowa walidacja może być bardzo tania i szybka dla SVM, szczególnie LOOCV. Ponieważ tylko kilka próbek jest wektorami pomocniczymi (nie zawsze), nie trzeba przekwalifikowywać klasyfikatora przy każdym foldowaniu, ale tylko wtedy, gdy dane, które są teraz w zestawie testowym, były wcześniej wektorami pomocniczymi. Może to również ułatwić naukę online.
Przechowywanie wektorów pomocniczych może być tańsze niż pełne drzewa.
Często lepiej jest stworzyć model probabilistyczny niż klasyfikator. Więc najpierw wykonaj model, a później decyzję. W takim przypadku preferowana będzie regresja logistyczna. Nadal możesz używać jąder i regularyzacji, aby działały tak, jak chcesz. Ponadto nie będziesz używać RF do odpowiedzi na pytania takie jak: poprawianie wieku, stylu życia, płci i wykształcenia, czy picie alkoholu zwiększa ryzyko zaatakowania zawału serca?
Niektóre dodatkowe zasoby, które uznałem za interesujące: https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/
źródło