19 votos

SVM para datos desequilibrados

Quiero intentar utilizar máquinas de vectores soporte (SVM) en mi conjunto de datos. Sin embargo, antes de intentar el problema, me advirtieron de que las SVM no funcionan bien con datos muy desequilibrados. En mi caso, puedo tener hasta un 95-98% de 0 y un 2-5% de 1.

Traté de encontrar recursos que hablaran sobre el uso de SVM en datos dispersos/no equilibrados, pero todo lo que pude encontrar fue 'sparseSVMs' (que utilizan una pequeña cantidad de vectores de soporte).

Esperaba que alguien me lo pudiera explicar brevemente:

  1. Qué tal funcionaría SVM con un conjunto de datos de este tipo
  2. ¿Qué modificaciones, en su caso, deben introducirse en el algoritmo SVM?
  3. ¿Qué recursos/documentos tratan este tema?

18voto

Bitwise Puntos 3141

Muchas implementaciones de SVM abordan este problema asignando diferentes pesos a las instancias positivas y negativas. Básicamente, se pesan las muestras de forma que la suma de los pesos de las positivas sea igual a la de las negativas. Por supuesto, en su evaluación de la SVM tiene que recordar que si el 95% de los datos son negativos, es trivial obtener una precisión del 95% prediciendo siempre negativo. Así que tienes que asegurarte de que tus métricas de evaluación también están ponderadas para que estén equilibradas.

Concretamente en libsvm que has añadido como etiqueta, hay una bandera que te permite establecer los pesos de las clases ( -w Creo, pero compruebe el docs ).

Por último, por experiencia personal puedo decirle que a menudo encuentro que una SVM dará resultados muy similares con o sin la corrección del peso.

8voto

Marc Claesen Puntos 9818

Las SVM funcionan bien con datos dispersos y desequilibrados. La SVM ponderada por clase está diseñada para tratar datos desequilibrados asignando mayores penalizaciones por clasificación errónea a las instancias de entrenamiento de la clase minoritaria.

5voto

Frederic Close Puntos 121

En el caso de datos dispersos como esos, SVM funcionará bien.

Como dice @Bitwise, no se debe utilizar la precisión para medir el rendimiento del algoritmo.

En su lugar, debe calcular el precisión, recall y Puntuación F del algoritmo.

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