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?