Corrispondenza di elementi simili da un set


10

Sto cercando di abbinare gli oggetti. Dato un insieme di elementi che posso classificare su una scala da 0 a 100 di quanto siano simili tra loro. Ad esempio, se l'articolo è latte e anche l'articolo è latte, la somiglianza tra e sarebbe del 100%. Se è soda, la somiglianza tra e sarebbe, forse, l'80% e così via.nn1n 1 n 2 n 3 n 1 n 3n2n1n2n3n1n3

Sto cercando di capire come raggruppare gli elementi in gruppi di oggetti simili, ma è un problema impegnativo. Mi imbatto nel seguente problema: un cavallo è simile a una mucca, che è simile a una capra, che è simile in parte al formaggio di capra, che è simile al formaggio, che è correlato con i cracker. Tuttavia, non mi aspetto che un cavallo sia nello stesso gruppo dei cracker. Ogni articolo potrebbe essere correlato in coppia, ma l'inizio e la fine potrebbero non esserlo.n

Qualche idea?


Nella biologia evolutiva i risultati di tale raggruppamento a coppie sono chiamati alberi filogenetici , quindi potresti aggiungerlo al tuo insieme di termini di ricerca utili.
Hardmath

Risposte:


7

Quello che vuoi fare qui è la partizione di osservazioni N in cluster K che presentano proprietà simili. Questo si chiama clustering e puoi trovare maggiori informazioni qui .

Dato che hai già una misura di somiglianza numerica, questo mi fa pensare all'utilizzo dell'algoritmo K-Means , in cui operi in diversi passaggi:

  • Inizializza i centroidi del cluster in modo casuale
  • Assegna ogni osservazione al cluster corrispondente al centroide più vicino.
  • Aggiorna i centroidi come nuova media degli elementi nel cluster.

È possibile verificare la convergenza quando i centroidi hanno smesso di muoversi o entro una determinata soglia.

Ciò garantirebbe che gli elementi in ciascun cluster siano in qualche modo correlati e che si possano avere cluster più dettagliati aumentando il numero di cluster nell'algoritmo (la "K"). Trovare il numero di cluster dipende da ciascun problema e ti consiglio di provare un sacco di valori per i tuoi problemi, guardare cosa viene raggruppato insieme e vedere cosa ha senso.

Spero che aiuti.


5

Penso che quello che stai cercando si chiami "analisi dei cluster" o "clustering". Esistono molti algoritmi diversi. Nel tuo caso, vorresti un po 'di "clustering di connettività", ovvero raggruppare elementi in base a una proprietà che collega ciascuno di essi.

Dai un'occhiata agli algoritmi di clustering in scikits.learn (codice Python) e ai riferimenti qui menzionati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.