Kernel linear e kernel não linear para máquina de vetores de suporte?

45

Ao usar a máquina de vetores de suporte, existem diretrizes para escolher o kernel linear versus o não linear, como o RBF? Certa vez, ouvi dizer que o kernel não linear tende a não ter um bom desempenho quando o número de recursos é grande. Há alguma referência sobre esse problema?

user3269
fonte
1
na minha opinião, isso se baseia no problema em questão e é perigoso usar tais regras na prática.
htrahdis

Respostas:

66

Geralmente, a decisão é usar o kernel linear ou um RBF (também conhecido como Gaussiano). Existem dois fatores principais a serem considerados:

  1. Resolver o problema de otimização de um kernel linear é muito mais rápido, veja, por exemplo, LIBLINEAR.
  2. Normalmente, o melhor desempenho preditivo possível é melhor para um núcleo não linear (ou pelo menos tão bom quanto o linear).

Foi demonstrado que o kernel linear é uma versão degenerada do RBF ; portanto, o kernel linear nunca é mais preciso do que um kernel RBF ajustado corretamente. Citando o resumo do artigo que vinculei:

A análise também indica que, se a seleção completa do modelo usando o kernel Gaussiano foi realizada, não há necessidade de considerar o SVM linear.

Uma regra básica é abordada brevemente no guia prático da NTU para apoiar a classificação de vetores (Apêndice C).

Se o número de recursos for grande, talvez não seja necessário mapear os dados para um espaço dimensional mais alto. Ou seja, o mapeamento não linear não melhora o desempenho. Usar o kernel linear é bom o suficiente, e apenas se procura o parâmetro C.

Sua conclusão é mais ou menos certa, mas você tem o argumento ao contrário. Na prática, o kernel linear tende a ter um desempenho muito bom quando o número de recursos é grande (por exemplo, não há necessidade de mapear para um espaço de recurso dimensional ainda mais alto). Um exemplo típico disso é a classificação de documentos, com milhares de dimensões no espaço de entrada.

Nesses casos, os núcleos não lineares não são necessariamente significativamente mais precisos que os lineares. Isso basicamente significa que os kernels não lineares perdem seu apelo: eles exigem muito mais recursos para treinar com pouco ou nenhum ganho no desempenho preditivo, então por que se preocupar?

TL; DR

Sempre tente linear primeiro, pois é muito mais rápido treinar (teste AND). Se a precisão for suficiente, dê um tapinha nas costas por um trabalho bem feito e passe para o próximo problema. Caso contrário, tente um kernel não linear.

Marc Claesen
fonte
1
Eu tenho esta explicação para o truque do kernel: stats.stackexchange.com/questions/131138/…
37

Andrew Ng fornece uma boa explicação geral neste vídeo a partir das 14:46, embora valha a pena assistir o vídeo inteiro.

Pontos chave

  • Use kernel linear quando o número de recursos for maior que o número de observações.
  • Use o kernel gaussiano quando o número de observações for maior que o número de recursos.
  • Se o número de observações for maior que 50.000, a velocidade pode ser um problema ao usar o kernel gaussiano; portanto, pode-se querer usar o kernel linear.
Akavall
fonte
acordado ................
datmannz 13/05
1
link está morto: Eu acho que este é o mesmo vídeo: youtube.com/watch?v=hDh7jmEGoY0
ihebiheb