Como posso distinguir dinamicamente entre dados categóricos e dados numéricos?


12

Conheço alguém que está trabalhando em um projeto que envolve a ingestão de arquivos de dados sem levar em consideração as colunas ou os tipos de dados. A tarefa é obter um arquivo com qualquer número de colunas e vários tipos de dados e gerar estatísticas de resumo nos dados numéricos.

No entanto, ele não tem certeza de como atribuir dinamicamente tipos de dados para determinados dados baseados em números. Por exemplo:

    CITY
    Albuquerque
    Boston
    Chicago

Obviamente, esses dados não são numéricos e serão armazenados como texto. Contudo,

    ZIP
    80221
    60653
    25525

não estão claramente marcados como categóricos. Seu software atribuiria o CEP como estatísticas numéricas e resumidas de saída, o que não faz sentido para esse tipo de dados.


Algumas idéias que tivemos foram:

  1. Se uma coluna tiver todos os números inteiros, identifique-a como categórica. Isso claramente não funcionaria, mas era uma ideia.
  2. Se uma coluna tiver menos de n valores exclusivos e for numérica, identifique-a como categórica. Isso pode estar mais próximo, mas ainda pode haver problemas com a queda de dados numéricos.
  3. Mantenha uma lista de dados numéricos comuns que realmente devem ser categóricos e compare os cabeçalhos das colunas a esta lista para obter correspondências. Por exemplo, qualquer coisa com "ZIP" seria categórico.

Meu instinto me diz que não há como atribuir com precisão dados numéricos como categóricos ou numéricos, mas esperava uma sugestão. Qualquer visão que você tem é muito apreciada.


Não prova completa, mas se começar com um 0 não é tipicamente numérico
paparazzo

Você provavelmente também deve se perguntar qual é a consequência de errar? Isso deve determinar quanto esforço você precisa colocar no processo. Deseja 90% de precisão, 99% de precisão ou 99,9999% de precisão?
Spacedman

Eu pegaria todas as heurísticas sugeridas nas respostas como recursos e treinaria um classificador binário.
Emre

Consulte stats.stackexchange.com/a/106400/17230 . Não há realmente uma verdade básica aqui.
Scortchi - Restabelece Monica

Respostas:


7

Não conheço uma maneira infalível de fazer isso. Aqui está uma idéia em cima da minha cabeça:

  1. Trate os valores como categóricos por padrão.
  2. Verifique se há vários atributos dos dados que implicam que eles sejam realmente contínuos. Pese esses atributos com base na probabilidade de correlação com dados contínuos. Aqui estão alguns exemplos possíveis:
    • Os valores são inteiros: +,7
    • Os valores são flutuantes: +.8
    • Os valores são normalmente distribuídos: +.3
    • Os valores contêm um número relativamente pequeno de valores exclusivos: +.3
    • Os valores não têm o mesmo número de caracteres: +.1
    • Os valores não contêm zeros à esquerda: +.1
  3. Trate as colunas que somam mais que 1 como sendo numéricas. Ajuste os fatores e pesos com base no teste em diferentes conjuntos de dados para atender às suas necessidades. Você pode até criar e treinar um algoritmo de aprendizado de máquina separado apenas para fazer isso.

Esta resposta é interessante. Em vez de dar outra resposta, gostaria de sugerir uma modificação para esta. Que tal tratar esse problema como um problema de classificação regular? Você pode definir um conjunto de recursos para cada coluna, com base nos atributos desta resposta (número inteiro, flutuante, normalmente distribuído, número relativo de valores exclusivos etc.). Depois disso, é apenas uma questão de usar um algoritmo de classificação.
precisa saber é o seguinte

@ PabloSuau, eu gosto dessa ideia. Os algoritmos de classificação podem ser um ótimo método aqui. Obrigado ao jncraton por algumas características a serem observadas.
Poisson Fish

4

Se você tem, por exemplo, número de filhos de uma família (que pode variar, por exemplo, entre 0 e 5), é uma variável categórica ou numérica? Na verdade, depende do seu problema e como você pretende resolvê-lo. Nesse sentido, você pode fazer o seguinte:

  • Calcular o número de valores exclusivos dessa coluna
  • Divida esse número pelo número total de linhas
  • Se esse índice for abaixo de algum limite (por exemplo, 20%), você o considera categórico.

No caso de valores discretos, um teste adicional pode ser: use um modelo de regressão para estimar alguns dos parâmetros e verifique se os valores estimados estão contidos no conjunto de valores original. Se isso não for verdade, você provavelmente está lidando com dados categóricos (como é o caso do ZIP).

Funcionou relativamente bem para mim no passado ...


2

Como esta pergunta foi publicada de forma cruzada, os comentários iniciais de @nickcox no Cross Validated são altamente relevantes e verdadeiros. Minhas opiniões são um pouco diferentes. Por exemplo, eu reformularia a questão, decompondo-a em duas partes: primeiro, há a questão de como alguém classificaria um fluxo de informações desconhecidas por tipo de dados e, segundo, que tipo de taxa de classificação incorreta pode ser esperada. Ambas as perguntas são respondidas imediatamente, se alguém quiser reservar um tempo para fazê-lo.

A primeira questão equivale ao desenvolvimento de um sistema especialista baseado em regras, de acordo com o que foi proposto preliminarmente nos comentários e respostas sobre esses tópicos, usando amostras de dados do mundo real que estão prontamente disponíveis.

Segundo, dado que esses dados do mundo real contêm tipos de dados conhecidos, comparando o erro de classificação.

Uma terceira etapa envolveria a atualização iterativa das regras para refletir com mais precisão as informações que estão sendo transmitidas - na medida do possível.

Na minha opinião, embora tedioso, esse projeto não envolva uma quantidade proibitiva de trabalho.

---- Comentário adicional ----

Uma boa discussão sobre a extração de recursos no que se refere ao processo de geração de dados apareceu no CV aqui:

/stats/191935/what-does-the-process-that-generates-the-data-mean-and-how-does-feature-selec

A extração, seleção de recursos e o DGP é um excelente ponto de partida para o desenvolvimento de um sistema especialista.


Excluí a pergunta no Cross Validated. Para referência, o @NickCox afirmou: "É pior do que você pensa, mesmo que você pense que é pior do que você pensa. Pontos decimais podem estar ocultos em variáveis ​​categóricas, como parte de classificações codificadas, por exemplo, de indústrias ou doenças. Pequenos inteiros podem significar contagens. do que categorias: 3, significando 3 carros ou gatos, não é o mesmo que 3, significando "a pessoa possui um carro" ou "a pessoa pertence a um gato". As medidas podem ser apenas números inteiros por convenção, por exemplo, alturas de pessoas podem ser apenas relatado como número inteiro cm ou polegadas, pressão sanguínea como número inteiro mm Hg ".
Poisson Fish

Segundo comentário do @NickCox: "O número de valores distintos (um termo melhor que" exclusivo ", que ainda tem o significado principal de ocorrer apenas uma vez) também não é um bom guia. O número de diferentes alturas de pessoas possíveis em amostras moderadas é provavelmente muito menos do que o número de diferentes afiliações religiosas ou origens étnicas ".
Poisson Fish
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.