22 votos

libsvm "llegar al máximo número de iteraciones" de advertencia y de validación cruzada

Estoy usando libsvm en C-SVC modo con un kernel polinomial de grado 2 y estoy obligado a entrenar a varios SVMs. Cada conjunto de entrenamiento tiene 10 características y 5000 vectores. Durante el entrenamiento, me hago esta advertencia para la mayoría de las SVMs que me entreno:

WARNING: reaching max number of iterations
optimization finished, #iter = 10000000

Podría alguien por favor explique lo que hace esta advertencia implica y, tal vez, ¿cómo evitarlo?

También quiero aplicar la validación cruzada para mis modelos con el fin de determinar las mejores opciones para la gamma y C (regularización). Mi plan es probar todas las combinaciones de estos 10 valores: 0.00001, 0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000 para ambos parámetros y ver cual es la combinación que produce la mejor precisión durante la validación cruzada. Es esto suficiente? Debo usar más los valores en ese intervalo de tiempo, o debo elegir un amplio intervalo?

20voto

Gulzar Nazim Puntos 35342

Esta advertencia significa que el proceso iterativo de la rutina utilizada por LIBSVM para resolver el problema de optimización cuadrática para encontrar el margen máximo hyperplane (es decir, los parámetros de $w$$b$) separar los datos alcanzado el número máximo de iteraciones y se tiene que parar, mientras que la actual aproximación para $w$ puede ser mejorada (es decir, $w$ puede ser cambiado para que el valor de la función objetivo más extremas). En resumen, esto significa que el LIBSVM piensa que no se pudo encontrar el margen máximo hyperplane, que puede o no puede ser cierto.

Hay muchas razones por las que esto puede suceder, te sugiero que hacer lo siguiente:

  • A normalizar sus datos.
  • Asegúrese de que sus clases son más o menos equilibrada (tiene un tamaño similar). Si no, use el parámetro -w para asignar diferentes pesos.
  • Pruebe diferentes $C$ & 'gamma'. Polinomio kernel en LIBSVM también ha parámetro 'coef0', como es el kernel (gamma*u'*v + coeff0)^grado.

Es una buena idea para buscar en óptimas $C$ en una escala logarítmica, como tú lo haces. Creo que para los datos normalizados en el intervalo de búsqueda para $C$ que usted sugirió que se debe ACEPTAR. Una forma útil de verificar la exactitud de la clasificación no debe cambiar mucho en las fronteras de ese rango y entre los dos valores de su conjunto. Si lo hace, ampliar la gama o agregar valores intermedios.

Tenga en cuenta que LIBSVM distributiva para Windows debe contener una secuencia de comandos de Python llamado grid.py que puede hacer la selección de parámetros para usted (basado en la validación cruzada y de búsqueda especificados rangos). También puede producir diagramas de contorno de la exactitud de la SVM. Esta herramienta puede ser muy útil.

La siguiente pregunta en StackOverflow y sus preguntas relacionadas también pueden ayudar: libsvm Reducción de la Heurística

0voto

James Gardner Puntos 500

Trate de NU_SVC modo debería resolver su problema.

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