No he encontrado ninguna literatura sobre la aplicación de bosques aleatorios a MNIST, CIFAR, STL-10, etc., así que pensé en probarlos con el MNIST invariante de permutación.
En R , 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)
Después de 70 minutos, obtuve un error de prueba de 2.9%, pero con n_estimators = 200 en su lugar, obtuve un error de prueba de 2.8% después de solo 7 minutos.
Con OpenCV , intenté
rf.train(images.reshape(-1, 28**2),
cv2.CV_ROW_SAMPLE,
labels.astype('int'))
Esto funcionó durante 6,5 minutos, y el uso rf
para la predicción dio un error de prueba del 15%. No sé cuántos árboles entrenó, ya que su enlace de Python para bosques aleatorios parece ignorar el params
argumento, al menos en la versión 2.3.1. Tampoco podía encontrar la manera de dejar claro a OpenCV que yo quiero resolver un problema de clasificación, en lugar de la regresión - Tengo mis dudas, porque la sustitución astype('int')
con astype('float32')
da el mismo resultado.
En las redes neuronales , para el punto de referencia MNIST invariante de permutación, el estado del arte es un error de prueba del 0.8%, aunque el entrenamiento probablemente tomaría más de 2 horas en una CPU.
¿Es posible hacerlo mucho mejor que el error de prueba del 2.8% en MNIST usando bosques aleatorios? Pensé que el consenso general era que los bosques aleatorios generalmente son al menos tan buenos como los SVM del núcleo, lo que creo que puede obtener un error de prueba del 1.4%.
Respuestas:
Probablemente si. Pero eso no significa que usará las mismas funciones que obtiene de forma predeterminada. Los árboles de decisión en general no funcionan bien en problemas de alta dimensión como este, ya que solo se divide en una característica a la vez. Random Forest extiende la utilidad de los árboles de decisión, pero aún tienen el mismo problema. Superar 2.8% con RF probablemente requerirá que realice un preprocesamiento de funciones y que las transforme en un subconjunto más útil.
Neural Networks y Kernel SVM están haciendo implícitamente alguna transformación / ingeniería de características. Entonces, en cierto sentido, es impresionante que Random Forest se acerque decentemente sin ningún trabajo adicional (de hecho, la verdadera razón por la que RF se hizo popular es que fue estúpidamente fácil obtener resultados "suficientemente buenos").
No hay tal consenso. A menudo tienen resultados similares en términos de precisión, pero son algoritmos muy diferentes con diferentes fortalezas / debilidades. En muchos problemas, las precisiones son similares, en otros SVM ganan por un buen margen, en algunos RF gana por un buen margen.
fuente