Binning ideal com relação a uma determinada variável de resposta

11

Estou procurando o método ideal de binning (discretização) de uma variável contínua em relação a uma variável binária de resposta (destino) e com o número máximo de intervalos como parâmetro.

exemplo: eu tenho um conjunto de observações de pessoas com variáveis ​​"height" (numeral contínuo) e "has_back_pains" (binário). Eu quero discretizar a altura em 3 intervalos (grupos), no máximo, com diferentes proporções de pessoas com dores nas costas, para que o algoritmo maximize a diferença entre os grupos (com restrições dadas, por exemplo, que cada intervalo tenha pelo menos x observações).

A solução óbvia para esse problema seria usar árvores de decisão (um modelo simples de uma variável), mas não consigo encontrar nenhuma função em R que tivesse "número máximo de ramificações" como parâmetro - todas elas dividem a variável em 2 gropus (<= x e> x). O minerador SAS tem um parâmetro "ramo máximo", mas estou procurando uma solução não comercial.

algumas de minhas variáveis ​​possuem apenas alguns valores exclusivos (e podem ser tratadas como variáveis ​​discretas), mas quero discretizá-las também em um número menor de intervalos.

A solução mais próxima do meu problema é implementada no pacote smbinning no R (que depende da função ctree do pacote party), mas tem duas desvantagens: é impossível definir o número de intervalos (no entanto, você pode encontrar uma maneira de contornar isso alterando o parâmetro p) e não funciona quando o vetor de dados possui menos de 10 valores exclusivos. De qualquer forma, você pode ver o exemplo de saída aqui (as colunas Cutpoint e Odds são cruciais):

Cutpoint CntRec CntGood CntBad CntCumRec CntCumGood CntCumBad PctRec BadRate   Odds  LnOdds     WoE     IV
1   <= 272   9081     169   8912      9081        169      8912 0.1874  0.9814 0.0190 -3.9653 -0.6527 0.0596
2   <= 311   8541     246   8295     17622        415     17207 0.1762  0.9712 0.0297 -3.5181 -0.2055 0.0068
3   <= 335   2986     163   2823     20608        578     20030 0.0616  0.9454 0.0577 -2.8518  0.4608 0.0163
4  Missing  27852    1125  26727     48460       1703     46757 0.5747  0.9596 0.0421 -3.1679  0.1447 0.0129
5    Total  48460    1703  46757        NA         NA        NA 1.0000  0.9649 0.0364 -3.3126  0.0000 0.0956

Estou ciente de que o binning resulta em perda de informações e que existem métodos melhores, mas vou usá-lo para visualização de dados e tratar essas variáveis ​​como um fator.

Dominix
fonte
O SPSS possui o comando Optimal Binning. Google SPSS Algorithms Optimal Binning.
ttnphns
Você já viu este post stackoverflow.com/questions/7018954/... Ele menciona o uso de informações sobre o valor, mas não está claro o que entende por IV = 1, ou não explica como obter esse
adam

Respostas:

6

Ao ler este livro aqui (Nagarajan, 2103 [1]), deparei-me com esta informação valiosa que estou descaradamente citando aqui:

  • Usando conhecimento prévio sobre os dados. Os limites dos intervalos são definidos, para cada variável, para corresponder a cenários do mundo real significativamente diferentes, como a concentração de um poluente específico (ausente, perigoso, letal) ou classes de idade (criança, adulto, idoso).

  • Usando heurística antes de aprender a estrutura da rede. Alguns exemplos são: regras de Sturges, Freedman-Diaconis ou Scott (Venables e Ripley, 2002).

  • Escolhendo o número de intervalos e seus limites para equilibrar a precisão e a perda de informações (Kohavi e Sahami, 1996), novamente uma variável por vez e antes que a estrutura da rede seja aprendida. Uma abordagem semelhante, considerando pares de variáveis, é apresentada em Hartemink (2001).

  • Realização de aprendizado e discretização iterativamente até que nenhuma melhoria seja feita (Friedman e Goldszmidt, 1996).

Essas estratégias representam diferentes compromissos entre a precisão da representação discreta dos dados originais e a eficiência computacional da transformação.

Essas informações são fornecidas, caso você deseje justificar o método de classificação que deseja usar e não apenas usar um pacote diretamente.

[1]: Nagarajan R. (2013),
redes bayesianas em R, com aplicações em biologia de sistemas
Springer

KarthikS
fonte
3

Experimente o pacote de informações para R. https://cran.r-project.org/web/packages/Information/Information.pdf https://cran.r-project.org/web/packages/Information/vignettes/Information-vignette .html

O pacote de informações possui funcionalidade para calcular WoE e IV (o número de posições é um parâmetro flexível, o padrão é 10) e é um instrumento útil para a exploração de dados e, consequentemente, para o binning. A saída não contém Odds; e não é possível especificar zero como uma bandeja separada (para minhas tarefas, zero geralmente é uma bandeja válida); e seria bom obter uma saída do pacote de informações que seria como a do iniciante. No entanto, o que foi dito sobre recursos interessantes do pacote Information, mas ainda não disponíveis, outros pacotes R para WoE e IV (ai, klaR) não impressionaram instrumentos tão úteis quanto o pacote Information, na verdade eu falha ao executá-los após 2-3 tentativas. Para a tarefa de dscretisation / binning, os pacotes Information e smbinning podem funcionar bem juntos,

Para o binning real, usei a função data.table em vez da função cut (). Veja o link do meu post abaixo, ele contém código genérico na parte inferior da pergunta inicial: /programming/34939845/binning-variables-in-a-dataframe-with-input-bin-data- from-another-dataframe

Espero que ajude.

Akonza
fonte
@kjetil, kjetil b halvorsen, você está certo. O pacote de informações possui funcionalidade para calcular WoE e IV (número de posições é um parâmetro flexível, o padrão é 10) e é um instrumento útil para a exploração de dados e consequente para o binning. A saída não contém probabilidades, no entanto. E não é possível especificar zero como um compartimento separado (para minhas tarefas, o zero geralmente é um compartimento válido por si só). Outros pacotes R para WoE e IV (ai, klaR) não impressionaram instrumentos tão úteis quanto o pacote de informações. Portanto, informações e pacotes de integração podem funcionar bem juntos como uma combinação.
Akonza 5/09/16