¿Qué rango de búsqueda para determinar SVM óptimo C y parámetros gamma?

32

Estoy usando SVM para la clasificación y estoy tratando de determinar los parámetros óptimos para los núcleos lineales y RBF. Para el núcleo lineal utilizo la selección de parámetros con validación cruzada para determinar C y para el núcleo RBF utilizo la búsqueda de cuadrícula para determinar C y gamma.

Tengo 20 características (numéricas) y 70 ejemplos de entrenamiento que deberían clasificarse en 7 clases.

¿Qué rango de búsqueda debo usar para determinar los valores óptimos para los parámetros C y gamma?

Kywia
fuente

Respuestas:

31

Consulte una guía práctica de clasificación SVM para algunos indicadores, en particular la página 5.

Recomendamos una "búsqueda de cuadrícula" en y γ mediante validación cruzada. Se prueban varios pares de valores ( C , γ ) y se elige el que tenga la mejor precisión de validación cruzada. Descubrimos que probar secuencias de C y γ en crecimiento exponencial es un método práctico para identificar buenos parámetros (por ejemplo, C = 2 - 5 , 2 - 3 , , 2 15 ; γ = 2 - 15 , 2 - 13 ,Cγ(C,γ)Cγ ).C=25,23,,215;γ=215,213,,23

Recuerde normalizar sus datos primero y, si puede, recopile más datos porque, por lo que parece, su problema podría estar muy indeterminado.

ciri
fuente
¿Deben las pruebas entre pares hacerse manualmente? no hay una biblioteca para lograrlo?
x-rw
11

Consulte la sección 2.3.2 de este documento por Chapelle y Zien. Tienen una buena heurística para seleccionar un buen rango de búsqueda para del kernel RBF y C para el SVM. Yo citoσdo

Para determinar buenos valores de los parámetros libres restantes (por ejemplo, por CV), es importante buscar en la escala correcta. Por lo tanto, fijamos valores predeterminados para y σ que tienen el orden de magnitud correcto. En un problema de clase c , usamos el cuantil 1 / c de las distancias por pares D ρ i j de todos los puntos de datos como valor predeterminado para σ . El valor predeterminado para C son las inversas de la varianza empírica s 2 en el espacio de características, que puede calcularse mediante s 2 = 1doσdo1/ /doreyojρσdos2 de unn×nkernel matrizK.s2=1norteyoKyoyo-1norte2yo,jKyojnorte×norteK

Posteriormente, utilizan múltiplos (por ejemplo, para k { - 2 , . . . , 2 } ) del valor predeterminado como rango de búsqueda en una cuadrícula de búsqueda usando la validación cruzada. Eso siempre funcionó muy bien para mí.2kk{-2,...,2}

Por supuesto, @ciri dijimos, normalizar los datos, etc. siempre es una buena idea.

fabee
fuente
Creo que hay varias formulaciones de kernel rbf iguales. Uno con gamma y otro con sigma, es decir, gamma = 1/2 sigma ^ 2. ¿La gamma en la heurística anterior corresponde a gamma, sigma o sigma ^ 2? He encontrado otras descripciones del mismo heurstic que son para gamma.
maquinaria
12σ2
@fabee ¿Las pruebas de pares deben hacerse manualmente? no hay una biblioteca para lograrlo?
x-rw