Procedimento de seleção variável para classificação binária

29

Qual é a seleção de variável / recurso que você prefere para a classificação binária quando há muito mais variáveis ​​/ recurso do que observações no conjunto de aprendizado? O objetivo aqui é discutir qual é o procedimento de seleção de recurso que reduz melhor o erro de classificação.

Podemos corrigir as notações de consistência: para , seja o conjunto de observações de aprendizado do grupo . Então é o tamanho do conjunto de aprendizado. Definimos como o número de recursos (ou seja, a dimensão do espaço do recurso). Deixe denotar a ésima coordenada de .i{0,1}{x1i,,xnii}in0+n1=npx[i]ixRp

Por favor, forneça referências completas se você não puder fornecer os detalhes.

EDIT (atualizado continuamente): Procedimentos propostos nas respostas abaixo

Como este é um wiki da comunidade, pode haver mais discussão e atualização

Eu tenho uma observação: em certo sentido, todos vocês dão um procedimento que permite a ordenação de variáveis, mas não a seleção de variáveis ​​(você é bastante evasivo sobre como selecionar o número de recursos, acho que todos usam validação cruzada?) as respostas nessa direção? (como este é um wiki da comunidade, você não precisa ser o responsável pela resposta para adicionar informações sobre como selecionar o número de variáveis? Abri uma pergunta nessa direção aqui Validação cruzada em dimensão muito alta (para selecionar o número de variáveis variáveis ​​usadas em classificação dimensional muito alta) )

robin girard
fonte
É uma pergunta ou uma piscina? Neste último caso, deve ser um wiki da comunidade. Se for o primeiro, dê mais detalhes sobre o que você deseja alcançar? Por exemplo, é uma seleção totalmente relevante ou bastante otimizada? Quanto são muitos? Quão difícil é o problema de classificação?
piscina ... muitos meios 1000 características ou mais e menos de 100 observações.
Robin girard

Respostas:

18

Uma abordagem muito popular é a regressão logística penalizada, na qual se maximiza a soma da probabilidade logarítmica e um termo de penalização que consiste na norma L1 ("laço"), na norma L2 ("cume"), uma combinação das duas ("elástico") ou uma penalidade associada a grupos de variáveis ​​("laço de grupo"). Esta abordagem tem várias vantagens:

  1. Possui fortes propriedades teóricas, por exemplo, consulte este artigo da Candes & Plan e conexões próximas ao sensor comprimido;
  2. Possui exposições acessíveis, por exemplo, em Elements of Statistical Learning de Friedman-Hastie-Tibshirani (disponível on-line);
  3. Possui software prontamente disponível para os modelos. O R possui o pacote glmnet , que é muito rápido e funciona bem com conjuntos de dados bastante grandes. O Python possui o scikit-learn , que inclui regressão logística penalizada por L1- e L2;
  4. Funciona muito bem na prática, como mostrado em muitos documentos de aplicação em reconhecimento de imagem, processamento de sinais, biometria e finanças.
gappy
fonte
10

Tenho uma ligeira preferência por florestas aleatórias de Leo Breiman & Adele Cutleer por vários motivos:

  • permite lidar com preditores categóricos e contínuos, bem como com o tamanho da amostra desequilibrada da classe;
  • como método ensemble / incorporado, a validação cruzada é incorporada e permite estimar um erro de generalização;
  • é relativamente insensível aos seus parâmetros de ajuste (% de variáveis ​​selecionadas para o cultivo de uma árvore, número de árvores construídas);
  • fornece uma medida original de importância variável e é capaz de descobrir interações complexas entre variáveis ​​(embora isso possa levar a resultados difíceis de ler).

Alguns autores argumentaram que o desempenho foi tão bom quanto o SVM ou o Gradient Boosting Machines (veja, por exemplo, Cutler et al., 2009, para o último ponto).

Uma cobertura completa de suas aplicações ou vantagens pode estar fora do tópico, por isso sugiro os Elementos de Aprendizagem Estatística de Hastie et al. (cap. 15) e Sayes et al. (2007) para leituras adicionais.

Por último, mas não menos importante, ele possui uma boa implementação em R, com o pacote randomForest . Outros pacotes R também o estendem ou usam, por exemplo, parte e sinal de intercalação .

Referências:

