Ao usar o SVM, precisamos selecionar um kernel.
Gostaria de saber como selecionar um kernel. Algum critério na seleção do kernel?
Ao usar o SVM, precisamos selecionar um kernel.
Gostaria de saber como selecionar um kernel. Algum critério na seleção do kernel?
Respostas:
O kernel é efetivamente uma medida de similaridade, portanto, escolher um kernel de acordo com o conhecimento prévio de invariâncias, conforme sugerido por Robin (+1), é uma boa idéia.
Na falta de conhecimento especializado, o kernel da Função Base Radial cria um bom kernel padrão (depois de estabelecer, é um problema que requer um modelo não linear).
A escolha dos parâmetros do kernel e do kernel / regularização pode ser automatizada, otimizando uma seleção de modelo baseada em valdiação cruzada (ou use os limites da margem do raio ou da extensão). A coisa mais simples a fazer é minimizar um critério de seleção contínua de modelo usando o método simplex Nelder-Mead, que não requer cálculo de gradiente e funciona bem para números sensíveis de hiperparâmetros. Se você tiver mais do que alguns hiperparâmetros para ajustar, a seleção automatizada de modelos provavelmente resultará em um ajuste excessivo severo, devido à variação do critério de seleção de modelos. É possível usar a otimização baseada em gradiente, mas o ganho de desempenho geralmente não vale o esforço de codificá-lo).
A escolha automatizada de kernels e parâmetros de kernel / regularização é uma questão complicada, pois é muito fácil superestimar o critério de seleção de modelo (geralmente baseado em validação cruzada) e você pode acabar com um modelo pior do que o iniciado. A seleção automatizada de modelos também pode influenciar a avaliação de desempenho. Portanto, verifique se a avaliação de desempenho avalia todo o processo de ajuste do modelo (treinamento e seleção de modelos). Para obter detalhes, consulte
GC Cawley e NLC Talbot, Prevenindo o ajuste excessivo na seleção de modelos via regularização bayesiana dos hiperparâmetros, Journal of Machine Learning Research, volume 8, páginas 841-861, abril de 2007. (pdf)
e
GC Cawley e NLC Talbot, excesso de ajuste na seleção de modelos e viés de seleção subsequente na avaliação de desempenho, Journal of Machine Learning Research, vol. 11, pp. 2079-2107, julho de 2010. (pdf)
Se você não tem certeza do que seria melhor, pode usar técnicas automáticas de seleção (por exemplo, validação cruzada, ...). Nesse caso, você pode até usar uma combinação de classificadores (se o seu problema for a classificação) obtidos com kernel diferente.
No entanto , a "vantagem" de trabalhar com um kernel é que você altera a geometria "euclidiana" usual para que ela se ajuste ao seu próprio problema. Além disso, você deve realmente tentar entender qual é o interesse de um kernel para o seu problema, o que é particular na geometria do seu problema . Isso pode incluir:
Se você souber que um separador linear seria bom, poderá usar o Kernel que fornece funções afins (por exemplo, ). Se você acha que limites suaves, no espírito do KNN suave, seriam melhores, então você pode usar um kernel gaussiano ...
Eu sempre sinto que qualquer seleção de hiper parâmetros para SVMs é feita via validação cruzada em combinação com a pesquisa em grade.
Em geral, o kernel do RBF é uma primeira opção razoável. Além disso, o kernel linear é um caso especial do RBF. Em particular, quando o número de recursos é muito grande, pode-se usar apenas o kernel linear.