My question is directed to techniques to deal with incomplete data during the classifier/model training/fitting.
For instance, in a dataset w/ a few hundred rows, each row having let's say five dimensions and a class label as the last item, most data points will look like this:
[0.74, 0.39, 0.14, 0.33, 0.34, 0]
A few might look something like this:
[0.21, 0.68, ?, 0.82, 0.58, 1]
So it's those types of data points that are the focus of this Question.
Meu motivo inicial para fazer essa pergunta foi um problema diretamente na minha frente; no entanto, antes de postar minha pergunta, pensei que poderia ser mais útil se eu a reformulasse para que as respostas fossem úteis para uma parte maior da Comunidade.
Como uma heurística simples, vamos dividir essas técnicas de manipulação de dados com base em quando durante o fluxo de processamento elas são empregadas - antes da entrada no classificador ou durante (ou seja, a técnica está dentro do classificador).
O melhor exemplo que posso pensar para o último é a técnica inteligente de "ramificação de três vias" usada nas Árvores de Decisão.
Sem dúvida, a categoria anterior é muito maior. As técnicas de que tenho conhecimento se enquadram em um dos grupos abaixo.
Ao revisar recentemente minhas anotações pessoais sobre "tratamento de dados ausentes", notei que tinha uma lista impressionante de técnicas. Eu apenas mantenho essas anotações para uma tranqüilidade geral e, caso um colega mais novo me pergunte como lidar com os dados ausentes. Na prática, na verdade, não uso nenhum deles, exceto o último.
Imputação : uma ampla rubrica para um conjunto de técnicas cujo denominador comum (acredito) é que os dados ausentes são fornecidos diretamente pelo mesmo conjunto de dados - substituição ao invés de estimativa / previsão.
Reconstrução : estimar os pontos de dados ausentes usando uma rede autoassociativa (apenas uma rede neural na qual os tamanhos das camadas de entrada e saída são iguais - em outras palavras, a saída tem a mesma dimensão da entrada); a idéia aqui é treinar essa rede em dados completos, depois alimentar padrões incompletos e ler os valores ausentes dos nós de saída.
Bootstrapping : (nenhum resumo necessário eu não deveria pensar, dado que é usado em outro lugar na análise estatística).
Negação : remova silenciosamente os pontos de dados com elementos ausentes / corrompidos do seu conjunto de treinamento e finja que eles nunca existiram.
fonte
modern
técnicas? Graçasmice
tem um bom artigo introdutório sobre JSS: jstatsoft.org/article/view/v045i03 . (Você deve achar a introdução útil, mesmo que não use R.). E o pacote RAmelia
possui uma bela vinheta que está incluída no pacote. Esses dois pacotes diferem em seus detalhes, mas ambos usam imputação múltipla.Respostas:
Dei essa resposta a outra pergunta , mas ela também pode se aplicar aqui.
"Existe uma área razoavelmente nova de pesquisa chamada Matrix Completion , que provavelmente faz o que você deseja. Uma introdução muito boa é dada neste palestra de Emmanuel Candes"
Essencialmente, se o seu conjunto de dados tiver uma classificação baixa (ou classificação aproximadamente baixa), ou seja, você tiver 100 linhas, mas a matriz real tiver uma classificação pequena, digamos 10 (ou apenas 10 grandes valores singulares), você poderá usar a Conclusão da Matriz para preencher a falta dados.
fonte
Eu posso ser um pouco heterodoxo aqui, mas que diabos. Observe: essa linha de pensamento vem de minha própria filosofia de classificação, que é que eu a uso quando meu objetivo é diretamente de pura previsão - não de explicação, coerência conceitual, etc. Portanto, o que estou dizendo aqui contradiz como abordaria a construção de um modelo de regressão.
Diferentes abordagens de classificação variam em sua capacidade de lidar com dados ausentes e, dependendo de alguns outros fatores ^, eu poderia apenas tentar # 5: usar um classificador que não engasgue com essas NAs. Parte da decisão de seguir esse caminho também pode incluir o pensamento sobre a probabilidade de ocorrência de uma proporção semelhante de NAs nos dados futuros aos quais você aplicará o modelo. Se os NAs de certas variáveis forem iguais para o curso, talvez faça sentido continuar com eles (por exemplo, não construa um modelo preditivo que pressuponha dados mais informativos do que o que você realmente terá, ou você ' Você está brincando sobre o quão previsível realmente será). De fato, se eu não estiver convencido de que os NAs estão faltando aleatoriamente, eu estaria inclinado a recodificar uma nova variável (ou um novo nível, se for "
Se eu tivesse um bom motivo para usar um classificador que não aceitasse os dados ausentes muito bem, minha abordagem seria # 1 (imputação múltipla), procurando encontrar um modelo de classificação que se comportasse de maneira semelhante nos conjuntos de dados imputados.
^ Incluindo: quanta falta você tem em seus preditores, se há padrões sistemáticos (se houver, valeria a pena examinar mais de perto e refletir sobre as implicações para sua análise) e quantos dados você tem para trabalhar em geral .
fonte
Se você tiver um palpite razoável sobre o processo de geração de dados responsável pelos dados em questão, poderá usar idéias bayesianas para estimar os dados ausentes. Sob a abordagem bayesiana, você simplesmente assumiria que os dados ausentes também são variáveis aleatórias e construiria o posterior para os dados ausentes, dependendo dos dados observados. Os meios posteriores seriam então utilizados como um substituto para os dados ausentes.
O uso de modelos bayesianos pode se qualificar como imputação em um sentido amplo do termo, mas pensei em mencioná-lo como ele não apareceu na sua lista.
fonte