Wiemy, że Jaccard (obliczony między dowolnymi dwiema kolumnami danych binarnych ) to , podczas gdy Rogers-Tanimoto to , gdzieXzaa + b + ca + da + d+ 2 ( b + c )
- a - liczba wierszy, w których obie kolumny to 1
- b - liczba wierszy, w których ta, a nie druga kolumna, to 1
- c - liczba wierszy, w których druga, a nie ta kolumna, to 1
- d - liczba wierszy, w których obie kolumny mają wartość 0
a + b + c + d= n , liczba wierszy wX
Potem będzie:
X′X=A jest kwadratem symetryczny matrycy pomiędzy wszystkimi kolumnami.a
(notX)′(notX)=D jest kwadratową macierzą symetryczną między wszystkimi kolumnami („nie X” konwertuje 1-> 0 i 0-> 1 w X).d
Tak więc to kwadratowa symetryczna macierz Jaccard między wszystkimi kolumnami.An−D
A+DA+D+2(n−(A+D))=A+D2n−A−D to kwadratowa macierz symetryczna Rogers-Tanimoto między wszystkimi kolumnami.
Sprawdziłem numerycznie, czy te formuły dają poprawny wynik. Oni robią.
Aktualizacja Możesz także uzyskać macierze i :BC
B=[1]′X−A , gdzie "[1]" oznacza macierz te, ustawione w . jest kwadratową macierzą asymetryczną między wszystkimi kolumnami; jego elementem ij jest liczba wierszy w z 0 w kolumnie i i 1 w kolumnie j .XBbX
W związku z tym .C=B′
Macierz można również obliczyć w ten sposób, oczywiście: .Dn−A−B−C
Znając macierze , jesteś w stanie obliczyć macierz dowolnego (nie) współczynnika podobieństwa wymyślonego dla danych binarnych.A,B,C,D
vegan
pakiecie. Myślę, że są one również dość dobrze zoptymalizowane pod kątem prędkości.