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)?
r
machine-learning
classification
cart
Tal Galili
źródło
źródło
Odpowiedzi:
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 ,
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
źródło
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:
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!
źródło
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/
źródło
kernlab
sięe1071
.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!).
źródło
Warto spojrzeć na klasyfikatory Naive Bayes . W R możesz przeprowadzić klasyfikację Naive Bayes w pakietach e1071 i klaR .
źródło