Ich habe keine Literatur zur Anwendung von Random Forests auf MNIST, CIFAR, STL-10 usw. gefunden, daher dachte ich, ich würde sie selbst mit dem permutationsinvarianten MNIST ausprobieren.
In R habe ich versucht:
randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)
Dies lief 2 Stunden und ergab einen Testfehler von 2,8%.
Ich habe auch versucht , mit Scikit zu lernen
RandomForestClassifier(n_estimators=2000,
max_features="auto",
max_depth=None)
Nach 70 Minuten bekam ich einen Testfehler von 2,9%, aber mit n_estimators = 200 bekam ich nach nur 7 Minuten einen Testfehler von 2,8%.
Mit OpenCV habe ich es versucht
rf.train(images.reshape(-1, 28**2),
cv2.CV_ROW_SAMPLE,
labels.astype('int'))
Dies lief 6,5 Minuten und die Verwendung rf
zur Vorhersage ergab einen Testfehler von 15%. Ich weiß nicht, wie viele Bäume es trainiert hat, da ihre Python-Bindung für Random Forests das params
Argument zumindest in Version 2.3.1 zu ignorieren scheint . Ich konnte auch nicht herausfinden, wie ich OpenCV klar machen kann, dass ich ein Klassifizierungsproblem lösen möchte, anstatt eine Regression - ich habe meine Zweifel, weil das Ersetzen astype('int')
durch astype('float32')
das gleiche Ergebnis ergibt.
In neuronalen Netzen beträgt der Stand der Technik für den permutationsinvarianten MNIST-Benchmark 0,8% Testfehler, obwohl das Training auf einer CPU wahrscheinlich mehr als 2 Stunden dauern würde.
Ist es möglich, mit Random Forests viel besser als der Testfehler von 2,8% auf MNIST zu arbeiten? Ich dachte, dass der allgemeine Konsens darin bestand, dass Random Forests normalerweise mindestens so gut sind wie Kernel-SVMs, von denen ich glaube, dass sie einen Testfehler von 1,4% verursachen können.