J'utilise l'exemple OpenCV letter_recog.cpp pour expérimenter sur des arbres aléatoires et d'autres classificateurs. Cet exemple a des implémentations de six classificateurs - arbres aléatoires, boosting, MLP, kNN, Bayes naïfs et SVM. Un ensemble de données de reconnaissance de lettres UCI avec 20000 instances et 16 fonctionnalités est utilisé, que j'ai divisé en deux pour la formation et les tests. J'ai de l'expérience avec SVM, j'ai donc rapidement réglé son erreur de reconnaissance à 3,3%. Après quelques expérimentations, j'ai obtenu:
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 = REAL, faible_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 cela, j'ai utilisé les mêmes paramètres et testé sur les jeux de données Digits et MNIST en extrayant d'abord les entités de gradient (éléments vectoriels de taille 200):
Chiffres:
- 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 - manque de mémoire
- MLP - 1,0%
- kNN (k = 3) - 1,2%
- Bayes - 34,33%
- SVM - 0,6%
Je suis nouveau dans tous les classificateurs sauf SVM et kNN, pour ces deux, je peux dire que les résultats semblent bons. Et les autres? Je m'attendais à plus d'arbres aléatoires, sur MNIST kNN donne une meilleure précision, des idées pour l'améliorer? Boost et Bayes donnent une très faible précision. En fin de compte, j'aimerais utiliser ces classificateurs pour créer un système de classificateurs multiples. Aucun conseil?