Faire correspondre des éléments similaires d'un ensemble


10

J'essaie de faire correspondre des éléments. Étant donné un ensemble de éléments, je peux classer sur une échelle de 0 à 100 leur similitude. Par exemple, si l'article est du lait et l'article est également du lait, la similitude entre et serait de 100%. Si est un soda, alors la similitude entre et serait, peut-être, de 80%, et ainsi de suite.nn1n2n1n2n3n1n3

J'essaie de comprendre comment regrouper les éléments en groupes d'éléments similaires, mais c'est un problème difficile. Je rencontre le problème suivant: Un cheval est similaire à une vache, qui est similaire à une chèvre, qui est similaire en partie au fromage de chèvre, qui est similaire au fromage, qui est corrélé avec les craquelins. Cependant, je ne m'attendrais pas à ce qu'un cheval soit dans le même groupe que les crackers. Chaque élément peut être corrélé par paire, mais le début et la fin peuvent ne pas l'être.n

Des idées?


En biologie évolutive, les résultats d'un tel regroupement par paires sont appelés arbres phylogentiques , vous pouvez donc ajouter cela à votre ensemble de termes de recherche utiles.
hardmath

Réponses:


7

Ce que vous voulez faire ici, c'est partitionner N observations en K grappes qui présentent des propriétés similaires. C'est ce qu'on appelle le clustering et vous pouvez trouver plus d'informations ici .

Comme vous avez déjà une mesure de similitude numérique, cela me fait penser à utiliser l' algorithme K-Means , dans lequel vous opérez en plusieurs étapes:

  • Initialiser les centroïdes de cluster de façon aléatoire
  • Attribuez chaque observation au groupe correspondant au centroïde le plus proche.
  • Mettez à jour les centroïdes en tant que nouvelle moyenne des éléments du cluster.

Vous pouvez vérifier la convergence lorsque les centroïdes ont cessé de bouger ou dans un certain seuil.

Cela garantirait que les éléments de chaque cluster sont quelque peu corrélés, et vous pouvez avoir des clusters plus fins en augmentant le nombre de clusters dans l'algorithme (le «K»). Trouver le nombre de clusters dépend de chaque problème, et je vous conseille d'essayer un tas de valeurs pour vos problèmes, de regarder ce qui sort groupé et de voir ce qui a du sens.

J'espère que cela pourra aider.


5

Je pense que ce que vous recherchez s'appelle "analyse de cluster" ou "clustering". Il existe de nombreux algorithmes différents. Dans votre cas, vous voudriez un "cluster de connectivité", c'est-à-dire regrouper les éléments en fonction d'une propriété qui relie les deux.

Jetez un œil aux algorithmes de clustering dans scikits.learn (code Python) et aux références qui y sont mentionnées.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.