¿Pueden los bosques aleatorios hacerlo mucho mejor que el error de prueba del 2.8% en MNIST?


9

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 rfpara 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 paramsargumento, 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%.


55
recuerde que un bosque aleatorio está tomando una decisión 1 variable (es decir, píxel) a la vez. Por lo tanto, no es muy bueno para el procesamiento de imágenes. Es mejor que primero use algún tipo de preprocesamiento (por ejemplo, PCA, etc.) para desarrollar variables de decisión más significativas
seanv507

Exactamente lo que dijeron seanv507. OpenCV tiene muchas funciones para la extracción de características que pueden detectar variables explicativas bastante útiles para trabajar con bosques aleatorios.
JEquihua

3
Pensé que el consenso general era que los bosques aleatorios generalmente son al menos tan buenos como los SVM de kernel . No hay tal consenso.
Marc Claesen

Respuestas:


14

¿Es posible hacerlo mucho mejor que el error de prueba del 2.8% en MNIST usando bosques aleatorios?

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

Pensé que el consenso general era que los bosques aleatorios generalmente son al menos tan buenos como los SVM del núcleo

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.