Como especificar atributos importantes?


15

Suponha um conjunto de dados vagamente estruturados (por exemplo, tabelas da Web / dados abertos vinculados), compostos por várias fontes de dados. Não existe um esquema comum seguido pelos dados e cada fonte pode usar atributos de sinônimo para descrever os valores (por exemplo, "nacionalidade" vs "bornIn").

Meu objetivo é encontrar alguns atributos "importantes" que de alguma forma "definam" as entidades que eles descrevem. Portanto, quando encontrar o mesmo valor para esse atributo, saberei que as duas descrições provavelmente têm a mesma entidade (por exemplo, a mesma pessoa).

Por exemplo, o atributo "sobrenome" é mais discriminativo que o atributo "nacionalidade".

Como (estatisticamente) eu poderia encontrar atributos que são mais importantes que outros?

Uma solução ingênua seria pegar a IDF média dos valores de cada atributo e fazer disso o fator de "importância" do atributo. Uma abordagem semelhante seria contar quantos valores distintos aparecem para cada atributo.

Eu já vi o termo recurso ou seleção de atributos no aprendizado de máquina, mas não quero descartar os atributos restantes, só quero colocar pesos mais altos nos mais importantes.

Respostas:


16

Uma solução possível é calcular o ganho de informações associado a cada atributo:

Ganho de informação

Inicialmente, você tem todo o conjunto de dados e calcula o ganho de informações de cada item. O item com o melhor ganho de informações é o que você deve usar para particionar o conjunto de dados (considerando os valores do item). Em seguida, execute os mesmos cálculos para cada item (exceto os selecionados) e sempre escolha o que melhor descreve / diferencia as entradas do seu conjunto de dados.

Existem implementações disponíveis para esses cálculos. As árvores de decisão geralmente baseiam sua seleção de recursos nos recursos com melhor ganho de informações. Você pode usar a estrutura em árvore resultante para encontrar esses itens importantes .


Isso é entropia? Estou confuso.
Valentas 29/05

Desculpe pelo atraso na resposta. Para obter informações é reduzir a entropia geral; então eles são basicamente o mesmo conceito.Dê uma olhada na definição de "entropia" e "ganho de informação".
Rubens

7

Na verdade, há mais de uma pergunta a ser respondida aqui:

  1. Como trabalhar com dados esquemáticos / frouxos / ausentes
  2. Como rotular uma pessoa (pelo que entendi não supervisionado) e criar um identificador
  3. Como treinar seu sistema para que ele possa lhe dizer quais atributos você deve usar para identificar a pessoa

Como Rubens mencionou, você pode usar métodos de árvore de decisão , especificamente florestas aleatórias para calcular os atributos mais importantes com base no ganho de informações, se você já encontrou uma maneira de identificar como rotular uma pessoa.

No entanto, se você não tiver nenhuma informação de etiqueta, talvez seja possível usar alguma visualização especializada para seleção preliminar de atributos. Depois disso, você faz uma classificação não supervisionada para recuperar seus rótulos. Por fim, você pode selecionar os campos mais importantes usando a Floresta Aleatória ou outros métodos como as Redes de Crenças Bayesianas .

Para conseguir tudo isso, você também precisa de um conjunto de dados completo. Se seu conjunto de dados estiver frouxo, você deverá encontrar uma maneira manual ou heurística de associar atributos indicando a mesma coisa com nomes diferentes. Além disso, você pode usar técnicas de imputação , como o método Expectation Maximization , e concluir seu conjunto de dados. Ou você também pode trabalhar com redes bayesianas e deixar os campos ausentes como estão.


2

Muitas técnicas por aí. Se o seu sistema de informações tiver um atributo de decisão ou rótulos anexados, a melhor maneira que encontrei é usar a redução aproximada de atributo baseada em conjunto. Confira o algoritmo de redução rápida de Qiang Shen e Richard Jensen.

Se você tiver dados não rotulados, verifique Análise de Componente Principal (PCA) .


0

Só por isso, depois de quase 5 anos, pensei em compartilhar o que realmente usei no meu doutorado para resolver esse problema, que não é novo, ou uma contribuição do meu doutorado, caso isso ajude outra pessoa.

A medida que usamos para selecionar atributos importantes é a média harmônica (também conhecida como medida F) entre supporte discriminability.

O suporte de um atributo p é intuitivamente a frequência com que as entidades em nosso conjunto de dados contêm valores para este atributo:

support(p) = |instances(p)|/ |D|, 

onde instâncias (p) é o conjunto de entidades que possuem um valor para p e | D | é o número de entidades no conjunto de dados D.

discriminability(p) = |values(p)| / |instances(p)|, 

onde values ​​(p) é o conjunto de valores (distintos, pois é um conjunto) que o atributo p pode ter em nosso conjunto de dados. Isso é normalizado pelo número de entidades que realmente têm um valor para esse atributo.

Em outras palavras, o suporte mede a frequência em que p aparece no conjunto de dados e a discriminação indica quão perto de ser uma "chave" esse atributo está.

Para mais detalhes, você pode ler minha dissertação (Seção 4.3.2), ou pode encontrar uma versão mais curta em nosso artigo sobre EDBT 2019 (Seção 2).

Obrigado a todos por suas respostas construtivas!

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.