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 rf
do 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ć params
argument, 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%.