Qual intervalo de pesquisa para determinar os parâmetros C e gama ideais do SVM?

32

Estou usando o SVM para classificação e estou tentando determinar os parâmetros ideais para os núcleos linear e RBF. Para o kernel linear, utilizo a seleção de parâmetros com validação cruzada para determinar C e, para o kernel RBF, uso a pesquisa em grade para determinar C e gama.

Eu tenho 20 recursos (numéricos) e 70 exemplos de treinamento que devem ser classificados em 7 classes.

Qual intervalo de pesquisa devo usar para determinar os valores ideais para os parâmetros C e gama?

Kywia
fonte

Respostas:

31

Confira Um guia prático da Classificação SVM para alguns indicadores, particularmente a página 5.

Recomendamos uma "pesquisa em grade" em e usando a validação cruzada. Vários pares de valores são tentados e aquele com a melhor precisão de validação cruzada é escolhido. Descobrimos que tentar sequências crescentes exponencialmente de e é um método prático para identificar bons parâmetros (por exemplo, ).γ ( C , γ ) C γ C = 2 - 5 , 2 - 3 , , 2 15 ; γ = 2 - 15 , 2 - 13 , , 2 3Cγ(C,γ)CγC=25,23,,215;γ=215,213,,23

Lembre-se de normalizar seus dados primeiro e, se puder, colete mais dados, porque, pelo que parece, seu problema pode ser bastante sub-determinado.

ciri
fonte
O teste por pares deve ser feito manualmente? não há uma biblioteca para alcançá-lo?
X-rw
11

Confira a seção 2.3.2 deste artigo de Chapelle e Zien. Eles têm uma boa heurística para selecionar um bom intervalo de pesquisa para do kernel RBF e C para o SVM. Eu citoσC

Para determinar bons valores dos demais parâmetros livres (por exemplo, por CV), é importante pesquisar na escala correta. Portanto, fixamos valores padrão para e σ que têm a ordem correta de magnitude. Em um problema da classe c , usamos o quantil 1 / c das distâncias aos pares D ρ i j de todos os pontos de dados como padrão para σ . O padrão para C é o inverso da variação empírica s 2 no espaço das feições, que pode ser calculado por s 2 = 1Cσc1/cDijρσCs2 a partir de umnxnnúcleo matrizK.s2=1niKii1n2i,jKijn×nK

Em seguida, eles usam múltiplos (por exemplo, para k { - 2 , . . . , 2 } ) do valor padrão como intervalo de pesquisa em uma grade-pesquisar usando validação cruzada. Isso sempre funcionou muito bem para mim.2kk{2,...,2}

É claro que dissemos @ciri, normalizar os dados etc. é sempre uma boa ideia.

fabee
fonte
Eu acho que existem várias formulações iguais de rbf kernel. Um com gama e outro com sigma, ou seja, gama = 1 / 2sigma ^ 2. A gama na heurística acima corresponde a gama, sigma ou sigma ^ 2? Eu encontrei outras descrições da mesma heurstic que são para gama.
máquinas
12σ2
@fabee O teste por pares deve ser feito manualmente? não há uma biblioteca para alcançá-lo?
X-rw