Hacer coincidir elementos similares de un conjunto

10

Estoy tratando de hacer coincidir elementos. Dado un conjunto de elementos que puedo clasificar en una escala de 0 a 100 de cuán similares son entre sí. Por ejemplo, si el elemento n 1 es leche y el elemento n 2 también es leche, entonces la similitud entre n 1 y n 2 sería del 100%. Si n 3 es refresco, entonces la similitud entre n 1 y n 3 sería, quizás, del 80%, y así sucesivamente.nn1n2n1n2n3n1n3

Estoy tratando de descubrir cómo agrupar los elementos en grupos de elementos similares, pero es un problema difícil. Me encuentro con el siguiente problema: un caballo es similar a una vaca, que es similar a una cabra, que es similar en parte al queso de cabra, que es similar al queso, que se correlaciona con las galletas. Sin embargo, no esperaría que un caballo estuviera en el mismo grupo que las galletas. Cada elemento puede estar correlacionado por pares, pero el principio y el final pueden no estarlo.n

¿Algunas ideas?

Jason
fuente
En biología evolutiva, los resultados de este agrupamiento por pares se denominan árboles filogenéticos , por lo que puede agregarlo a su conjunto de términos de búsqueda útiles.
hardmath

Respuestas:

7

Lo que quiere hacer aquí es dividir las observaciones de N en grupos de K que exhiben propiedades similares. Esto se llama agrupación y puede encontrar más información aquí .

Como ya tiene una medida de similitud numérica, esto me hace pensar en usar el algoritmo K-Means , en el que opera en varios pasos:

  • Inicialice los centroides del clúster al azar
  • Asigne cada observación al grupo correspondiente al centroide más cercano.
  • Actualice los centroides como la nueva media de los elementos en el clúster.

Puede verificar la convergencia cuando los centroides han dejado de moverse o dentro de un cierto umbral.

Esto aseguraría que los elementos en cada grupo estén algo correlacionados, y puede tener grupos más finos aumentando el número de grupos en el algoritmo (la "K"). Encontrar el número de clústeres depende de cada problema, y ​​le aconsejo que pruebe un montón de valores para sus problemas, observe lo que sale agrupado y vea qué tiene sentido.

Espero que ayude.

Charles Menguy
fuente
5

Creo que lo que está buscando se llama "análisis de conglomerados" o "conglomerado". Existen muchos algoritmos diferentes. En su caso, desearía algunos "grupos de conectividad", es decir, agrupar elementos en función de una propiedad que vincule cada uno.

Eche un vistazo a los algoritmos de agrupación en scikits.learn (código Python) y las referencias mencionadas allí.

GertVdE
fuente