¿Alternativas a los árboles de clasificación, con un mejor rendimiento predictivo (p. Ej .: CV)?

23

Estoy buscando una alternativa a los árboles de clasificación que pueda generar un mejor poder predictivo.

Los datos que estoy tratando tienen factores para las variables explicativas y explicadas.

Recuerdo haber encontrado bosques aleatorios y redes neuronales en este contexto, aunque nunca los probé antes, ¿hay otro buen candidato para esa tarea de modelado (en R, obviamente)?

Tal Galili
fuente
55
No te molestes con las redes neuronales, esta es una tecnología obsoleta.
1
@mbq, ¿sigues con esta declaración?
rombodecaedro
@rhombidodecahedron Claro, juega con NNs desde 2010 y estarás de acuerdo. Además, dudo que cualquier modelo DL traiga algo a una tabla con datos (presumiblemente) de un tamaño tan pequeño.

Respuestas:

25

Creo que valdría la pena probar Random Forests ( randomForest ); se proporcionaron algunas referencias en respuesta a preguntas relacionadas: Selección de características para el modelo "final" cuando se realiza la validación cruzada en el aprendizaje automático ; ¿Pueden los modelos CART hacerse robustos? . El refuerzo / embolsado los hace más estables que un solo CARRITO que se sabe que es muy sensible a pequeñas perturbaciones. Algunos autores argumentaron que funcionaba tan bien como SVM o máquinas de refuerzo de gradiente penalizadas (ver, por ejemplo, Cutler et al., 2009). Creo que ciertamente superan a las NN.

Boulesteix y Strobl proporcionan una buena visión general de varios clasificadores en la selección de clasificadores óptimos y sesgo negativo en la estimación de la tasa de error: un estudio empírico sobre predicción de alta dimensión (BMC MRM 2009 9: 85). Escuché de otro buen estudio en la IV reunión de EAM , que debería estar bajo revisión en Estadísticas en Medicina ,

João Maroco , Dina Silva, Manuela Guerreiro, Alexandre de Mendonça. ¿Los bosques aleatorios superan a las redes neuronales, admiten máquinas de vectores y clasificadores de análisis discriminante? Un estudio de caso sobre la evolución a la demencia en pacientes de edad avanzada con quejas cognitivas

También me gusta el paquete caret : está bien documentado y permite comparar la precisión predictiva de diferentes clasificadores en el mismo conjunto de datos. Se encarga de gestionar muestras de entrenamiento / prueba, precisión informática, etc. en pocas funciones fáciles de usar.

El paquete glmnet , de Friedman y col., Implementa GLM penalizado (vea la revisión en el Journal of Statistical Software ), por lo que permanece en un marco de modelado conocido.

De lo contrario, también puede buscar clasificadores basados ​​en reglas de asociación (consulte la Vista de tareas CRAN sobre Aprendizaje automático o los 10 algoritmos principales en la minería de datos para obtener una introducción suave a algunos de ellos).

Me gustaría mencionar otro enfoque interesante que planeo volver a implementar en R (en realidad, es el código Matlab) que es el Análisis de Correspondencia Discriminante de Hervé Abdi. Aunque inicialmente se desarrolló para hacer frente a estudios de muestras pequeñas con muchas variables explicativas (finalmente agrupadas en bloques coherentes), parece combinar eficientemente la DA clásica con técnicas de reducción de datos.

Referencias

  1. Cutler, A., Cutler, DR, y Stevens, JR (2009). Métodos basados ​​en árboles , en Análisis de datos de alta dimensión en la investigación del cáncer , Li, X. y Xu, R. (eds.), Pp. 83-101, Springer.
  2. Saeys, Y., Inza, I. y Larrañaga, P. (2007). Una revisión de las técnicas de selección de características en bioinformática . Bioinformática, 23 (19): 2507-2517.
chl
fuente
2
+1 Gran respuesta. También estoy de acuerdo con la recomendación de Caret.
Shane
12

Es importante tener en cuenta que no hay un algoritmo único que siempre sea mejor que otros. Como declararon Wolpert y Macready, "dos algoritmos son equivalentes cuando su rendimiento se promedia en todos los posibles problemas". (Ver Wikipedia para más detalles).

Para una aplicación dada, la "mejor" generalmente es la que está más estrechamente alineada con su aplicación en términos de los supuestos que hace, los tipos de datos que puede manejar, las hipótesis que puede representar, etc.

Por lo tanto, es una buena idea caracterizar sus datos de acuerdo con criterios como:

  • ¿Tengo un conjunto de datos muy grande o uno modesto?
  • ¿Es alta la dimensionalidad?
  • ¿Las variables son numéricas (continuas / discretas) o simbólicas, o una mezcla, y / o pueden transformarse si es necesario?
  • ¿Es probable que las variables sean en gran medida independientes o bastante dependientes?
  • ¿Es probable que haya variables redundantes, ruidosas o irrelevantes?
  • ¿Quiero poder inspeccionar el modelo generado e intentar darle sentido?

Al contestarlas, puede eliminar algunos algoritmos e identificar otros como potencialmente relevantes, y luego puede terminar con un pequeño conjunto de métodos candidatos que ha elegido de manera inteligente como probablemente útiles.

Lamento no darle una respuesta simple, ¡pero espero que esto ayude de todos modos!

Tampón irlandés
fuente
2
+1 Me encanta la cita. ("dos algoritmos son equivalentes cuando su rendimiento se promedia en todos los problemas posibles")
Assad Ebrahim
8

Para la clasificación de varias clases, las máquinas de vectores de soporte también son una buena opción. Normalmente uso el paquete R kernlab para esto.

Vea el siguiente documento de JSS para una buena discusión: http://www.jstatsoft.org/v15/i09/

Shane
fuente
@Tal Aquí hay una revisión justa (o creo que sí) de SVM vs. RF: una comparación exhaustiva de bosques aleatorios y máquinas de vectores de soporte para la clasificación de cáncer basada en microarrays, j.mp/ab7U8V . Yo también prefiero kernlaba e1071.
chl
2
@chl No me gusta este documento mientras está hecho desde la perspectiva de aprendizaje de SVM: hacer una repetición de un algoritmo estocástico (RF) es solo basura; también el apéndice 2 muestra lo malo que puede ser aplicar el flujo de trabajo SVM a RF. Sin embargo, estoy de acuerdo en que casi siempre SVM puede ajustarse para superar a RF debido al truco del núcleo (que RF simple no tiene, aunque no significa que no pueda tenerlo en general), pero con un esfuerzo de optimización exponencialmente creciente.
@mbq De hecho, este es un buen punto.
chl
3

Como ya se mencionó, los bosques aleatorios son una "actualización" natural y, en estos días, la SVM es generalmente la técnica recomendada para usar.

Quiero agregar que la mayoría de las veces, cambiar a SVM produce resultados muy decepcionantes. La cosa es que, aunque las técnicas como los árboles aleatorios son casi triviales de usar, las SVM son un poco más complicadas.

Encontré este documento invaluable cuando utilicé SVM por primera vez (Una guía práctica para la clasificación de vectores de soporte) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

En R puede usar el paquete e1071 para SVM, enlaza con la biblioteca libSVM estándar de facto (¡al menos en software libre!).

Dr. G
fuente
2
kernlab también usa libsvm para la optimización, por lo que no hay una gran diferencia en ese sentido (aunque es mucho más flexible).
Shane