Miary podobieństwa między krzywymi?


17

Chciałbym obliczyć miarę podobieństwa między dwoma uporządkowanymi zestawami punktów --- tymi pod Użytkownikem w porównaniu z tymi pod Nauczycielem :

! [Przykład] (http://i50.tinypic.com/2uj0580.jpg)

Punkty są krzywymi w przestrzeni 3D, ale myślałem, że problem zostanie uproszczony, jeśli narysuję je w dwóch wymiarach, jak na zdjęciu. Jeśli punkty się pokrywają, podobieństwo powinno wynosić 100%.


Czy musisz uwzględnić skalowanie, rotację i / lub tłumaczenie?
— nico

Nie, nie muszę ich brać pod uwagę.
— Alex

co oznacza, że ​​będę się starał o to zadbać.
— Alex

Odpowiedzi:


11

Porównujesz trajektorie lub krzywe . To jest przestudiowany temat. Analiza procrustes i dynamiczne dopasowanie czasu , jak mówi EMS, są narzędziami handlu. Po wyrównaniu krzywych będziesz chciał zmierzyć odległość, powiedz odległość Frécheta . Jeśli chcesz udostępnić część swoich danych, możemy sami je złamać.

Odpowiednia lektura:

Jeśli zignorujesz wymiar czasowy:

Możesz dopasować użytkownika i nauczyciela do wielowymiarowej gęstości Gaussa i znaleźć objętość ich produktu - to całkiem proste. Jeśli chcesz uzyskać większą dokładność, możesz zamiast tego użyć szacunku gęstości nieparametrycznej.


Dziękuję Emre za sugestię! Zaktualizowałem problem - myślę, że może być teraz prostszy, więc spójrz.
— Alex

Możesz dopasować Użytkownika i Nauczyciela do wielowymiarowej gęstości Gaussa i znaleźć objętość ich produktu - to całkiem proste. Czy mógłbyś uprzejmie wskazać mi odpowiednie zasoby, aby się tego nauczyć? Naprawdę początkujący tutaj.
— Sibbs Gambling

Czy odległość euklidesowa będzie wystarczająca dla wyrównanych krzywych?
— Vladimir Chupakhin

Użyłem współczynników korelacji do porównania podobieństw i
— ustaliłem

3

Możesz rozważyć odległość Procrustes lub pewną odległość opartą na dynamicznym dopasowaniu czasu (nawet jeśli jeden z twoich wymiarów nie jest „czasem” per se, nadal możesz skorzystać z tej idei transformacji). Zobacz ostatnią pracę nad Trackletami , ilustrującą przykład użycia dynamicznego dopasowania czasowego do pomiaru podobieństwa między krzywymi przestrzennymi 3D wykreślonymi przez trajektorie punktowe na wideo.

Istnieje wiele bibliotek z wbudowanymi obliczeniami odległości Procrustes, takich jak Matlab lub biblioteka PyGeometry dla Pythona.


2

Oryginalny post poprosił o metrykę między ZAMÓWIONYMI punktami w 3D. Jedyną taką miarą jest odległość Frecheta. Nie wspomniano o czasie jako o jednym z wymiarów, więc zakładam, że wszystkie wymiary mają jednostki odległości (tj. Jednostki nie są mieszane). Można tego dokonać, modyfikując funkcję ostatnio przesłaną do wymiany plików MathWorks (obliczanie odległości Frecheta: http://www.mathworks.com/matlabcentral/fileexchange/38714 ). Procedury te zostały napisane dla punktów w płaszczyźnie, ale rozszerzenie do punktów 3D jest proste.


1
Czy na pewno odległość Frecheta jest między zamówionymi parami? strona wikipedia mówi, że punkt w jednej ścieżce można dopasować do wielu punktów w innym. Z pewnością istnieje więcej niż jedna taka metryka. A co z sumą odległości między zamówionymi parami?
— naught101

1

XYdH(X,Y)=max{supx∈Xinfy∈Y||x−y||,supy∈Yinfx∈X||x−y||}


supinfmaxmin

1
XY

Dziękuję za link, widziałem tylko odległość Hausdorffa w wizji komputerowej w książce Tony'ego Chana. Fajnie jest widzieć więcej podejść obliczeniowych.
— ely

1

Podobieństwo to ilość, która odzwierciedla siłę relacji między dwoma obiektami lub dwoma cechami. Wielkość ta zwykle ma zakres od -1 do +1 lub znormalizowana do 0 do 1. Następnie musisz obliczyć odległość dwóch cech za pomocą jednej z poniższych metod:

  1. Prosta odległość dopasowania
  2. Odległość Jaccard
  3. Odległość Hamminga
  4. Współczynnik Jaccarda
  5. prosty współczynnik dopasowania

Dla linii ... możesz to przedstawić za pomocą właściwości kąta (a) i długości (l) lub L1 = P1 (x1, y1), P2 (x2, y2) poniżej to podobieństwo do ai l.

teraz zmierz kąt dla kątów i długości

  • A_user = 20 i Length_User = 50
  • A_teacher30 i Length_Teacher = 55
  • Teraz znormalizuj wartości.

Korzystanie z odległości euklidesowej

podobieństwo = SquareRoot ((A_user - A_teacher30) ^ 2 + (Length_User - Length_Teacher) ^ 2)

daje miarę podobieństwa. Można również użyć wyżej wymienionych metod w zależności od problemu i funkcji.

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.