Geralmente, a decisão é usar o kernel linear ou um RBF (também conhecido como Gaussiano). Existem dois fatores principais a serem considerados:
- Resolver o problema de otimização de um kernel linear é muito mais rápido, veja, por exemplo, LIBLINEAR.
- 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.