Question

J'utilise par exemple OpenCV de letter_recog.cpp à expérimenter sur les arbres au hasard et d'autres classificateurs. Cet exemple a des implémentations de six classificateurs - arbres au hasard, stimulant, MLP, kNN, naïve Bayes et SVM. ensemble de données de reconnaissance des lettres UCI avec 20000 cas et 16 caractéristiques est utilisé, que je divisée en deux pour la formation et les tests. J'ai l'expérience avec SVM donc je mis rapidement son erreur de reconnaissance à 3,3%. Après quelques essais ce que je suis arrivé était:

reconnaissance des lettres UCI:

  • RTrees - 5,3%
  • Boost - 13%
  • MLP - 7,9%
  • kNN (k = 3) - 6,5%
  • Bayes - 11,5%
  • SVM - 3,3%

Paramètres utilisés:

  • RTrees - max_num_of_trees_in_the_forrest = 200, MAX_DEPTH = 20, min_sample_count = 1

  • Boost - boost_type = VRAI, weak_count = 200, weight_trim_rate = 0,95, MAX_DEPTH = 7

  • MLP - Méthode = BACKPROP, param = 0,001, max_iter = 300 (valeurs par défaut - trop lent à expérimenter)

  • kNN (k = 3) - k = 3

  • Bayes - aucun

  • SVM - noyau RBF, C = 10, gamma = 0,01

Après que je les mêmes paramètres et testés sur des ensembles de données de chiffres et MNIST par gradient d'extraction comprend des premier (vecteur de taille 200 éléments):

Digits:

  • 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 - de mémoire
  • MLP - 1,0%
  • kNN (k = 3) - 1,2%
  • Bayes - 34,33%
  • SVM - 0,6%

Je suis nouveau à tous les classificateurs sauf et SVM kNN, pour ces deux je peux dire que les résultats semblent très bien. Qu'en est-il d'autres? Je me attendais plus d'arbres au hasard, sur MNIST kNN donne une meilleure précision, des idées comment l'obtenir plus? Boost et Bayes donnent très faible précision. En fin de compte, je voudrais utiliser ces classificateurs pour faire un système de classification multiple. Un conseil?

Était-ce utile?

La solution

dimensionnalité Réduction

Une autre procédure consiste à comparer les taux d'erreur sur la formation et base de test pour voir si vous êtes surapprentissage (en raison de la « malédiction de la dimensionnalité »). Par exemple, si votre taux d'erreur sur l'ensemble de données de test est beaucoup plus grande que l'erreur sur l'ensemble des données de formation, ce serait un indicateur.
Dans ce cas, vous pouvez essayer dimensionnalité des techniques de réduction, comme PCA ou LDA.

Si vous êtes intéressé, je l'ai écrit au sujet de l'APC, LDA et d'autres techniques ici: http://sebastianraschka.com/index .html # machine_learning et dans mon GitHub repo ici: https://github.com/rasbt/pattern_classification

Validation croisée

Aussi, vous voudrez peut-être jeter un oeil à des techniques de validation croisée afin d'évaluer les performances de vos classificateurs d'une manière plus objective

Autres conseils

Je me attendais plus d'arbres au hasard :

  • Avec les forêts aléatoires, généralement pour les fonctions N, caractéristiques sqrt (N) sont utilisés pour chaque construction d'arbre de décision. Etant donné que dans votre cas N = 20, vous pouvez essayer de mettre MAX_DEPTH (le nombre de sous-caractéristiques pour construire chaque arbre de décision) à 5.

  • Au lieu des arbres de décision, les modèles linéaires ont été proposés et évalués comme estimateurs de base dans les forêts aléatoires, en particulier la régression logistique multinomiale et bayésiens naïfs. Cela pourrait améliorer votre précision.

Le MNIST kNN donne une meilleure précision, des idées comment l'obtenir plus?

  • Essayez avec une valeur plus élevée de K (disons 5 ou 7). Une valeur plus élevée de K vous donnera plus de soutien des preuves sur l'étiquette de la classe d'un point.
  • Vous pourriez exécuter PCA ou analyse discriminante linéaire de Fisher avant d'exécuter k-plus proche voisin. En cela, vous pourriez potentiellement vous débarrasser des caractéristiques corrélées lors du calcul des distances entre les points, et par conséquent vos voisins k serait plus robuste.
  • Essayez différentes valeurs de K pour différents points en fonction de la variance des distances entre les voisins K.
Licencié sous: CC-BY-SA avec attribution
scroll top