procedimientos pensamiento heuristicos heuristico heuristica ejemplos caracteristicas machine-learning svm libsvm

machine learning - pensamiento - Libsvm Heurística de contracción



pensamiento heuristico (1)

Estoy usando libsvm en modo C-SVC con un kernel polinomial de grado 2 y estoy obligado a entrenar múltiples SVM. Durante el entrenamiento, recibo una o ambas advertencias para algunos de los SVM que entreno:

WARNING: using -h 0 may be faster * WARNING: reaching max number of iterations optimization finished, #iter = 10000000

Encontré la descripción para el parámetro h :

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)

y traté de leer la explicación de la documentación de libsvm, pero es un nivel demasiado alto para mí. ¿Puede alguien proporcionar una explicación para un profano y, tal vez, algunas sugerencias como establecer esto serían beneficiosas porque ...? Además, sería útil saber si al establecer este parámetro para todos los SVM que entreno, puede producir un impacto negativo en la precisión para aquellos SVM que no dan explícitamente esta advertencia.

No estoy seguro de qué hacer con la otra advertencia.

Solo para dar más detalles: mis juegos de entrenamiento tienen 10 atributos (características) y consisten de 5000 vectores.

Actualizar:

En caso de que alguien más obtenga el "máximo número de iteraciones", parece ser causado por problemas de estabilidad numérica. Además, esto producirá un tiempo de entrenamiento muy lento. Los núcleos polinomiales se benefician del uso de técnicas de validación cruzada para determinar el mejor valor para la regularización (el parámetro C) y, en el caso de los núcleos polinomiales, para mí ayudó a mantenerlo más pequeño que 8. Además, si el núcleo no es homogéneo / sum (/ gamma x_i s_i + coef0) ^ d (lo sentimos, LaTeX no es compatible con SO), donde coef0! = 0, entonces la validación cruzada puede implementarse con una técnica de búsqueda de cuadrícula para gamma y C, ya que, en este caso, el valor predeterminado para gamma (1 / number_of_features) podría no ser la mejor opción. Aún así, a partir de mis experimentos, probablemente no desee que la gamma sea demasiado grande, ya que causará problemas numéricos (estoy intentando obtener un valor máximo de 8 para ella).

Para obtener más inspiración sobre los posibles valores de gamma y C, se debe probar metiendo en grid.py.


La heurística decreciente está ahí para acelerar la optimización. Como se dice en las Preguntas frecuentes, a veces ayudan, y otras no. Creo que es una cuestión de tiempo de ejecución, en lugar de convergencia.

Sin embargo, el hecho de que la optimización alcance el número máximo de iteraciones es interesante. Es posible que desee jugar con la tolerancia (parámetro de costo), o echar un vistazo a los problemas individuales que causan esto. ¿Los conjuntos de datos son grandes?