24 votos

Baja precisión de clasificación, ¿qué hacer a continuación?

Soy un novato en el campo del ML e intento hacer una clasificación. Mi objetivo es predecir el resultado de un evento deportivo. He recopilado algunos datos históricos y ahora intento entrenar un clasificador. Tengo alrededor de 1200 muestras, 0.2 de ellas las he separado para probarlas, otras las he puesto a buscar en la cuadrícula (validación cruzada incluida) con diferentes clasificadores. He probado SVM con kernels lineales, rbf y polinominal y Random Forests hasta el momento. Por desgracia, no puedo obtener una precisión significativamente mayor que 0,5 (la misma que la elección aleatoria de la clase). ¿Significa que no puedo predecir el resultado de un evento tan complejo? ¿O puedo obtener al menos 0,7-0,8 de precisión? Si es factible, ¿qué debería hacer a continuación?

  • ¿Obtener más datos? (Puedo ampliar el conjunto de datos hasta 5 veces)
  • ¿Probar con distintos clasificadores? (regresión logística, kNN, etc.)
  • ¿Reevaluar mi conjunto de funciones? ¿Existen herramientas de ML para analizar qué características tienen sentido y cuáles no? ¿Quizás debería reducir mi conjunto de características (actualmente tengo 12 características)?

22voto

Craig Trader Puntos 8924

En primer lugar, si su clasificador no obtiene mejores resultados que una elección aleatoria, existe el riesgo de que simplemente no haya conexión entre las características y la clase. Una buena pregunta que puede hacerse en este caso es si usted o un experto en la materia podrían deducir la clase (con una precisión superior a la de un clasificador aleatorio) basándose en las características dadas. Si la respuesta es negativa, no servirá de nada obtener más filas de datos o cambiar el clasificador. Lo que hay que hacer es obtener más datos utilizando características diferentes.

Si por el contrario crees que la información necesaria para inferir la clase ya está en las etiquetas, deberías comprobar si tu clasificador sufre un problema de alto sesgo o alta varianza.

Para ello, grafique el error de validación y el error del conjunto de entrenamiento en función de los ejemplos de entrenamiento.

Si las líneas parecen converger al mismo valor y se acercan al final, entonces su clasificador tiene un sesgo alto y añadir más datos no le ayudará. Una buena idea en este caso es cambiar el clasificador por otro que tenga mayor varianza, o simplemente bajar el parámetro de regularización del actual.

Si, por el contrario, las líneas están muy separadas y el error del conjunto de entrenamiento es bajo, pero el error de validación es alto, entonces el clasificador tiene una varianza demasiado alta. En este caso, es muy probable que te ayude obtener más datos. Si después de obtener más datos la varianza sigue siendo demasiado alta, puedes aumentar el parámetro de regularización.

Estas son las reglas generales que yo utilizaría ante un problema como el suyo.

Salud.

7voto

noah Puntos 61

Yo sugeriría dar un paso atrás y realizar un análisis exploratorio de los datos antes de intentar clasificarlos. Merece la pena examinar las características de forma individual para ver si existe alguna relación con el resultado de interés: puede que las características que tiene no tengan ninguna asociación con las etiquetas de clase. ¿Cómo saber si las características que tiene serán útiles?

Podrías empezar haciendo pruebas de hipótesis o análisis de correlación para comprobar si existen relaciones. Generar histogramas específicos de clase para las características (es decir, trazar histogramas de los datos para cada clase, para una característica dada en el mismo eje) también puede ser una buena manera de mostrar si una característica discrimina bien entre las dos clases.

No obstante, es importante no dejar que los resultados del análisis exploratorio influyan en la clasificación. Elegir características para la clasificación basándose en un análisis exploratorio previo de los mismos datos puede dar lugar a un ajuste excesivo y a estimaciones de rendimiento sesgadas (véase el análisis aquí ), pero un análisis exploratorio le dará al menos una idea de si la tarea que intenta realizar es posible.

6voto

mat_geek Puntos 1367

¿Por qué no seguir el principio de "mirar primero los gráficos de los datos"? Una cosa que puedes hacer es un gráfico de dispersión 2 D de las densidades condicionales de dos clases para dos covariables. Si las observa y ve que prácticamente no hay separación, eso podría indicar falta de predictibilidad, y puede hacerlo con todas las covariables. Eso le da algunas ideas sobre la capacidad de utilizar estas covariables para predecir. Si ve alguna esperanza de que estas variables puedan separarse un poco, entonces empiece a pensar en discriminantes lineales, discriminantes cuadráticos, discriminación kernel, regularización, clasificación en árbol, SVM, etc.

4voto

matt Puntos 11

Es bueno que hayas separado los datos en datos de entrenamiento y datos de prueba.

¿Ha disminuido su error de entrenamiento? Si no es así, es posible que haya un error en el algoritmo de entrenamiento. Se espera que el error en el conjunto de pruebas sea mayor que el error en el conjunto de entrenamiento, así que si tienes un error inaceptablemente alto en el conjunto de entrenamiento, hay pocas esperanzas de éxito.

La eliminación de características puede evitar algunos tipos de sobreajuste. Sin embargo, no debería mejorar el error del conjunto de entrenamiento. Un error bajo en el conjunto de entrenamiento y un error alto en el conjunto de prueba puede indicar que se ha sobreajustado utilizando un conjunto de características demasiado flexible. Sin embargo, es más seguro comprobarlo mediante validación cruzada que en el conjunto de prueba. Una vez que seleccione el conjunto de características basándose en el conjunto de prueba, ya no será válido como conjunto de prueba.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X