Я не знайшов жодної літератури щодо застосування випадкових лісів до MNIST, CIFAR, STL-10 тощо. Тому я подумав, що спробував би їх з інваріантним перестановкою MNIST.
У R я спробував:
randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)
Це тривало протягом 2 годин і отримало 2,8% тестової помилки.
Я також спробував scikit-learn , с
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 для випадкових лісів ігнорує цей params
аргумент, принаймні у версії 2.3.1. Я також не міг зрозуміти, як дати зрозуміти OpenCV, що я хочу вирішити проблему класифікації, а не регресію - я маю сумніви, тому що заміна astype('int')
на astype('float32')
дає такий же результат.
У нейромережах для еталону інваріантної перестановки MNIST найсучаснішим є похибка тесту на 0,8%, хоча навчання, можливо, займе більше 2 годин на одному процесорі.
Чи можна зробити набагато краще, ніж 2,8% тестової помилки на MNIST за допомогою випадкових лісів? Я подумав, що загальний консенсус полягав у тому, що випадкові ліси зазвичай принаймні такі ж хороші, як і SVM ядра, які, на мою думку, можуть отримати помилку тесту на 1,4%.