Estoy trabajando en un problema multiclase con 9 etiquetas posibles, para las cuales tengo un conjunto de datos que consta de ~ 50,000 ejemplos y ~ 200 características cada uno. Cada ejemplo solo puede pertenecer a una clase. Los datos están bastante equilibrados entre las diferentes etiquetas.
Dada su robustez y escalabilidad, decidí usar Random Forest (con un conjunto de 1000 árboles) como método de aprendizaje. Para evaluar la precisión del rendimiento del modelo dado este conjunto de datos, utilicé una validación cruzada estratificada5 veces (estoy usando scikit-learn 0.18).
Dado que Random Forest puede manejar inherentemente conjuntos de datos multiclase, lo usé directamente en el conjunto de datos dado y obtuve una precisión de 79.5 0.3. También estaba interesado en saber qué características tenían más importancia, algo que se puede extraer fácilmente del atributo feature_importances_ en RandomForestClassifier de scikit. Sin embargo, dado que el conjunto de datos está bien equilibrado y que, como se esperaba, hay casi la misma cantidad de características de las 200 para contribuir a las diferentes clases, no pude aislar qué características contribuyen más a cada clase.
Como consecuencia, adopté una estrategia de uno contra todos usando la misma configuración de Bosque aleatorio (sensible al costo por cierto, teniendo en cuenta el desequilibrio de los datos cuando se usa la estrategia oneVsAll), que me permitió ver para cada clase versus El resto qué características son más importantes. Los resultados que obtuve sobre esto son razonables. Además, al observar el rendimiento del modelo utilizando esta estrategia, obtuve una precisión de 88.7 0.2, lo que me sorprendió ya que esperaba que Random Forest multiclase se clasificara mejor dada su naturaleza multiclase.
¿Estoy en lo cierto en esto? ¿Podría tal diferencia de precisión ser plausible? Además, ¿la estrategia anterior se adoptó de manera correcta y justa dado que Random Forest por sí solo puede abordar problemas multiclase sin ningún "hackeo" como la estrategia oneVsAll?
fuente
Respuestas:
Tenía exactamente la misma pregunta que tú, y me entristeció un poco descubrir que no se publicaron respuestas sobre tu tema ...
Dicho esto, encontré este documento: Técnica de binarización One-Vs-All en el contexto del bosque aleatorio ( https://www.elen.ucl.ac.be/Proceedings/esann/esannpdf/es2015-5.pdf ) publicado en 2015
Los autores muestran mejores resultados de clasificación con los clasificadores de bosque aleatorio de uno contra el resto en comparación con los clasificadores de bosque aleatorio multiclase estándar.
Los autores no están dando muchas pistas sobre por qué funciona tan bien, excepto que los árboles generados en el contexto de uno contra el resto son más simples.
Me pregunto si usted mismo encontró algunas respuestas desde que publicó su pregunta.
fuente
Al final del día, la clase de modelo que elija define la forma de su límite de decisión: si usa RandomForests como un multiclase o como un clasificador multiclase uno contra todos, los límites estarán igualmente restringidos, con la única diferencia son los datos que utiliza para adaptarse a sus modelos. Dependiendo de qué tan bien se ajusten sus modelos a sus datos y cuán susceptible sea su modelo a los problemas de desequilibrio de datos, realmente no veo una razón a priori de que la multiclase sea mejor que uno contra todos. Simplemente te dan cosas diferentes: una te da una decisión para cada par de clases, a costa de más modelos para entrenar, y una te da la decisión de clase de inmediato. Es completamente plausible para mí, especialmente teniendo en cuenta que RandomForests no resuelve una función de pérdida convexa, que obtendría los resultados que obtuvo.
Si está específicamente interesado en encontrar qué características son relevantes para su clasificador, le sugiero una regresión logística con una penalización de pérdida L1, ya que la escasez le daría un pequeño subconjunto de características que son predictivas para cada par de clases que tener.
fuente