Dopasowywanie podobnych elementów z zestawu


10

Próbuję dopasować przedmioty. Biorąc pod uwagę zestaw przedmiotów, mogę uszeregować w skali od 0 do 100, jak są do siebie podobne. Na przykład, jeśli pozycja to mleko, a pozycja jest również mlekiem, wówczas podobieństwo między i wynosi 100%. Jeśli to soda, wówczas podobieństwo między i może wynosić, być może, 80% i tak dalej.n 1 n 2 n 1 n 2 n 3 n 1 n 3nn1n2)n1n2)n3)n1n3)

Próbuję wymyślić, jak pogrupować elementów w grupy podobnych elementów, ale jest to trudny problem. Natrafiam na następujący problem: Koń jest podobny do krowy, która jest podobna do kozy, która jest częściowo podobna do koziego sera, który jest podobny do sera, który jest skorelowany z krakersami. Nie spodziewałbym się jednak, że koń będzie w tej samej grupie co krakersy. Każdy element może być skorelowany parami, ale początek i koniec mogą być inne.n

Jakieś pomysły?


W biologii ewolucyjnej wyniki takiego grupowania w pary nazywane są drzewami filogentycznymi , więc możesz je dodać do zestawu użytecznych wyszukiwanych terminów.
hardmath

Odpowiedzi:


7

To, co chcesz tutaj zrobić, to obserwacje z podziału N na klastry K, które wykazują podobne właściwości. Nazywa się to klastrowaniem i więcej informacji można znaleźć tutaj .

Ponieważ masz już liczbową miarę podobieństwa, to sprawia, że ​​myślę o użyciu algorytmu K-Means , w którym działasz w kilku krokach:

  • Losowo inicjuj centroidy gromadowe
  • Każdą obserwację przypisz do gromady odpowiadającej najbliższemu centroidowi.
  • Zaktualizuj centroidy jako nową średnią elementów w klastrze.

Możesz sprawdzić zbieżność, gdy centroidy przestaną się poruszać lub osiągną określony próg.

Zapewniłoby to, że elementy w każdym klastrze są nieco skorelowane i można uzyskać więcej drobnoziarnistych klastrów, zwiększając liczbę klastrów w algorytmie („K”). Znalezienie liczby klastrów zależy od każdego problemu i radzę wypróbować kilka wartości dla swoich problemów, spojrzeć na to, co wychodzi zgrupowane razem i zobaczyć, co ma sens.

Mam nadzieję, że to pomaga.


5

Myślę, że to, czego szukasz, nazywa się „analizą skupień” lub „klastrowaniem”. Istnieje wiele różnych algorytmów. W twoim przypadku chciałbyś trochę „klastrowania połączeń”, tj. Grupować elementy razem na podstawie właściwości, która łączy każde z nich.

Przyjrzyj się algorytmom klastrowania w scikits.learn (kod Python) i wymienionym tam odnośnikom.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.