No he encontrado ninguna literatura sobre la aplicación de los Bosques Aleatorios a MNIST, CIFAR, STL-10, etc. así que pensé en probarlos con el permutación-invariante El propio MNIST.
En R Lo intenté:
randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)
Esto funcionó durante 2 horas y obtuvo un error de prueba del 2,8%.
También probé scikit-learn con
RandomForestClassifier(n_estimators=2000,
max_features="auto",
max_depth=None)
Tras 70 minutos, obtuve un error de prueba del 2,9%, pero con n_estimators=200 en cambio, obtuve un error de prueba del 2,8% tras sólo 7 minutos.
Con OpenCV , lo intenté
rf.train(images.reshape(-1, 28**2),
cv2.CV_ROW_SAMPLE,
labels.astype('int'))
Esto se ejecutó durante 6,5 minutos, y utilizando rf
para la predicción dio un error de prueba del 15%. No sé cuántos árboles entrenó, ya que su vinculación con Python para Bosques Aleatorios parece ignorar el params
al menos en la versión 2.3.1. Tampoco he podido averiguar cómo dejar claro a OpenCV que quiero resolver un problema de clasificación, en lugar de regresión -- tengo mis dudas, porque sustituir astype('int')
con astype('float32')
da el mismo resultado.
En redes neuronales para el permutación-invariante MNIST, el estado del arte es de un 0,8% de error en la prueba, aunque el entrenamiento probablemente tomaría más de 2 horas en una CPU.
¿Es posible hacer mucho mejor que el error de prueba del 2,8% en MNIST utilizando Random Forests? Pensaba que el consenso general era que los bosques aleatorios suelen ser al menos tan buenos como los SVM de núcleo, que creo que pueden obtener un error de prueba del 1,4%.
5 votos
Recuerde que un bosque aleatorio toma una decisión de 1 variable (es decir, un píxel) a la vez. Por lo tanto, no es muy bueno para el procesamiento de imágenes en bruto. Es mejor utilizar primero algún tipo de preprocesamiento (por ejemplo, PCA, etc.) para desarrollar variables de decisión más significativas.
0 votos
Exactamente lo que dijo seanv507. OpenCV tiene un montón de funciones para la extracción de características que pueden detectar variables explicativas bastante útiles para que el bosque aleatorio trabaje con ellas.
3 votos
Pensaba que el consenso general era que los bosques aleatorios suelen ser al menos tan buenos como las SVM de núcleo . No existe tal consenso.