Я не нашел никакой литературы по применению случайных лесов к 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% -ную ошибку теста.
Ответы:
Вероятно, да. Но это не значит, что вы будете использовать те же функции, которые вы получаете по умолчанию. Деревья решений в целом плохо работают с такими проблемами большого размера, как вы, так как вы разделяете только один элемент за раз. Случайный лес расширяет полезность деревьев решений, но они все еще имеют ту же проблему. Вероятно, для победы над 2,8% с помощью RF вам потребуется выполнить предварительную обработку некоторых функций и превратить их в более полезное подмножество.
Нейронные сети и ядра SVM неявно выполняют преобразование / разработку некоторых функций. Так что в некотором смысле впечатляет то, что Random Forest довольно прилично сближается без какой-либо дополнительной работы (действительно, настоящая причина, по которой RF стала популярной, в том, что было глупо легко получить «достаточно хорошие» результаты).
Там нет такого консенсуса. Они часто имеют схожие результаты с точки зрения точности, но это очень разные алгоритмы с разными сильными и слабыми сторонами. По многим проблемам там точность одинакова, по другим SVM выигрывают с хорошим отрывом, по некоторым РФ выигрывает с хорошим отрывом.
источник