Czy losowe lasy mogą zrobić znacznie lepiej niż błąd testowy 2,8% na MNIST?

10

Nie znalazłem żadnej literatury na temat zastosowania Losowych Lasów do MNIST, CIFAR, STL-10 itp., Więc pomyślałem, że sam spróbuję ich z MNIST niezmienniczymi permutacjami.

W R próbowałem:

randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)

Trwało to 2 godziny i wystąpił błąd testu 2,8%.

Próbowałem też scikit-learn , z

RandomForestClassifier(n_estimators=2000,
                       max_features="auto", 
                       max_depth=None)

Po 70 minutach otrzymałem błąd testowy 2,9%, ale zamiast n_estimators = 200, otrzymałem błąd testowy 2,8% już po 7 minutach.

Z OpenCV próbowałem

rf.train(images.reshape(-1, 28**2), 
         cv2.CV_ROW_SAMPLE, 
         labels.astype('int'))

Trwało to 6,5 minuty, a użycie rfdo prognozowania dało błąd testowy 15%. Nie wiem, ile drzew wyszkolił, ponieważ ich powiązanie w Pythonie dla Losowych Lasów wydaje się ignorować paramsargument, przynajmniej w wersji 2.3.1. Nie mogłem też wymyślić, jak wyjaśnić OpenCV, że chcę rozwiązać problem klasyfikacji, a nie regresję - mam wątpliwości, ponieważ zastąpienie astype('int')go astype('float32')daje ten sam rezultat.

W sieciach neuronowych , dla testu niezmienniczego permutacji MNIST, aktualny stan techniki wynosi 0,8% błędu testowego, chociaż szkolenie prawdopodobnie zająłoby więcej niż 2 godziny na jednym procesorze.

Czy można zrobić znacznie lepiej niż błąd testu 2,8% na MNIST przy użyciu Losowych lasów? Myślałem, że ogólny konsensus jest taki, że Lasy Losowe są zwykle co najmniej tak dobre, jak SVM jądra, które, jak sądzę, mogą otrzymać błąd testowy 1,4%.

MaxB
źródło
5
pamiętaj, że losowy las podejmuje jednocześnie decyzję 1 (piksel). Więc to nie jest bardzo dobre do przetwarzania obrazu -raw. Lepiej najpierw skorzystaj z pewnego rodzaju przetwarzania wstępnego (np. PCA itp.), Aby opracować bardziej znaczące zmienne decyzyjne
seanv507
Dokładnie to, co powiedział seanv507. OpenCV ma wiele funkcji do wyodrębniania funkcji, które mogą wykryć całkiem przydatne zmienne objaśniające do pracy z losowym lasem.
JEquihua,
3
Myślałem, że ogólny konsensus był taki, że Lasy Losowe są zwykle co najmniej tak dobre, jak SVM jądra . Nie ma takiego konsensusu.
Marc Claesen

Odpowiedzi:

15

Czy można zrobić znacznie lepiej niż błąd testu 2,8% na MNIST przy użyciu Losowych lasów?

Prawdopodobnie tak. Ale to nie znaczy, że będziesz używać tych samych funkcji, które otrzymujesz domyślnie. Drzewa decyzyjne na ogół nie działają dobrze w przypadku takich problemów o dużych wymiarach, ponieważ dzielisz tylko jedną funkcję na raz. Losowy las zwiększa użyteczność drzew decyzyjnych, ale wciąż mają ten sam problem. Pokonanie RF o 2,8% prawdopodobnie będzie wymagać wstępnego przetworzenia funkcji i przekształcenia funkcji w bardziej użyteczny podzbiór.

Sieci neuronowe i maszyny SVM jądra domyślnie dokonują transformacji / inżynierii cech. Tak więc w pewnym sensie imponujące jest to, że Losowy Las zbliża się przyzwoicie bez dodatkowej pracy (rzeczywiście prawdziwym powodem popularności RF było to, że głupio łatwo było uzyskać „wystarczająco dobre” wyniki).

Myślałem, że ogólny konsensus był taki, że Lasy Losowe są zwykle co najmniej tak dobre, jak SVM jądra

Nie ma takiego konsensusu. Często mają podobne wyniki pod względem dokładności - ale są to bardzo różne algorytmy o różnych mocnych / słabych stronach. W wielu problemach dokładności są podobne, w innych SVM wygrywa z dobrym marginesem, w niektórych RF wygrywa z dobrym marginesem.

Raff.Edward
źródło