[ML]cosine similarity VS euclidean distance (+ KL divergence)

건너별·2022년 1월 31일
0

ML

목록 보기
13/21
post-custom-banner

머신러닝의 데이터의 특성은 대부분이 벡터의 형태로 표현됩니다. 이러한 벡터 간의 거리를 측정하는 방법론에 대해 고찰하여 봅시다. 가까우면 유사도가 높다, 멀면 유사도가 낮다고 판단할 수 있겠다는 점은 직관적으로 판단 가능하겠죠?

코사인유사도

cos(A,B)=ABA2B2cos(A,B) = \frac {A\cdot B}{||A||_2 ||B||_2}
  • 값의 범위는 [-1,1]
  • 같은 벡터라면 유사도는 1, 방향이 반대라면 유사도는 -1 (각도와 관련)

장점

  • 텍스트 데이터 간 Euclidean Distance 측정을 예로 들면, 내용이 비슷해도 길이가 많이 다르면 값이 많이 커짐
  • 이와 달리, 코사인 유사도를 사용한다면, 각도가 작기 때문에 유사도가 높게 나옴

정리하자면

  • Euclidean distance는 수치상의 절대적인 차이를 의미. 의 경우 데이터 차원의 영향을 많이 받기 때문에, 유사도 측정에 불안정하다.
  • Cosine similarity는 방향과 크기의 상대적 차이를 의미. 각도와 관련되어 최대 크기가 1로 Normalize되어 있다.

KL divergence

  • p와 q의 cross entropy에서 p 엔트로피 값을 뺀 것
    DKL(pq)=H(p,q)H(p)=ipilogqipi (이산형)=p(x)logq(x)p(x)dx (연속형)D_{KL}(p||q) = H(p,q) - H(p) = -\sum_i p_ilog\frac {q_i}{p_i}\space (이산형) = -\int p(x)log\frac{q(x)}{p(x)}dx\space (연속형)
  • 확률 분포간의 차이를 의미
  • 거리 개념이 아니다. (asymmetric)
  • relative entropy라고도 부름

특성

  • 항상 0보다 크다
  • 교환법칙이 성립하지 않음
profile
romantic ai developer
post-custom-banner

0개의 댓글