Wprowadzenie do podobieństwa jaro – winklera (definicja i przykład)


W statystyce podobieństwo Jaro-Winklera jest sposobem pomiaru podobieństwa między dwoma ciągami znaków.

Podobieństwo Jaro (sim j ) pomiędzy dwoma ciągami znaków definiuje się jako:

sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )

Złoto:

  • m : Liczba pasujących znaków
    • Dwa znaki s 1 i s 2 uważa się za pasujące, jeśli są takie same i nie dalej niż [max(|s 1 |, |s 2 |) / 2] – 1 znak od siebie.
  • |s 1 | , |s 2 | : Długość odpowiednio pierwszego i drugiego ciągu
  • t : Liczba transpozycji
    • Obliczane jako liczba pasujących znaków (ale w innej kolejności) podzielona przez 2.

Podobieństwo Jaro-Winklera (sim w ) definiuje się jako:

sim w = sim jot + lp(1 – sim jot )

Złoto:

  • sim j : Podobieństwo Jaro pomiędzy dwoma ciągami znaków, s 1 i s 2
  • l : Długość wspólnego przedrostka na początku ciągu (maks. 4 znaki)
  • p : Współczynnik skalowania wskazujący, jak bardzo wynik jest korygowany w górę, aby mieć wspólne przedrostki. Zwykle definiuje się to jako p = 0,1 i nie powinno przekraczać p = 0,25.

Podobieństwo Jaro-Winklera między dwoma ciągami znaków zawsze mieści się w przedziale od 0 do 1, gdzie:

  • Wartość 0 oznacza brak podobieństwa między ciągami
  • 1 wskazuje, że ciągi są dokładnie zgodne

Uwaga : Odległość Jaro-Winklera będzie zdefiniowana jako 1 – sim w .

Poniższy przykład pokazuje, jak w praktyce obliczyć podobieństwo Jaro-Winklera między dwoma ciągami znaków.

Przykład: obliczenie podobieństwa Jaro-Winklera pomiędzy dwoma strunami

Załóżmy, że mamy następujące dwa ciągi:

  • Kanał 1 (s 1 ): mysz
  • Kanał 2 (s 2 ): wyciszenie

Najpierw obliczmy podobieństwo Jaro między tymi dwoma ciągami:

sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )

Złoto:

  • m : Liczba pasujących znaków
    • Dwa znaki s 1 i s 2 uważa się za pasujące, jeśli są takie same i nie dalej niż [max(|s 1 |, |s 2 |) / 2] – 1 znak od siebie.

W tym przypadku [max(|s 1 |, |s 2 |) / 2] – 1 oblicza się jako 5/2 – 1 = 1,5. Zdefiniowalibyśmy trzy litery jako odpowiadające: m, u, e. Zatem m = 3 .

  • |s 1 | , |s 2 | : Długość odpowiednio pierwszego i drugiego ciągu

W tym przypadku |s 1 | = 5 i |s 1 | = 4 .

  • t : Liczba transpozycji
    • Obliczane jako liczba pasujących znaków (ale w innej kolejności) podzielona przez 2.

W tym przypadku istnieją trzy pasujące znaki, ale są już w tej samej kolejności, więc t = 0 .

Zatem obliczylibyśmy podobieństwo Jaro w następujący sposób:

sim j = 1/3 * (3/5 + 3/4 + (3-0)/3) = 0,78333.

Następnie obliczmy podobieństwo Jaro-Winklera (sim w ) w następujący sposób:

sim w = sim jot + lp(1 – sim jot )

W tym przypadku obliczylibyśmy:

sim w = 0,78333 + (1)*(0,1)(1 – 0,78333) = 0,805.

Podobieństwo Jaro-Winklera pomiędzy dwoma łańcuchami wynosi 0,805 .

Ponieważ ta wartość jest bliska 1, mówi nam to, że te dwa ciągi są bardzo podobne.

Możemy potwierdzić, że jest to poprawne, obliczając podobieństwo Jaro-Winklera między dwoma ciągami w R:

 library (stringdist)

#calculate Jaro-Winkler similarity between 'mouse' and 'mute'
1 - stringdist("mouse", "mute", method = "jw", p= 0.1 )

[1] 0.805

Odpowiada to wartości, którą obliczyliśmy ręcznie.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak obliczyć inne metryki podobieństwa:

Wprowadzenie do odmienności Braya-Curtisa
Wprowadzenie do indeksu podobieństwa Jaccarda

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *