음의 코사인 유사성 해석


17

내 질문은 어리석은 질문 일 수 있습니다. 그래서 미리 사과하겠습니다.

Stanford NLP 그룹에 의해 사전 훈련 된 GLOVE 모델을 사용하려고했습니다 ( link ). 그러나 유사성 결과에 약간의 음수가 있음을 알았습니다.

즉각 단어 벡터 데이터 파일을 보라는 메시지가 나타납니다. 분명히, 단어 벡터의 값은 음수가 될 수있었습니다. 그것이 왜 코사인의 음의 유사성을 보았는지 설명했습니다.

나는 주파수 벡터의 코사인 유사성의 개념에 익숙하며, 그 값은 [0, 1]에 묶여있다. 나는 벡터 사이의 각도에 따라 내적과 코사인 함수가 양수 또는 음수 일 수 있다는 사실을 알고 있습니다. 그러나 나는이 부정적인 코사인 유사성을 이해하고 해석하는 데 어려움을 겪고 있습니다.

예를 들어, -0.1의 유사성을 제공하는 단어 쌍이 있으면 유사성이 0.05 인 다른 쌍보다 덜 유사합니까? -0.9와 0.8의 유사성을 비교하면 어떻습니까?

아니면 와 최소 각도 차이의 절대 값을보아야 합니까? 점수의 절대 값?π

많은 감사합니다.


1
코사인 유사성 태그의 말 : An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.이 둘의 유일한 차이점은 상호 곱셈되고있는 상관 편차 (모멘트)가 평균에서 나온 반면 코사인 편차는 원래 0에서 온 것입니다. 즉, 값이 그대로 .
ttnphns

2
양수 또는 음수 계수에 대한 이해는 두 경우 모두 동일합니다. 음수. 이는 한 벡터의 양의 편차 / 값이 다른 벡터의 음의 편차 / 값과 쌍을 이루는 경향이 있음을 의미합니다. 이것이 벡터가 "유사"인지 또는 반대로 "매우 유사하지 않다"를 의미하는지 여부는 데이터의 양수 및 음수 편차 / 값의 의미에 따라 달라집니다.
ttnphns

@ttnphns 의견을 보내 주셔서 감사합니다! 코사인 유사성에 대해 새로운 방식으로 생각하도록 영감을줍니다. 내 유스 케이스에서는 아마도 최종 결과의 차이로 생각할 수 있습니다. 문서 A와 B의 상관 관계가 음수이고 단일 주제 저널 X에 문서 A가 포함되어 있다면 X가 B를 음, 어떤 평균 확률에서. 이 해석이 귀하에게 유효합니까?
Mai

나는 당신의 데이터, 그 가치의 의미, 그리고 당신의 연구를 모르기 때문에 감히 말할 수 없습니다.
ttnphns

답변:


2

두 벡터 와 를 , 각도 는 스칼라 곱과 벡터의 표준에 의해 얻어진다.θ

영형에스(θ)=||||||||

때문에 값이 상기 범위 인 :영형에스(θ)[1,1]

  • 1 값은 강한 반대 벡터를 나타냅니다
  • 0독립적 인 (직교) 벡터
  • 1 유사한 (양 공동 선형) 벡터. 중간 정도의 값은 유사도를 평가하는 데 사용됩니다.

: 두 명의 사용자 과 , 이 영화에 대한 취향에 두 사용자의 유사성을 .12에스나는미디엄(1,2)

  • 에스나는미디엄(1,2)=1 두 사용자는 정확히 같은 맛을 가지고 있다면 (또는 경우 )1=2
  • 에스나는미디엄(1,2)=0두 사용자간에 상관 관계가없는 경우 (예 : 일반적인 영화를 보지 못한 경우
  • 에스나는미디엄(1,2)=1사용자가 맛에 반대하는 경우 예 : 동일한 영화를 반대 방식으로 평가 한 경우)

0

음수 부호는 임의적이 아니므로 절대 값을 사용하지 마십시오. 0과 1 사이의 코사인 값을 얻으려면 다음 코사인 함수를 사용해야합니다.

(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))
} 

(파이썬 코드)

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)
```

minx와 maxx는 어디에 설정합니까? 이 최소-최대 정규화를 계산 된 거리 대신 벡터 치수에 적용 할 수 있습니다.
emre는

0

코사인 유사성은 피어슨 상관과 유사하지만 평균을 빼지 않습니다. 따라서 2 Pearson 상관의 절대 값을 비교하는 방법과 마찬가지로 절대 값을보고 2 개의 코사인 유사성의 상대 강도를 비교할 수 있습니다.


0

단어 수는 음수가 될 수 없으므로 주파수 벡터 간의 코사인 유사성은 음수가 될 수 없지만 글러브와 같은 단어 포함을 사용하면 음수 값을 가질 수 있습니다.

Word 포함 구성의 단순화 된보기는 다음과 같습니다. 각 단어를 R ^ d의 임의 벡터에 할당합니다. 그런 다음 두 개의 유사한 벡터 v1과 v2를 서로 가깝게 이동 시키거나 두 개의 서로 다른 벡터 v3과 v4를 더 멀리 (드라이브 거리에 따라) 구동하려고하는 옵티 마이저를 실행하십시오. 충분한 반복을 위해이 최적화를 실행하고 결국 유사한 단어에 더 가까운 벡터가 있고 다른 벡터가 더 멀다는 유일한 기준을 가진 단어 임베딩이 있습니다. 최종 결과는 일부 차원 값이 음수이고 일부 쌍이 음의 코사인 유사성을 가지게 할 수 있습니다. 단순화 프로세스가이 기준에 신경 쓰지 않았기 때문입니다. 음수 값에 일부 벡터를 잘 삽입했을 수 있습니다. 벡터의 크기는 단어 수와 일치하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.