Advertencia y validación cruzada de libsvm "alcanzando el número máximo de iteraciones"

20

Estoy usando libsvm en modo C-SVC con un núcleo polinomial de grado 2 y estoy obligado a entrenar múltiples SVM. Cada conjunto de entrenamiento tiene 10 características y 5000 vectores. Durante el entrenamiento, recibo esta advertencia para la mayoría de los SVM que entreno:

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

¿Podría alguien explicar qué implica esta advertencia y, tal vez, cómo evitarla?

También quiero aplicar la validación cruzada para mis modelos para determinar las mejores opciones para 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 qué combinación produce la mejor precisión durante la validación cruzada. ¿Es suficiente? ¿Debería usar más valores en este intervalo, o debería elegir un intervalo más amplio?

Mihai Todor
fuente
Pruebe el modo NU_SVC, debería resolver su problema.
Hosein Bitaraf

Respuestas:

20

Esta advertencia significa que la rutina iterativa utilizada por LIBSVM para resolver el problema de optimización cuadrática para encontrar el hiperplano de margen máximo (es decir, los parámetros y bwsiww

Hay muchas razones por las que esto puede suceder, le sugiero que haga lo siguiente:

  • Normaliza tus datos.
  • Asegúrese de que sus clases estén más o menos equilibradas (tengan un tamaño similar). Si no lo hacen, use el parámetro -w para asignarles diferentes pesos.
  • Prueba diferentes y γ . El núcleo polinómico en LIBSVM también tiene el parámetro 'coef0', ya que el núcleo es γ u v + coeff  gradodoγ
    γtuv+coeff0 0 la licenciatura

Es una buena idea buscar C óptimadodo

Tenga en cuenta que LIBSVM distributivo para Windows debe contener un script de Python llamado grid.py, que puede hacer la selección de parámetros por usted (según la validación cruzada y los rangos de búsqueda especificados). También puede producir gráficos de contorno para la precisión de SVM. Esta herramienta puede ser bastante útil.

La siguiente pregunta sobre StackOverflow y sus preguntas relacionadas también podría ser útil: libsvm Shrinking Heuristics

León
fuente
Gracias por la explicación detallada. Definitivamente aclara el misterio. Hice aproximadamente la misma pregunta sobre SO (el enlace que proporcionó), pero la respuesta que recibí allí se centró principalmente en la heurística cada vez más reducida.
Mihai Todor