Frage

Ich verwende OpenCV Letter_Recog.cpp -Beispiel, um an zufälligen Bäumen und anderen Klassifikatoren zu experimentieren. In diesem Beispiel werden sechs Klassifikatoren implementiert - zufällige Bäume, Boosting, MLP, KNN, Naive Bayes und SVM. UCI Lettererkennungsdatensatz mit 20000 Instanzen und 16 Funktionen wird verwendet, die ich zum Training und Test in zwei Hälften geteilt habe. Ich habe Erfahrung mit SVM, daher habe ich schnell seinen Erkennungsfehler auf 3,3%festgelegt. Nach einigem Experimentieren war das, was ich bekam,:

UCI -Brieferkennung:

  • RTREES - 5,3%
  • Boost - 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, walma_count = 200, wight_trim_rate = 0,95, max_depth = 7

  • MLP - Methode = Backprop, Param = 0,001, max_iter = 300 (Standardwerte - zu langsam zum Experiment)

  • kNn (k = 3) - k = 3

  • Bayes - keine

  • SVM - RBF -Kernel, C = 10, Gamma = 0,01

Danach habe ich die gleichen Parameter verwendet und auf Ziffern und MNIST -Datensätzen getestet, indem ich zuerst Gradientenfunktionen extrahierte (Vektorgröße 200 Elemente):

Ziffern:

  • RTREES - 5,1%
  • Boost - 23,4%
  • MLP - 4,3%
  • KNN (K = 3) - 7,3%
  • Bayes - 17,7%
  • SVM - 4,2%

MNIST:

  • RTREES - 1,4%
  • Boost - aus dem Gedächtnis
  • MLP - 1,0%
  • KNN (k = 3) - 1,2%
  • Bayes - 34,33%
  • SVM - 0,6%

Ich bin neu für alle Klassifikatoren außer SVM und KNN, denn diese beiden können ich sagen, dass die Ergebnisse in Ordnung scheinen. Was ist mit anderen? Ich habe mehr von zufälligen Bäumen erwartet, auf MNIST KNN gibt es bessere Genauigkeit, irgendwelche Ideen, wie man es höher bringt? Boost und Bayes geben eine sehr geringe Genauigkeit. Am Ende möchte ich diese Klassifizierer verwenden, um ein Mehrfachklassifikator -System zu erstellen. Irgendein Rat?

War es hilfreich?

Lösung

Dimensionsreduzierung

Ein weiteres wichtiges Verfahren besteht darin, die Fehlerraten im Trainings- und Testdatensatz zu vergleichen, um festzustellen, ob Sie übereinstimmen (aufgrund des "Fluches der Dimensionalität"). ZB, wenn Ihre Fehlerrate im Testdatensatz viel größer ist als der Fehler im Trainingsdatensatz, wäre dies ein Indikator.
In diesem Fall können Sie Dimensionalitätsreduktionstechniken wie PCA oder LDA ausprobieren.

Wenn Sie interessiert sind, habe ich hier über PCA, LDA und einige andere Techniken geschrieben: http://sebastianraschka.com/index.html#machine_learning Und in meinem Github Repo hier: https://github.com/asbt/pattern_classification

Kreuzvalidierung

Möglicherweise möchten Sie auch einen Blick auf Quervalidierungstechniken werfen, um die Leistung Ihrer Klassifizierer objektiver zu bewerten

Andere Tipps

Ich habe mehr von zufälligen Bäumen erwartet:

  • Bei zufälligen Wäldern, typischerweise für N -Merkmale, werden SQRT (N) -Funktionen für jede Entscheidungsbaumkonstruktion verwendet. Da in Ihrem Fall N= 20, Sie könnten versuchen, einzustellen maximale Tiefe (Die Anzahl der Unterfehler, um jeden Entscheidungsbaum zu konstruieren) auf 5.

  • Anstelle von Entscheidungsbäumen wurden lineare Modelle vorgeschlagen und als Basisschätzer in zufälligen Wäldern, insbesondere multinomiale logistische Regression und naiver Bayes, bewertet. Dies könnte Ihre Genauigkeit verbessern.

Bei MNIST KNN gibt es eine bessere Genauigkeit, irgendwelche Ideen, wie man es höher bringt?

  • Versuchen Sie es mit einem höheren Wert von K (Sag 5 oder 7). Ein höherer Wert von K würde Ihnen mehr unterstützende Beweise für das Klassenetikett eines Punktes geben.
  • Sie können die lineare Diskriminanzanalyse von PCA oder Fisher durchführen, bevor Sie K-Nearest-Nachbarn ausführen. Auf diese Weise können Sie möglicherweise korrelierte Merkmale entfernen, während Sie Entfernungen zwischen den Punkten berechnen, und daher wären Ihre K -Nachbarn robuster.
  • Versuchen Sie verschiedene k -Werte für unterschiedliche Punkte, die auf der Varianz in den Abständen zwischen den K -Nachbarn basieren.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top