Seleção de recursos para máquinas de vetores de suporte

9

Minha pergunta é tripla

No contexto de máquinas de vetores de suporte "Kernelized"

  1. A seleção de variável / recurso é desejável - especialmente porque regularizamos o parâmetro C para evitar o excesso de ajuste e o principal motivo por trás da introdução de kernels em um SVM é aumentar a dimensionalidade do problema; nesse caso, reduzir as dimensões por redução de parâmetro parece contra-intuitivo
  2. Se a resposta para a 1ª pergunta for "NÃO", então, Em que condições a resposta mudaria que alguém deveria ter em mente?
  3. Existem bons métodos que foram tentados para reduzir os recursos para SVMs na biblioteca scikit-learn de python - eu tentei o método SelectFpr e estou procurando pessoas com experiências com métodos diferentes.
Nitin Srivastava
fonte
11
A seleção de recursos sempre ajudará, a menos que seus recursos iniciais tenham uma qualidade super alta, para começar. O Sklearn oferece muitas bibliotecas de seleção de recursos diferentes ( scikit-learn.org/stable/modules/feature_selection.html ) Sou parte da RFE.
David
11
Você não mencionou seu contexto - observe que, se ele estiver em um contexto comercial, todos os recursos que permanecerem no modelo exigirão manutenção em algum nível - há um custo monetário literal envolvido se você tiver mais variáveis, no sentido de que requer, por exemplo, mais esforço de coleta de dados, tempo do DBA e tempo de programação. Essa consideração obviamente não se aplica se for para um Kaggle comp ou similar, e se o uso de mais 200 dos recursos disponíveis no conjunto de dados fornecer um aumento de 0,01% no desempenho, você está no dinheiro.
Robert de Graaf

Respostas:

3

Pessoalmente, gosto de dividir a seleção de recursos em dois:

  • seleção de recursos não supervisionados
  • seleção de recursos supervisionados

A seleção de recursos não supervisionados são coisas como clustering ou PCA em que você seleciona o intervalo de recursos menos redundante (ou cria recursos com pouca redundância). A seleção supervisionada de recursos é como Lasso, na qual você seleciona os recursos com maior poder preditivo.

Pessoalmente, prefiro o que chamo de seleção supervisionada de recursos. Portanto, ao usar uma regressão linear, selecionaria recursos com base no Lasso. Existem métodos semelhantes para induzir escassez em redes neurais.

Mas, na verdade, eu não vejo como eu faria isso em um método usando kernels, então você provavelmente está melhor usando o que eu chamo de seleção de recursos não supervisionados.

EDIT: você também perguntou sobre regularização. Vejo a regularização como ajudando principalmente porque trabalhamos com amostras finitas e, portanto, a distribuição de treinamento e teste sempre será um pouco diferente, e você deseja que seu modelo não se ajuste demais. Não sei se isso elimina a necessidade de evitar a seleção de recursos (se você realmente tiver muitos). Penso que a seleção de recursos (ou a criação de um subconjunto menor deles) ajuda a tornar os recursos mais robustos e a evitar o modelo de aprender com correlações espúrias. Portanto, a regularização ajuda, mas não tenho certeza de que é uma alternativa completa. Mas ainda não pensei o suficiente sobre isso.

Ricardo Cruz
fonte