Ich benutze das OpenCV-Beispiel letter_recog.cpp, um mit zufälligen Bäumen und anderen Klassifikatoren zu experimentieren. In diesem Beispiel sind sechs Klassifikatoren implementiert - Random Tree, Boosting, MLP, kNN, naive Bayes und SVM. Es wird ein UCI-Brieferkennungsdatensatz mit 20000 Instanzen und 16 Funktionen verwendet, den ich zum Trainieren und Testen in zwei Hälften geteilt habe. Ich habe Erfahrung mit SVM, daher habe ich den Erkennungsfehler schnell auf 3,3% gesetzt. Nach einigem Experimentieren bekam ich:
UCI Brieferkennung:
- RTrees - 5,3%
- Steigerung - 13%
- MLP - 7,9%
- kNN (k = 3) - 6,5%
- Bayes - 11,5%
- SVM - 3,3%
Verwendete Parameter:
RTrees - max_num_of_trees_in_the_forrest = 200, max_depth = 20, min_sample_count = 1
Boost - boost_type = REAL, weak_count = 200, weight_trim_rate = 0,95, max_tiefe = 7
MLP - method = BACKPROP, param = 0.001, max_iter = 300 (Standardwerte - zu langsam zum Experimentieren)
kNN (k = 3) - k = 3
Bayes - keine
SVM - RBF-Kernel, C = 10, Gamma = 0,01
Danach habe ich dieselben Parameter verwendet und an Digits und MNIST-Datensätzen getestet, indem ich zuerst Gradienten-Features extrahiert habe (Vektorgröße 200 Elemente):
Ziffern:
- RTrees - 5,1%
- Steigerung - 23,4%
- MLP - 4,3%
- kNN (k = 3) - 7,3%
- Bayes - 17,7%
- SVM - 4,2%
MNIST:
- RTrees - 1,4%
- Boost - zu wenig Speicher
- MLP - 1,0%
- kNN (k = 3) - 1,2%
- Bayes - 34,33%
- SVM - 0,6%
Ich bin neu in allen Klassifikatoren außer SVM und kNN, für diese beiden kann ich sagen, dass die Ergebnisse in Ordnung zu sein scheinen. Was ist mit anderen Ich habe mehr von zufälligen Bäumen erwartet, auf MNIST gibt kNN eine bessere Genauigkeit, gibt es Ideen, wie man es höher bringt? Boost und Bayes ergeben eine sehr geringe Genauigkeit. Am Ende möchte ich diese Klassifikatoren verwenden, um ein System mit mehreren Klassifikatoren zu erstellen. Irgendein Rat?