Cutler, A., Cutler, DR, e Stevens, JR (2009). Tree-Based Methods, in High-Dimensional Data Analysis in Cancer Research , Li, X. e Xu, R. (eds.), Pp. 83-101, Springer.

Saeys, Y., Inza, I. e Larrañaga, P. (2007). Uma revisão das técnicas de seleção de recursos em bioinformática. Bioinformatics , 23 (19) : 2507-2517.

chl
fonte
7

Digitalização de metrópoles / MCMC

  • Selecione alguns recursos aleatoriamente para começar, treine o classificador apenas neles e obtenha o erro.
  • Faça algumas alterações aleatórias neste conjunto de trabalho - remova um recurso, adicione outro aleatoriamente ou substitua algum recurso por um que não esteja sendo usado no momento.
  • Treine o novo classificador e obtenha seu erro; armazene na dEdiferença o erro no novo conjunto menos o erro no conjunto anterior.
  • Com probabilidade, min(1;exp(-beta*dE))aceite essa alteração, caso contrário, rejeite-a e tente outra alteração aleatória.
  • Repita-o por um longo tempo e finalmente retorne o conjunto de trabalho que atingiu globalmente o menor erro.

Você pode estendê-lo com algum controle mais sábio do betaparâmetro. A maneira mais simples é usar o recozimento simulado quando você aumenta beta(abaixa a temperatura na analogia física) ao longo do tempo para reduzir as flutuações e conduzir o algoritmo ao mínimo. Mais difícil é usar a troca de réplicas .

user88
fonte
5

Se você está interessado apenas no desempenho da generalização, provavelmente é melhor não executar nenhuma seleção de recurso e usar a regularização (por exemplo, regressão de crista). Houve vários desafios abertos na comunidade de aprendizado de máquina na seleção de recursos, e os métodos que se baseiam na regularização e não na seleção de recursos geralmente têm um desempenho tão bom quanto, se não melhor.

Dikran Marsupial
fonte
3

Seleção para frente gananciosa.

Os passos para este método são:

  • Verifique se você possui um conjunto de trem e validação
  • Repita o seguinte
    • Treine um classificador com cada recurso individual que ainda não foi selecionado e com todos os recursos selecionados anteriormente
    • Se o resultado melhorar, adicione o recurso de melhor desempenho, caso contrário, interrompa o procedimento
Peter Smit
fonte
Como você "treina" seu classificador? Presumivelmente, isso é feito no conjunto de treinamento. Se for um SVM (Support vector Machine), existem vários parâmetros para tentar durante o treinamento. Cada um é testado com relação ao conjunto de validação (teste)? Ou você está usando a validação cruzada k-fold? Quantas vezes você está usando o conjunto de validação (teste) para verificar seu desempenho - presumivelmente é precisão. Desculpe ser pedante, mas esta é uma resposta mal definida e corre o risco de ser excessiva.
Thylacoleo
@ Thylacoleo Este é um método básico e ganancioso, muito bruto. Muitas vezes, você mantém sua validação definida da mesma forma durante as execuções, mas o que você quiser está ok.
Peter Smit
2

Eliminação para trás.

Comece com o conjunto completo, treine iterativamente o classificador nos recursos restantes e remova-o com a menor importância; pare quando o erro do classificador aumentar rapidamente / se tornar inaceitável.

A importância pode ser obtida removendo iterativamente cada recurso e verifique o aumento de erro ou adaptado do classificador, se ele o produzir (como no caso da Floresta Aleatória).

user88
fonte
2
Mas a pergunta diz que há mais variáveis ​​que observações. Portanto, não é possível começar com o conjunto completo.
Rob Hyndman
Qual é o problema?
2
Você não pode ajustar um modelo que tenha mais variáveis ​​que observações. Não há graus de liberdade suficientes para a estimativa de parâmetros.
22410 Rob Hyndman
1
No cálculo F de Fisher, você calcula F (n - k - p) / (k - 1) * ...com no número de observações, ko número de classes (2 aqui) e po número de variáveis. n - 2 - p < 0quando n < p + 2(qual é o caso aqui) que leva a F < 0. Isso não seria um problema?
Matthieu
3
A regressão regularizada ou totalmente bayesiana permitiria obter uma solução única com o conjunto completo de preditores - sem dúvida o mesmo vale para algumas outras técnicas de ML.
Scortchi - Restabelece Monica