Je n'ai trouvé aucune documentation sur l'application des forêts aléatoires au MNIST, au CIFAR, au STL-10, etc., alors j'ai pensé les essayer moi-même avec le MNIST invariant par permutation .
Dans R , j'ai essayé:
randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)
Cela a fonctionné pendant 2 heures et a obtenu une erreur de test de 2,8%.
J'ai aussi essayé scikit-learn , avec
RandomForestClassifier(n_estimators=2000,
max_features="auto",
max_depth=None)
Après 70 minutes, j'ai eu une erreur de test de 2,9%, mais avec n_estimators = 200 à la place, j'ai eu une erreur de test de 2,8% après seulement 7 minutes.
Avec OpenCV , j'ai essayé
rf.train(images.reshape(-1, 28**2),
cv2.CV_ROW_SAMPLE,
labels.astype('int'))
Cela a fonctionné pendant 6,5 minutes et l'utilisation rf
pour la prédiction a donné une erreur de test de 15%. Je ne sais pas combien d'arbres il a formés, car leur liaison Python pour Random Forests semble ignorer l' params
argument, au moins dans la version 2.3.1. Je ne savais pas non plus comment faire comprendre à OpenCV que je voulais résoudre un problème de classification, plutôt que de régression - j'ai des doutes, car le remplacement astype('int')
par astype('float32')
donne le même résultat.
Dans les réseaux de neurones , pour la référence MNIST invariante par permutation , l'état de l'art est une erreur de test de 0,8%, bien que la formation prendrait probablement plus de 2 heures sur un CPU.
Est-il possible de faire beaucoup mieux que l'erreur de test de 2,8% sur MNIST en utilisant des forêts aléatoires? Je pensais que le consensus général était que les forêts aléatoires sont généralement au moins aussi bonnes que les SVM du noyau, ce qui, je crois, peut obtenir une erreur de test de 1,4%.