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)?
r
machine-learning
classification
cart
Tal Galili
fuente
fuente
Respuestas:
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 ,
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
fuente
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:
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!
fuente
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/
fuente
kernlab
ae1071
.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!).
fuente
Vale la pena echar un vistazo a los clasificadores Naive Bayes . En R puede realizar la clasificación Naive Bayes en los paquetes e1071 y klaR .
fuente