Quais são as limitações dos métodos do Kernel e quando usar os métodos do Kernel?

10

Os métodos do kernel são muito eficazes em muitas tarefas de classificação supervisionada. Então, quais são as limitações dos métodos do kernel e quando usar os métodos do kernel? Especialmente na era dos dados em larga escala, quais são os avanços dos métodos do kernel? Qual é a diferença entre os métodos do kernel e o aprendizado de várias instâncias? Se os dados são 500x10000, 500é a contagem de amostras e 10000a dimensão de cada recurso, então, nessa circunstância, podemos usar os métodos do kernel?

mineração
fonte

Respostas:

16

Os métodos do kernel podem ser usados ​​para problemas supervisionados e não supervisionados. Exemplos bem conhecidos são a máquina de vetores de suporte e o agrupamento espectral do kernel , respectivamente.

Os métodos do kernel fornecem uma maneira estruturada de usar um algoritmo linear em um espaço de recurso transformado, para o qual a transformação normalmente não é linear (e para um espaço dimensional mais alto). A principal vantagem que esse truque chamado kernel traz é que padrões não lineares podem ser encontrados a um custo computacional razoável .

Observe que eu disse que o custo computacional é razoável, mas não insignificante. Os métodos do kernel normalmente constroem uma matriz do kernel com N o número de instâncias de treinamento. A complexidade dos métodos do kernel é, portanto, uma função do número de instâncias de treinamento, e não do número de dimensões de entrada. As máquinas de vetores de suporte, por exemplo, têm uma complexidade de treinamento entre O ( N 2 ) e O ( N 3 ) . Para problemas com N muito grande , essa complexidade é atualmente proibitiva.KRN×NNO(N2)O(N3)N

Isso torna os métodos do kernel muito interessantes do ponto de vista computacional quando o número de dimensões é grande e o número de amostras é relativamente baixo (digamos, menos de 1 milhão).

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

SVM para problemas de grande escala

Para problemas dimensionais muito altos, como as 10000dimensões mencionadas na pergunta, geralmente não há necessidade de mapear para um espaço de recurso dimensional mais alto. O espaço de entrada já é bom o suficiente. Para tais problemas, os métodos lineares são ordens de magnitude mais rápidas, com quase o mesmo desempenho preditivo. Exemplos desses métodos podem ser encontrados no LIBLINEAR ou no Vowpal Wabbit .

Os métodos lineares são particularmente interessantes quando você tem muitas amostras em um espaço de entrada de alta dimensão. Quando você possui apenas amostras, o uso de um método de kernel não linear também será barato (já que N é pequeno). Se você tivesse, digamos, 5.000.000 amostras em 10.000 dimensões, os métodos do kernel seriam inviáveis.500N5.000.00010.000

Para problemas de baixa dimensão com muitas instâncias de treinamento (os chamados problemas grandes pequenos p ), os métodos lineares podem gerar baixa precisão preditiva. Para esses problemas, métodos de ensemble como o EnsembleSVM fornecem limites de decisão não lineares a um custo computacional significativamente reduzido em comparação com o SVM padrão.Np

Marc Claesen
fonte
Muito obrigado por respostas tão detalhadas, senhor. Descobri que nas circunstâncias de grandes dimensões, se eu uso o RBFkernel libsvm, ele sempre se ajusta, o classificador atinge uma alta precisão, mas baixa precisão no conjunto de testes. E se eu fizer uma redução de dimensão antes do classificador, e as dimensões reduzidas estiverem próximas do número de amostras de treinamento, o classificador poderá obter um bom lucro entre o conjunto de treinamento e teste. Os resultados correspondem aos resultados mais empíricos? Obrigado.
mineração
Os métodos do kernel são bastante robustos contra a alta dimensionalidade da entrada. Normalmente, você não precisa executar uma redução de dimensionalidade antes de usá-los. É muito importante ajustar todos os parâmetros, principalmente gammapara o kernel RBF. O valor ideal para gammaestá relacionado ao número de dimensões de entrada. A abordagem de ajuste mais comum é a validação cruzada. Se você usou o mesmo valor gammacom e sem redução de dimensionalidade, provavelmente está cometendo um erro.
Marc Claesen
Sim senhor. Eu normalmente uso o pacote grid.pyin libsvmpara fazer a validação cruzada. E na maioria das circunstâncias, para dados de grandes dimensões, os gammasempre muito pequenos, como 0.00001esse nível.
minerando
Olá, senhor, verifiquei seu projeto de código aberto EnsembleSVM. Ele precisa tornar o procedimento de validação cruzada multithreading? E acho que, na fase de previsão, será bom prever grandes dados em lotes e multithreading ou multi-máquinas?
mineração
O uso de multithreading é opcional no EnsembleSVM, mas ativado por padrão em esvm-traine esvm-predict. Para desativar multithreading, use o seguinte sinalizador nessas ferramentas: -threads 1.
Marc Claesen