Могут ли случайные леса справиться с MNIST намного лучше, чем ошибка тестирования 2,8%?

10

Я не нашел никакой литературы по применению случайных лесов к 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% -ную ошибку теста.

MaxB
источник
5
помните, что случайный лес принимает переменную решения 1 (т.е. пиксель) за раз. Так что это не очень хорошо для обработки изображений -raw. Вам лучше сначала использовать какую-то предварительную обработку (например, PCA и т. Д.) Для разработки более значимых переменных решения
seanv507
Именно то, что сказал seanv507. В OpenCV есть много функций для извлечения объектов, которые могут обнаружить довольно полезные объясняющие переменные для случайного леса для работы.
JEquihua
3
Я думал, что общее согласие заключалось в том, что случайные леса обычно, по крайней мере, так же хороши, как ядра SVM . Там нет такого консенсуса.
Марк Клазен

Ответы:

15

Можно ли сделать гораздо лучше, чем 2,8% ошибок теста на MNIST с использованием случайных лесов?

Вероятно, да. Но это не значит, что вы будете использовать те же функции, которые вы получаете по умолчанию. Деревья решений в целом плохо работают с такими проблемами большого размера, как вы, так как вы разделяете только один элемент за раз. Случайный лес расширяет полезность деревьев решений, но они все еще имеют ту же проблему. Вероятно, для победы над 2,8% с помощью RF вам потребуется выполнить предварительную обработку некоторых функций и превратить их в более полезное подмножество.

Нейронные сети и ядра SVM неявно выполняют преобразование / разработку некоторых функций. Так что в некотором смысле впечатляет то, что Random Forest довольно прилично сближается без какой-либо дополнительной работы (действительно, настоящая причина, по которой RF стала популярной, в том, что было глупо легко получить «достаточно хорошие» результаты).

Я думал, что общее согласие заключалось в том, что случайные леса обычно, по крайней мере, так же хороши, как ядра SVM

Там нет такого консенсуса. Они часто имеют схожие результаты с точки зрения точности, но это очень разные алгоритмы с разными сильными и слабыми сторонами. По многим проблемам там точность одинакова, по другим SVM выигрывают с хорошим отрывом, по некоторым РФ выигрывает с хорошим отрывом.

Raff.Edward
источник