Classificação com dados parcialmente "desconhecidos"

11

Suponha que eu queira aprender um classificador que use um vetor de números como entrada e dê um rótulo de classe como saída. Meus dados de treinamento consistem em um grande número de pares de entrada e saída.

No entanto, quando chego ao teste de alguns dados novos, esses dados geralmente são apenas parcialmente completos. Por exemplo, se o vetor de entrada tiver comprimento 100, apenas 30 dos elementos poderão receber valores e o restante será "desconhecido".

Como exemplo disso, considere o reconhecimento de imagem onde se sabe que parte da imagem está ocluída. Ou considere a classificação em um sentido geral, onde se sabe que parte dos dados está corrompida. Em todos os casos, eu sei exatamente quais elementos no vetor de dados são as partes desconhecidas.

Gostaria de saber como posso aprender um classificador que funcionaria para esse tipo de dados? Eu poderia apenas definir os elementos "desconhecidos" para um número aleatório, mas, como geralmente existem mais elementos desconhecidos do que os conhecidos, isso não parece uma boa solução. Ou, eu poderia alterar aleatoriamente elementos nos dados de treinamento para "desconhecido" e treinar com eles em vez dos dados completos, mas isso pode exigir uma amostragem exaustiva de todas as combinações de elementos conhecidos e desconhecidos.

Em particular, estou pensando em redes neurais, mas estou aberto a outros classificadores.

Alguma ideia? Obrigado!

Karnivaurus
fonte
en.m.wikipedia.org/wiki/Missing_data pode ser um ponto de partida.
Hatshepsut
Eu acho que o aprendizado semi-supervisionado é mais o caso em que os dados de treinamento não são totalmente rotulados. No meu caso, todos os meus dados de treinamento são rotulados, mas partes individuais dos dados de teste são "desconhecidas".
Karnivaurus
Aprendizado Semi-Supervisionado com Networks Escada: github.com/CuriousAI/ladder
itdxer

Respostas:

2

Eu acho que existe uma maneira razoável de fazê-lo funcionar com redes neurais.

p

Eu nunca vi isso antes, mas isso seria muito parecido com o Dropout (um método de regularização conhecido nas Redes Neurais) nos neurônios de entrada, em vez dos neurônios ocultos. Não acho que seja uma boa ideia fazê-lo em geral, mas se você é forçado a (como o seu caso), pelo menos é o suficiente, teoricamente, para algo que é conhecido por funcionar.

etal
fonte
1

Eu acho que existem algumas opções que funcionam com qualquer classificador:

  • Atribua os valores ausentes com um único valor, como a média ou mediana do conjunto de treinamento ou algum valor previsto das partes observadas da entrada, ou use apenas um número aleatório ou uma constante.
  • Use vários valores diferentes para as incógnitas e agregue os resultados, por exemplo, calcule a média

Além disso, você pode usar classificadores baseados em árvore (por exemplo, florestas aleatórias) e, se uma árvore precisar avaliar uma divisão em um recurso ausente, poderá passar os dados para os dois nós filhos.

p(x,y)xyxxe calcule a média dos resultados ponderados pela probabilidade dessa imputação. Isso pode ser feito analiticamente em forma fechada para alguns classificadores, por exemplo, um modelo de Análise Discriminante Linear, ou aproximadamente amostrando as incógnitas, por exemplo, para uma Máquina de Boltzmann Restrita ou suas variantes profundas (relacionadas à alimentação de redes neurais).

Tobias
fonte
Eu não acho que funcionaria. Use um exemplo típico da visão computacional: cada pixel de uma imagem pode estar associado a diferentes partes de um objeto. Por exemplo, o pixel (50,50) da imagem 1 é o olho de um gato, mas o gato é movido um pouco na imagem 2, então (50, 50) é apenas um pixel do plano de fundo. Se a localização das NAs, ie. oclusão aleatória, varia de acordo com a observação, sua imputação não funcionará.
horaceT