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?
Je m'attendais à plus d'arbres aléatoires :
Avec des forêts aléatoires, généralement pour N entités, les fonctionnalités sqrt (N) sont utilisées pour chaque construction d'arbre de décision. Puisque dans votre cas N = 20, vous pouvez essayer de définir max_depth (le nombre de sous-entités pour construire chaque arbre de décision) à 5.
Au lieu d'arbres de décision, des 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 les Bayes naïfs. Cela pourrait améliorer votre précision.
Sur MNIST kNN donne une meilleure précision, des idées pour l'améliorer?
la source