Como executar a regressão logística com um grande número de recursos?

10

Eu tenho um conjunto de dados com 330 amostras e 27 recursos para cada amostra, com um problema de classe binária para Regressão Logística.

De acordo com a "regra se dez", preciso de pelo menos 10 eventos para que cada recurso seja incluído. No entanto, tenho um conjunto de dados desequilibrado, com 20% de classe positiva e 80% de classe negativa.

Isso me dá apenas 70 eventos, permitindo que aproximadamente apenas 7/8 sejam incluídos no modelo Logístico.

Eu gostaria de avaliar todos os recursos como preditores, não quero escolher nenhum recurso manualmente.

Então, o que você sugeriria? Devo fazer todas as combinações possíveis de 7 recursos? Devo avaliar cada recurso sozinho com um modelo de associação e escolher apenas os melhores para um modelo final?

Também estou curioso sobre o manuseio de recursos categóricos e contínuos, posso misturá-los? Se eu tiver um [0-1] categórico e um [0-100] contínuo, devo normalizar?

Atualmente, estou trabalhando com Python.

Muito obrigado por sua ajuda!

LucasRamos
fonte
"Também estou curioso sobre o manuseio de recursos categóricos e contínuos" , acredito que isso faria uma pergunta separada. De fato, já foi solicitado aqui .
E_net4 é visível
2
existe uma diferença entre não ter amostras suficientes e recursos irrelevantes. Eu não concentrar demais em escolher exatamente 7 características por causa de alguma regra simplista ...
oW_
11
Faça o que você faria de qualquer maneira: use a validação cruzada para otimizar a regularização. Sugiro rede elástica (L1 + L2).
Emre

Respostas:

6

Para reduzir seu modelo para 7 variáveis, existem algumas abordagens que você pode adotar:

  1. PCA (não supervisionado): isso cria "novas" combinações lineares de seus dados, em que cada componente de processo explica a maior variação possível nos dados. Portanto, os 7 primeiros componentes (em 27) devem ser capazes de explicar uma boa porcentagem da variação em seus dados. Você pode então conectar esses sete componentes à sua equação de regressão logística. A desvantagem aqui é que, como os componentes são combinações de suas variáveis ​​originais, você perde alguma interpretabilidade com seu modelo de regressão. No entanto, deve produzir uma precisão muito boa. Essa mesma técnica aplicada a outros métodos de redução de dimensão, como
  2. Outro método comum na regressão é avançar passo a passo, onde você começa com uma variável e adiciona outra a cada etapa, que é mantida ou descartada com base em alguns critérios (geralmente uma pontuação BIC ou AIC). A regressão passo a passo para trás é a mesma coisa, mas você inicia com todas as variáveis ​​e remove uma uma vez novamente com base em alguns critérios. Com base em uma breve pesquisa, não parece que o python tenha uma regressão passo a passo, mas eles fazem um algoritmo de eliminação de recurso semelhante descrito nesta publicação da Data Science .
  3. eu1 1eu1 1

Como o @ E_net4 comentou, sua pergunta contínua é abordada em outro post.

bnorm
fonte
5

Você está levando a "Regra dos 10" muito a sério. É uma regra muito difícil. Não se destina a ser usado como você está usando.

Parece que você está pensando: "Eu tenho apenas 70 instâncias positivas; portanto, pela regra dos 10, só posso usar 7 recursos; como posso escolher quais 7 recursos usar?"

Não é isso que significa a Regra dos 10. Não é uma regra que especifique quantos recursos você tem permissão para usar. A Regra dos 10 é descritiva, não prescritiva, e é uma diretriz aproximada: se o número de instâncias for muito menor que 10 vezes o número de recursos, você corre um risco especialmente alto de sobreajuste e pode obter resultados ruins.

Então o que você deveria fazer? Você deve fazer o que faria de qualquer maneira: use a regularização e a validação cruzada para selecionar os hiperparâmetros da regularização. Além disso, é importante ter um conjunto de testes de espera que você não toque até ter finalizado tudo sobre o classificador, para evitar estimativas de precisão excessiva ou excessiva.

E se você puder obter mais dados, isso realmente ajudaria.

Finalmente, como você tem classes desequilibradas, considere ler sobre desequilíbrio de classe e métodos para lidar com isso.

DW
fonte