Comment spécifier des attributs importants?

15

Supposons un ensemble de données peu structurées (par exemple, des tables Web / des données ouvertes liées), composées de nombreuses sources de données. Il n'y a pas de schéma commun suivi par les données et chaque source peut utiliser des attributs de synonymes pour décrire les valeurs (par exemple "nationalité" vs "bornIn").

Mon objectif est de trouver des attributs "importants" qui "définissent" en quelque sorte les entités qu'ils décrivent. Ainsi, lorsque je trouverai la même valeur pour un tel attribut, je saurai que les deux descriptions concernent très probablement la même entité (par exemple la même personne).

Par exemple, l'attribut "lastName" est plus discriminant que l'attribut "nationalité".

Comment pourrais-je (statistiquement) trouver de tels attributs qui sont plus importants que d'autres?

Une solution naïve serait de prendre l'IDF moyen des valeurs de chaque attribut et d'en faire le facteur "importance" de l'attribut. Une approche similaire consisterait à compter le nombre de valeurs distinctes qui apparaissent pour chaque attribut.

J'ai vu le terme fonctionnalité ou sélection d'attributs dans l'apprentissage automatique, mais je ne veux pas supprimer les attributs restants, je veux simplement attribuer des poids plus élevés aux plus importants.

vefthym
la source

Réponses:

16

Une solution possible consiste à calculer le gain d'informations associé à chaque attribut:

Gain d'informations

Au départ, vous disposez de l'ensemble des données et calculez le gain d'informations de chaque élément. L'élément avec le meilleur gain d'informations est celui que vous devez utiliser pour partitionner l'ensemble de données (en tenant compte des valeurs de l'élément). Ensuite, effectuez les mêmes calculs pour chaque élément (mais ceux sélectionnés), et choisissez toujours celui qui décrit / différencie le mieux les entrées de votre ensemble de données.

Il existe des implémentations disponibles pour ces calculs. Les arbres de décision basent généralement leur sélection de fonctionnalités sur les fonctionnalités avec le meilleur gain d'informations. Vous pouvez utiliser l'arborescence résultante pour trouver ces éléments importants .

Rubens
la source
Est-ce l'entropie? Je suis confus.
Valentas
Désolé pour la réponse tardive. Pour obtenir des informations est de réduire l' entropie globale; ils sont donc fondamentalement le même concept. Jetez un oeil à la définition de "entropie" et "gain d'information".
Rubens
7

En fait, il y a plus d'une question à répondre ici:

  1. Comment travailler sur des données sans schéma / lâches / manquantes
  2. Comment étiqueter une personne (d'après ce que je comprends sans supervision) et créer un identifiant
  3. Comment former votre système afin qu'il puisse vous dire quels attributs vous devez utiliser pour identifier la personne

Comme Rubens l'a mentionné, vous pouvez utiliser des méthodes d' arbre de décision , en particulier les forêts aléatoires pour calculer les attributs les plus importants en fonction du gain d'informations si vous avez déjà trouvé un moyen d'identifier comment étiqueter une personne.

Cependant, si vous ne disposez d'aucune information d'étiquette, vous pouvez peut-être utiliser une vue experte pour la sélection préliminaire des attributs. Après cela, vous effectuez une classification non supervisée afin de récupérer vos étiquettes. Enfin, vous pouvez sélectionner les champs les plus importants en utilisant la forêt aléatoire ou d'autres méthodes comme les réseaux de croyances bayésiennes .

Pour y parvenir, vous avez également besoin d'un ensemble de données complet. Si votre ensemble de données est lâche, vous devez trouver manuellement ou heuristiquement un moyen de coupler les attributs indiquant la même chose avec des noms différents. De plus, vous pouvez utiliser des techniques d' imputation telles que la méthode de maximisation des attentes et compléter votre ensemble de données. Ou vous pouvez également travailler avec les réseaux bayésiens et laisser les champs manquants tels quels.

darklordofsoftware
la source
2

Beaucoup de techniques là-bas. Si votre système d'information a un attribut de décision ou des étiquettes attachées, la meilleure façon que j'ai trouvée est d'utiliser une réduction d'attribut basée sur un ensemble approximatif. Découvrez l'algorithme de réduction rapide de Qiang Shen et Richard Jensen.

Si vous avez des données sans étiquette, vérifiez l' analyse des composants principaux (PCA) .

user242782
la source
0

Juste pour le plaisir, après presque 5 ans, j'ai pensé que je pourrais partager ce que j'ai réellement utilisé dans mon doctorat pour résoudre ce problème, qui n'est pas nouveau, ou une contribution de mon doctorat, au cas où cela aiderait quelqu'un d'autre.

La mesure que nous avons utilisée pour sélectionner les attributs importants est la moyenne harmonique (aka F-mesure) entre supportet discriminability.

La prise en charge d'un attribut p est intuitivement la fréquence à laquelle les entités de notre ensemble de données contiennent des valeurs pour cet attribut:

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

où instances (p) est l'ensemble des entités qui ont une valeur pour p, et | D | est le nombre d'entités dans l'ensemble de données D.

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

où valeurs (p) est l'ensemble des valeurs (distinctes, puisqu'il s'agit d'un ensemble) que l'attribut p peut avoir dans notre ensemble de données. Cela est normalisé par le nombre d'entités qui ont réellement une valeur pour cet attribut.

En d'autres termes, le support mesure la fréquence à laquelle p apparaît dans l'ensemble de données et la discriminabilité indique à quel point cet attribut est proche d'être une "clé".

Pour plus de détails, vous pouvez lire ma thèse (section 4.3.2), ou vous pouvez trouver une version plus courte dans notre article EDBT 2019 (section 2).

Merci à tous pour vos réponses constructives!

vefthym
la source