Le foreste casuali possono fare molto meglio dell'errore di test del 2,8% su MNIST?


10

Non ho trovato alcuna documentazione sull'applicazione di Random Forests a MNIST, CIFAR, STL-10, ecc. Quindi ho pensato di provarli con il MNIST invariante alla permutazione .

In R , ho provato:

randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)

Questo ha funzionato per 2 ore e ha avuto un errore di prova del 2,8%.

Ho anche provato scikit-learn , con

RandomForestClassifier(n_estimators=2000,
                       max_features="auto", 
                       max_depth=None)

Dopo 70 minuti, ho ricevuto un errore di test del 2,9%, ma con n_estimators = 200 invece, ho ricevuto un errore di test del 2,8% dopo soli 7 minuti.

Con OpenCV , ho provato

rf.train(images.reshape(-1, 28**2), 
         cv2.CV_ROW_SAMPLE, 
         labels.astype('int'))

Questo ha funzionato per 6,5 minuti e l'utilizzo rfper la previsione ha dato un errore di prova del 15%. Non so quanti alberi ha addestrato, dato che il loro binding Python per Random Forests sembra ignorare l' paramsargomento, almeno nella versione 2.3.1. Inoltre non sono riuscito a capire come chiarire a OpenCV che voglio risolvere un problema di classificazione, piuttosto che la regressione - ho i miei dubbi, perché la sostituzione astype('int')con astype('float32')dà lo stesso risultato.

Nelle reti neurali , per il benchmark MNIST invariante alla permutazione , lo stato dell'arte è un errore di test dello 0,8%, sebbene l'addestramento richiederebbe probabilmente più di 2 ore su una CPU.

È possibile fare molto meglio dell'errore di test del 2,8% su MNIST usando Random Forests? Ho pensato che il consenso generale fosse che le foreste casuali sono in genere almeno valide quanto le SVM del kernel, che credo possano ottenere un errore di test dell'1,4%.


5
ricorda che una foresta casuale sta prendendo una variabile di decisione 1 (cioè pixel) alla volta. Quindi non è molto buono per l'elaborazione delle immagini -raw. È meglio innanzitutto utilizzare una sorta di preelaborazione (ad esempio PCA, ecc.) Per sviluppare variabili di decisione più significative
seanv507,

Esattamente quello che ha detto seanv507. OpenCV ha molte funzioni per l'estrazione delle caratteristiche in grado di rilevare variabili esplicative abbastanza utili per la foresta casuale con cui lavorare.
JEquihua

3
Ho pensato che il consenso generale fosse che le foreste casuali sono in genere almeno valide quanto le SVM del kernel . Non esiste tale consenso.
Marc Claesen,

Risposte:


15

È possibile fare molto meglio dell'errore di test del 2,8% su MNIST usando Random Forests?

Probabilmente sì. Ma ciò non significa che utilizzerai le stesse funzionalità che ottieni per impostazione predefinita. Gli alberi decisionali in generale non funzionano bene su problemi di dimensioni elevate come questo, poiché si sta solo dividendo una caratteristica alla volta. Random Forest estende l'utilità degli alberi decisionali, ma presentano ancora lo stesso problema. Battere il 2,8% con RF probabilmente richiederà di eseguire alcune preelaborazioni delle funzionalità e di trasformarle in un sottoinsieme più utile.

Le reti neurali e le SVM del kernel stanno implicitamente facendo alcune trasformazioni / ingegneria. Quindi, in un certo senso, è impressionante che Random Forest si avvicini discretamente senza alcun lavoro extra (in effetti la vera ragione per cui la RF è diventata popolare è stato stupidamente facile ottenere risultati "abbastanza buoni").

Ho pensato che il consenso generale fosse che le foreste casuali sono in genere almeno valide quanto le SVM del kernel

Non esiste tale consenso. Spesso hanno risultati simili in termini di precisione, ma sono algoritmi molto diversi con diversi punti di forza / debolezza. Su molti problemi ci sono precisioni simili, su altri le SVM vincono con un buon margine, su alcune RF le vittorie con un buon margine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.