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%.
Réponses:
Probablement oui. Mais cela ne signifie pas que vous utiliserez les mêmes fonctionnalités que celles que vous obtenez par défaut. Les arbres de décision en général ne fonctionnent pas bien sur des problèmes de grande dimension comme celui-ci, car vous ne divisez qu'une seule entité à la fois. Random Forest étend l'utilité des arbres de décision, mais ils ont toujours le même problème. Battre 2,8% avec RF nécessitera probablement un certain prétraitement des fonctionnalités et transformera les fonctionnalités en un sous-ensemble plus utile.
Les réseaux neuronaux et les SVM du noyau font implicitement une transformation / ingénierie des fonctionnalités. Donc, dans un certain sens, il est impressionnant que Random Forest se rapproche décemment sans aucun travail supplémentaire (en effet, la vraie raison pour laquelle RF est devenu populaire est qu'il était stupidement facile d'obtenir des résultats "assez bons").
Il n'y a pas un tel consensus. Ils ont souvent des résultats similaires en termes de précision - mais ce sont des algorithmes très différents avec des forces / faiblesses différentes. Sur de nombreux problèmes, les précisions sont similaires, sur d'autres, les SVM gagnent par une bonne marge, sur certains RF gagnent par une bonne marge.
la source