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 rf
per 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' params
argomento, 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%.