Alternatywy dla drzew klasyfikacyjnych, z lepszymi wynikami predykcyjnymi (np .: CV)?

23

Szukam alternatywy dla drzew klasyfikacyjnych, które mogłyby zapewnić lepszą moc predykcyjną.

Dane, z którymi mam do czynienia, mają czynniki zarówno dla zmiennych objaśniających, jak i wyjaśnianych.

Pamiętam, że w tym kontekście natknąłem się na losowe lasy i sieci neuronowe, chociaż nigdy wcześniej ich nie próbowałem, czy jest jeszcze inny dobry kandydat na takie zadanie modelowania (oczywiście w R)?

Tal Galili
źródło
5
Nie przejmuj się sieciami neuronowymi, jest to przestarzała technologia.
1
@mbq czy nadal podtrzymujesz to oświadczenie?
rhombidodecahedron
@rhombidodecahedron Pewnie, zagraj z NN od 2010 roku, a się zgodzisz. Poza tym wątpię, aby jakikolwiek model DL przyniósłby coś do tabeli z danymi (przypuszczalnie) tak małego rozmiaru.

Odpowiedzi:

25

Myślę, że warto spróbować Random Forests ( randomForest ); w odpowiedzi na powiązane pytania podano kilka odniesień: wybór funkcji dla „ostatecznego” modelu podczas przeprowadzania walidacji krzyżowej w uczeniu maszynowym ; Czy modele CART mogą być solidne? . Zwiększanie / pakowanie czyni je bardziej stabilnymi niż pojedynczy KOSZYK, o którym wiadomo, że jest bardzo wrażliwy na małe zaburzenia. Niektórzy autorzy twierdzili, że działał on równie dobrze jak karane SVM lub Gradient Boosting Machines (patrz np. Cutler i in., 2009). Myślę, że z pewnością przewyższają NN.

Boulesteix i Strobl zapewniają ładny przegląd kilku klasyfikatorów w doborze optymalnego klasyfikatora i ujemne odchylenie w szacowaniu poziomu błędu: badanie empiryczne dotyczące prognozowania wielowymiarowego (BMC MRM 2009 9: 85). Słyszałem o innym dobrym badaniu na spotkaniu IV EAM , które powinno zostać poddane przeglądowi w Statistics in Medicine ,

João Maroco , Dina Silva, Manuela Guerreiro, Alexandre de Mendonça. Czy losowe lasy przewyższają sieci neuronowe, obsługują maszyny wektorowe i klasyfikatory analizy dyskryminacyjnej? Studium przypadku dotyczące ewolucji otępienia u starszych pacjentów z dolegliwościami poznawczymi

Podoba mi się również pakiet caret : jest dobrze udokumentowany i pozwala porównać dokładność predykcyjną różnych klasyfikatorów na tym samym zbiorze danych. Dba o zarządzanie próbkami szkoleniowymi / testowymi, dokładnością obliczeniową itp. W kilku przyjaznych dla użytkownika funkcjach.

Glmnet pakiet, od Friedmana i kol., Narzędzia karane GLM (patrz przegląd w Journal of Statistical Software ), więc pozostaje w znanym ramach modelowania.

W przeciwnym razie możesz także poszukać klasyfikatorów opartych na regułach asocjacji (zobacz Widok zadań CRAN na uczenie maszynowe lub 10 najlepszych algorytmów w eksploracji danych, aby uzyskać łagodne wprowadzenie do niektórych z nich).

Chciałbym wspomnieć o innym interesującym podejściu, które planuję ponownie wdrożyć w języku R (w rzeczywistości jest to kod Matlab), którym jest analiza dyskryminacyjnej korespondencji Hervé Abdiego. Chociaż początkowo opracowano go, aby poradzić sobie z badaniami na małej próbie z wieloma zmiennymi objaśniającymi (ostatecznie pogrupowanymi w spójne bloki), wydaje się, że skutecznie łączy klasyczne DA z technikami redukcji danych.

Referencje

  1. Cutler, A., Cutler, DR i Stevens, JR (2009). Metody oparte na drzewach , w wysokowymiarowej analizie danych w Cancer Research , Li, X. i Xu, R. (red.), Str. 83-101, Springer.
  2. Saeys, Y., Inza, I. i Larrañaga, P. (2007). Przegląd technik wyboru funkcji w bioinformatyce . Bioinformatics, 23 (19): 2507-2517.
