Qual kernel do SVM usar para um problema de classificação binária?


9

Sou iniciante no que diz respeito ao suporte a máquinas vetoriais. Existem algumas diretrizes que indicam qual kernel (por exemplo, linear, polinomial) é o mais adequado para um problema específico? No meu caso, tenho que classificar as páginas da Web de acordo com elas conterem alguma informação específica ou não, ou seja, tenho um problema de classificação binária.

Você pode dizer em geral qual kernel é mais adequado para esta tarefa? Ou tenho que tentar vários deles no meu conjunto de dados específico para encontrar o melhor? A propósito, estou usando a biblioteca Python scikit-learn que faz uso da biblioteca libSVM.


como você está representando suas páginas da web? saco de palavras? A escolha do kernel depende da medida de similaridade que você deseja no seu espaço de entrada.
Memming

@Memming Sim, estou usando uma representação de palavras em inglês. O que você quer dizer exatamente com medida de similaridade? Estou investigando se uma página da Web contém algum tipo específico de informação ou não.
Pemistahl

Você pode achar este tutorial útil se ainda não o tiver verificado ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). O Libsvm possui um esquema de validação cruzada dobra em k embutido para escolher entre modelos e parâmetros de modelo.
Zoran

@ PeterStahl Além disso, depende de que tipo de limites de classe você espera. Não tenho experiência com espaço para palavras, então não posso ajudá-lo muito.
Memming

Respostas:


10

Você realmente encontrou uma questão em aberto na literatura. Como você diz, há uma variedade de núcleos (por exemplo, função linear, base radial, sigmóide, polinomial) e executará sua tarefa de classificação em um espaço definido por suas respectivas equações. Que eu saiba, ninguém demonstrou definitivamente que um kernel sempre se sai melhor em um tipo de tarefa de classificação de texto em relação a outro.

Uma coisa a considerar é que cada função do kernel possui 1 ou mais parâmetros que precisarão ser otimizados para o seu conjunto de dados, o que significa que, se você estiver fazendo isso corretamente, deverá ter uma segunda coleção de treinamento em que possa investigue os melhores valores para esses parâmetros. (Digo uma segunda coleção de espera, porque você já deve ter uma que esteja usando para descobrir os melhores recursos de entrada para o seu classificador.) Fiz um experimento há algum tempo, no qual fiz uma otimização em larga escala de cada um dos esses parâmetros para uma tarefa simples de classificação textual e descobriram que cada núcleo parecia ter um desempenho razoavelmente bom, mas o fazia em configurações diferentes. Se me lembro corretamente dos resultados, o sigmoid teve o melhor desempenho, mas o fez com ajustes de parâmetros muito específicos - os que levaram mais de um mês para a minha máquina encontrar.


Muito obrigado por seus pensamentos. Desculpe pela minha reação tardia. Estou escrevendo minha tese de mestrado no momento em que preciso avaliar os resultados de vários classificadores, não apenas o SVM. Infelizmente, não tenho tempo para testar muitas combinações de parâmetros. É por isso que provavelmente vou me ater ao kernel linear.
Pemistahl

Boa sorte! Eu acho que é uma boa ligação.
Kyle.

7

Experimente o kernel gaussiano.

O kernel gaussiano é frequentemente testado primeiro e acaba sendo o melhor kernel em muitos aplicativos (com seus recursos de palavras-chave também). Você deve experimentar o kernel linear também. Não espere que ele dê bons resultados, os problemas de classificação de texto tendem a ser não lineares. Mas você tem uma ideia dos seus dados e pode ficar feliz com o quanto a não linearidade melhora seus resultados.

Certifique-se de validar corretamente a largura do kernel e pense em como deseja normalizar seus recursos (tf-idf etc).

Eu diria que você pode melhorar seus resultados com uma melhor normalização de recursos mais do que com a escolha de um kernel diferente (ou seja, não o gaussiano).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.