Selección de parámetros SVM

9

¿Existen mejores métodos alternativos para elegir C y Gamma que produzcan un mejor rendimiento de entrenamiento?

Juan
fuente

Respuestas:

5

La búsqueda en la cuadrícula es lenta, ya que pasa mucho tiempo investigando configuraciones de hiperparámetros que no son ni cerca óptimas. Una solución mejor es el algoritmo simplex de Nelder-Mead , que no requiere el cálculo de la información de gradiente y es fácil de implementar (debe haber suficiente información en la página de Wikipedia). También puede haber algún código java en la caja de herramientas de Weka , sin embargo, trabajo en MATLAB y no he mirado a Weka con gran detalle.

SMO es un algoritmo para encontrar los parámetros del modelo, en lugar de los hiperparámetros.

Dikran Marsupial
fuente
¿Podría proporcionar su implementación matlab?
Zach
1
Aquí hay uno theoval.cmp.uea.ac.uk/matlab/#optim pero si ya tiene la caja de herramientas de optimización, entonces fminsearch también es una implementación del método IIRC de Nelder-Mead.
Dikran Marsupial
5

El método simplex de Nelder-Mead puede involucrar tantas evaluaciones de funciones como una simple búsqueda de cuadrícula. Por lo general, la superficie de error es lo suficientemente lisa cerca de los valores óptimos de los parámetros que una búsqueda de grilla gruesa seguida de una búsqueda más fina en una región más pequeña debería ser suficiente.

Si está interesado en la optimización basada en gradiente de C y gamma, existen métodos como optimizar los límites de margen de radio u optimizar la tasa de error en un conjunto de validación. El cálculo del gradiente de la función objetivo implica algo así como un tren SVM, pero un descenso de gradiente simple puede implicar solo unas pocas docenas de iteraciones. (Consulte http://olivier.chapelle.cc/ams/ para ver un artículo y una implementación de Matlab).

Innuo
fuente
En mi experiencia, nelder-mead suele ser más rápido que la búsqueda de cuadrícula y el descenso del gradiente es solo un poco más rápido, ya que requiere menos iteraciones, el costo de calcular el gradiente es alto. Entonces, si tiene una implementación que proporciona un descenso de gradiente, úsela, pero Nelder-Mead probablemente no se quedará muy atrás. Por supuesto, tan pronto como tenga más de dos hiperparámetros para ajustar la búsqueda de cuadrícula, se convierte inmediatamente en el método más lento. Sería interesante ver un estudio de las eficiencias comparativas de cada método.
Dikran Marsupial
Tiene razón en que si el número de parámetros es más que un par, la búsqueda en la cuadrícula no es viable. Pero lo mismo es cierto de Nelder-Mead, porque el tamaño del símplex está determinado por la dimensionalidad.
Innuo
solo en la misma medida que para el descenso de gradiente, agregar una dimensión adicional al problema solo agrega un punto adicional al símplex, por lo que al igual que el descenso de gradiente, se escala aproximadamente linealmente en el número de hiperparámetros. Lo he usado con problemas con más de 40 hiperparámetros y es solo un poco más lento que el descenso del gradiente (tiende a ajustarse demasiado en la selección del modelo de cualquier manera, aunque con tantos hiperparámetros).
Dikran Marsupial
0

Aquí hay una entrada en el blog de Alex Smola relacionada con su pregunta

Aquí hay una cita:

[...] elija, digamos 1000 pares (x, x ') al azar de su conjunto de datos, calcule la distancia de todos esos pares y tome la mediana, el cuantil 0.1 y el 0.9. Ahora elija λ para ser el inverso de cualquiera de estos tres números. Con un poco de validación cruzada, descubrirá cuál de los tres es el mejor. En la mayoría de los casos, no necesitará buscar más.

carlosdc
fuente