Les forêts aléatoires peuvent-elles faire beaucoup mieux que l'erreur de test de 2,8% sur MNIST?

10

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 rfpour 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' paramsargument, 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%.

MaxB
la source
5
rappelez-vous qu'une forêt aléatoire prend une variable de décision 1 (ie pixel) à la fois. Ce n'est donc pas très bon pour le traitement d'image -raw. Il vaut mieux utiliser d'abord une sorte de prétraitement (par exemple PCA, etc.) pour développer des variables de décision plus significatives
seanv507
Exactement ce que seanv507 a dit. OpenCV a beaucoup de fonctions pour l'extraction de fonctionnalités qui peuvent détecter des variables explicatives assez utiles pour travailler avec la forêt aléatoire.
JEquihua
3
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 . Il n'y a pas un tel consensus.
Marc Claesen

Réponses:

15

Est-il possible de faire beaucoup mieux que l'erreur de test de 2,8% sur MNIST en utilisant des forêts aléatoires?

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").

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

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.

Raff.Edward
la source