Я не нашел никакой литературы по применению случайных лесов к MNIST, CIFAR, STL-10 и т. Д., Поэтому я решил попробовать их с MNIST, не зависящим от перестановок .
В R я попробовал:
randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)
Это работало в течение 2 часов и получило 2,8% ошибок теста.
Я также пытался научиться , с
RandomForestClassifier(n_estimators=2000,
max_features="auto",
max_depth=None)
Через 70 минут я получил тестовую ошибку 2,9%, но с n_estimators = 200 вместо этого я получил тестовую ошибку 2,8% уже через 7 минут.
С OpenCV я пробовал
rf.train(images.reshape(-1, 28**2),
cv2.CV_ROW_SAMPLE,
labels.astype('int'))
Это длилось 6,5 минут, и использование rf
для прогнозирования дало ошибку теста 15%. Я не знаю, сколько деревьев он обучил, так как их привязка Python для Random Forests, кажется, игнорирует params
аргумент, по крайней мере в версии 2.3.1. Я также не мог понять, как объяснить OpenCV, что я хочу решить проблему классификации, а не регрессии - у меня есть сомнения, потому что замена astype('int')
на astype('float32')
дает тот же результат.
В нейронных сетях для теста MNIST с неизменяемой перестановкой уровень техники составляет 0,8% ошибок тестирования, хотя обучение, вероятно, займет более 2 часов на одном процессоре.
Можно ли сделать гораздо лучше, чем 2,8% ошибок теста на MNIST с использованием случайных лесов? Я считал, что общее мнение заключается в том, что случайные леса обычно, по крайней мере, так же хороши, как SVM ядра, что, как я полагаю, может дать 1,4% -ную ошибку теста.