Können zufällige Wälder viel besser abschneiden als der Testfehler von 2,8% bei MNIST?

9

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 rfzur 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 paramsArgument 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.

MaxB
quelle
5
Denken Sie daran, dass eine zufällige Gesamtstruktur jeweils eine Entscheidungsvariable (dh ein Pixel) trifft. Es ist also nicht sehr gut für die Bildverarbeitung. Sie sind besser dran, zuerst eine Art Vorverarbeitung (z. B. PCA usw.) zu verwenden, um aussagekräftigere Entscheidungsvariablen zu entwickeln
seanv507
Genau das, was seanv507 gesagt hat. OpenCV verfügt über viele Funktionen zum Extrahieren von Features, mit denen nützliche erklärende Variablen für die Arbeit mit zufälligen Gesamtstrukturen erkannt werden können.
JEquihua
3
Ich dachte, dass der allgemeine Konsens darin bestand, dass Random Forests normalerweise mindestens so gut sind wie Kernel-SVMs . Es gibt keinen solchen Konsens.
Marc Claesen

Antworten:

14

Ist es möglich, mit Random Forests viel besser als der Testfehler von 2,8% auf MNIST zu arbeiten?

Wahrscheinlich ja. Dies bedeutet jedoch nicht, dass Sie dieselben Funktionen verwenden, die Sie standardmäßig erhalten. Entscheidungsbäume funktionieren bei solchen hochdimensionalen Problemen im Allgemeinen nicht gut, da Sie jeweils nur ein Feature aufteilen. Random Forest erweitert die Nützlichkeit von Entscheidungsbäumen, hat aber immer noch das gleiche Problem. Wenn Sie mit RF 2,8% schlagen, müssen Sie wahrscheinlich einige Features vorverarbeiten und die Features in eine nützlichere Teilmenge umwandeln.

Neuronale Netze und Kernel-SVMs führen implizit eine Feature-Transformation / Engineering durch. In gewisser Hinsicht ist es beeindruckend, dass Random Forest ohne zusätzliche Arbeit anständig nahe kommt (der wahre Grund, warum RF populär wurde, ist, dass es dumm war, "gut genug" Ergebnisse zu erzielen).

Ich dachte, dass der allgemeine Konsens darin bestand, dass Random Forests normalerweise mindestens so gut sind wie Kernel-SVMs

Es gibt keinen solchen Konsens. Sie haben oft ähnliche Ergebnisse in Bezug auf die Genauigkeit - aber sie sind sehr unterschiedliche Algorithmen mit unterschiedlichen Stärken / Schwächen. Bei vielen Problemen sind die Genauigkeiten ähnlich, bei anderen gewinnen SVMs mit einem guten Vorsprung, bei einigen RF-Gewinnen mit einem guten Vorsprung.

Raff.Edward
quelle