Interpretacja ujemnego podobieństwa cosinus


17

Moje pytanie może być głupie. Więc z góry przepraszam.

Próbowałem użyć modelu GLOVE wstępnie przeszkolonego przez grupę NLP Stanforda ( link ). Zauważyłem jednak, że moje wyniki podobieństwa wykazały pewne liczby ujemne.

To natychmiast skłoniło mnie do spojrzenia na plik danych słowo-wektor. Najwyraźniej wartości w wektorach słów mogły być ujemne. To wyjaśniało, dlaczego widziałem ujemne podobieństwa cosinus.

Przyzwyczaiłem się do podobieństwa cosinusów wektorów częstotliwości, których wartości są ograniczone w [0, 1]. Wiem na pewno, że iloczyn skalarny i funkcja kosinusowa mogą być dodatnie lub ujemne, w zależności od kąta między wektorem. Ale naprawdę trudno mi zrozumieć i interpretować to negatywne podobieństwo cosinus.

Na przykład, jeśli mam parę słów dających podobieństwo -0,1, czy są one mniej podobne niż inna para, której podobieństwo wynosi 0,05? A może porównać podobieństwo od -0,9 do 0,8?

Czy powinienem po prostu spojrzeć na wartość bezwzględną minimalnej różnicy kątów od ? Bezwzględna wartość wyników?nπ

Wielkie dzięki.


1
Tag podobieństwa kosinusowego mówi: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.Jedyną różnicą między nimi jest to, że w odchyleniach korelacji (momenty) - które są multiplikowane krzyżowo - pochodzą ze średniej, podczas gdy w kosinusie odchylenia są od pierwotnego 0 - tzn. Są wartościami takimi, jakie są .
ttnphns

2
(cd.) Zrozumienie współczynnika dodatniego lub ujemnego jest takie samo w obu przypadkach. Negative Coef. oznacza, że ​​dodatnie odchylenia / wartości jednego wektora mają tendencję do parowania z ujemnymi odchyleniami / wartościami drugiego wektora. To, czy oznacza to, że wektory są „podobne”, czy wręcz przeciwnie, „bardzo odmienne” zależy od tego, jakie znaczenie mają dla ciebie pozytywne i negatywne odchylenia / wartości danych.
ttnphns

@ttnphns Dziękuję bardzo za komentarz! Inspiruje mnie do myślenia o podobieństwie cosinusa w nowy sposób. W moim przypadku użycia może być może potraktować to jako różnicę w końcowych wynikach: jeśli korelacja między Doc A i B jest ujemna, a czasopismo tematyczne X zawiera Doc A, to jest mniej prawdopodobne, że X zawiera B jako cóż, z pewnego średniego prawdopodobieństwa. Czy ta interpretacja wydaje ci się ważna?
Mai

Nie mam odwagi powiedzieć, bo nie znam twoich danych, znaczenia zawartych w nich wartości ani twojego badania.
ttnphns

Odpowiedzi:


2

Niech dwa wektory i , kąt jest uzyskiwany przez iloczyn skalarny i normę wektorów:abθ

cos(θ)=ab||a||||b||

Ponieważ wartość należy do zakresu :cos(θ)[1,1]

  • 1Wartość wskazuje zdecydowanie przeciwne wektory
  • 0 niezależnych (ortogonalnych) wektorów
  • 1 podobne (dodatnie współliniowe) wektory. Wartości pośrednie służą do oceny stopnia podobieństwa.

Przykład : Pozwól dwóm użytkownikom i oraz podobieństwo między tymi dwoma użytkownikami zgodnie z ich upodobaniami do filmów:U1U2sim(U1,U2)

  • sim(U1,U2)=1 jeśli dwóch użytkowników ma dokładnie taki sam gust (lub jeśli )U1=U2
  • sim(U1,U2)=0 jeśli nie znajdziemy żadnej korelacji między dwoma użytkownikami, np. jeśli nie widzieli żadnych popularnych filmów
  • sim(U1,U2)=1 jeśli użytkownicy mają upodobania, np. jeśli ocenili te same filmy w odwrotny sposób

0

Nie należy używać wartości bezwzględnych, ponieważ znak ujemny nie jest arbitralny. Aby uzyskać wartość cosinus między 0 a 1, należy użyć następującej funkcji cosinus:

(Kod R)

cos.sim <- function(a,b) 
{
  dot_product = sum(a*b)
  anorm = sqrt(sum((a)^2))
  bnorm = sqrt(sum((b)^2))
  minx =-1
  maxx = 1
  return(((dot_product/anorm*bnorm)-minx)/(maxx-minx))
} 

(Kod Python)

def cos_sim(a, b):
    """Takes 2 vectors a, b and returns the cosine similarity according 
to the definition of the dot product"""
    dot_product = np.dot(a, b)
    norm_a = np.linalg.norm(a)
    norm_b = np.linalg.norm(b)
    return dot_product / (norm_a * norm_b)

minx = -1 
maxx = 1

cos_sim(row1, row2)- minx)/(maxx-minx)
```

Gdzie ustawiasz minx i maxx? Możesz zastosować tę normalizację minimalną i maksymalną do wymiarów wektorowych, zamiast obliczonej odległości.
emre może

0

Podobieństwo cosinus jest jak korelacja Pearsona, ale bez odejmowania średnich. Możesz więc porównać względną siłę 2 podobieństw cosinusów, patrząc na wartości bezwzględne, podobnie jak w przypadku porównania wartości bezwzględnych 2 korelacji Pearsona.


0

Ma rację, że podobieństwo cosinus między wektorami częstotliwości nie może być ujemne, ponieważ liczba słów nie może być ujemna, ale w przypadku osadzania słów (np. Rękawicy) możesz mieć wartości ujemne.

Uproszczony widok budowy osadzania słów jest następujący: Każde słowo przypisujesz losowemu wektorowi w R ^ d. Następnie uruchom optymalizator, który próbuje przesunąć dwa podobne wektory v1 i v2 blisko siebie lub doprowadzić dwa oddzielne wektory v3 i v4 dalej od siebie (jak na pewien dystans, powiedzmy cosinus). Przeprowadzasz tę optymalizację dla wystarczającej liczby iteracji, a na końcu osadzasz słowa z jedynym kryterium, że podobne słowa mają wektory bliższe, a wektory niepodobne są dalej. Wynik końcowy może sprawić, że niektóre wartości wymiarów będą ujemne, a niektóre pary będą miały ujemne podobieństwo kosinusowe - po prostu dlatego, że proces optymalizacji nie dbał o to kryterium. Możliwe, że spowodowało to, że niektóre wektory osiągnęły wartości ujemne. Wymiary wektorów nie odpowiadają liczbie słów,

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.