chl
źródło
2
+1 Świetna odpowiedź. Zgadzam się również z zaleceniem dotyczącym opieki.
Shane,
12

Należy pamiętać, że nie ma jednego algorytmu, który byłby zawsze lepszy od innych. Jak stwierdzili Wolpert i Macready, „dowolne dwa algorytmy są równoważne, gdy ich wydajność jest uśredniana dla wszystkich możliwych problemów”. (Szczegóły w Wikipedii .)

W przypadku danej aplikacji „najlepsza” to na ogół taka, która jest najbardziej dopasowana do aplikacji pod względem przyjętych założeń, rodzajów danych, które może obsłużyć, hipotez, które może reprezentować itd.

Warto więc scharakteryzować swoje dane według takich kryteriów, jak:

  • Czy mam bardzo duży zestaw danych lub skromny?
  • Czy wymiarowość jest wysoka?
  • Czy zmienne są numeryczne (ciągłe / dyskretne) lub symboliczne, czy też mieszane i / lub czy można je w razie potrzeby przekształcić?
  • Czy zmienne mogą być w dużej mierze niezależne lub całkowicie zależne?
  • Czy mogą występować zbędne, hałaśliwe lub nieistotne zmienne?
  • Czy chcę móc sprawdzić wygenerowany model i spróbować go zrozumieć?

Odpowiadając na nie, możesz wyeliminować niektóre algorytmy i zidentyfikować inne jako potencjalnie istotne, a następnie może skończyć z małym zestawem metod kandydujących, które inteligentnie wybrałeś jako przydatne.

Przepraszam, że nie udzielam ci prostej odpowiedzi, ale mam nadzieję, że to jednak pomoże!

Bufor irlandzki
źródło
2
+1 Uwielbiam cytat. („dowolne dwa algorytmy są równoważne, gdy ich wydajność jest uśredniana dla wszystkich możliwych problemów.”)
Assad Ebrahim
8

W przypadku klasyfikacji wieloklasowej dobrym wyborem są również maszyny wektorów nośnych. Zazwyczaj używam do tego pakietu kernlab R.

Dobra dyskusja znajduje się w następującym dokumencie JSS: http://www.jstatsoft.org/v15/i09/

Shane
źródło
@Tal Oto rzetelny (lub tak mi się wydaje) przegląd SVM vs. RF: Kompleksowe porównanie losowych lasów i maszyn wektorów pomocniczych do klasyfikacji raka na podstawie mikromacierzy, j.mp/ab7U8V . Ja też wolę kernlabsię e1071.
chl
2
@chl Nie podoba mi się ten artykuł, który powstał z perspektywy uczenia się SVM - wykonanie jednego powtórzenia algorytmu stochastycznego (RF) to tylko śmieci; także załącznik 2 pokazuje, jak źle może być zastosować przepływ pracy SVM do RF. Zgadzam się jednak, że prawie zawsze SVM może zostać dostrojony, aby przewyższać RF z powodu sztuczki jądra (której zwykły RF nie ma, podczas gdy nie oznacza to, że ogólnie nie może go mieć), ale z wykładniczo rosnącym wysiłkiem optymalizacyjnym.
@mbq Rzeczywiście, to dobra uwaga.
chl
3

Jak już wspomniano, Losowe Lasy są naturalnym „ulepszeniem”, a obecnie SVM są ogólnie zalecaną techniką do użycia.

Chcę dodać, że częściej niż przejście na SVM daje bardzo rozczarowujące wyniki. Chodzi o to, że chociaż techniki takie jak losowe drzewa są prawie banalne w użyciu, SVM są nieco trudniejsze.

Znalazłem ten papier bezcenny, gdy pierwszy raz użyłem SVM (Praktyczny przewodnik po obsłudze wektorowej klasyfikacji) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

W wersji R można użyć pakietu e1071 dla SVM, który łączy się ze de facto standardową biblioteką libSVM (przynajmniej w wolnym oprogramowaniu!).

Dr G.
źródło
2
kernlab używa również libsvm do optymalizacji, więc nie ma dużej różnicy w tym sensie (chociaż jest znacznie bardziej elastyczny).
Shane,