Cosine Similarity와 Dot Product의 관계

HanJu Han·2024년 12월 23일
0

추천 시스템

목록 보기
33/49

Cosine Similarity와 Dot Product의 관계

1. 수식 설명:

  • s(q,x) = ||x|| ||q|| cos(q,x)
  • 여기서 s(q,x)는 두 벡터 q와 x 사이의 유사도를 나타냅니다
  • ||x||는 벡터 x의 norm(길이)
  • ||q||는 벡터 q의 norm(길이)
  • cos(q,x)는 두 벡터 사이의 코사인 각도

2. 특징:

  • 점곱은 각 벡터의 Norm을 곱한 값을 포함합니다
  • 이는 벡터의 크기(magnitude)가 유사도 계산에 영향을 미친다는 것을 의미합니다
  • 이미지에서 설명하는 것처럼, Norm이 클수록 Cosine Similarity에 비해 Similarity 값이 크게 나타납니다

3. 실제 응용:

  • 텍스트 마이닝이나 정보 검색에서 자주 사용됩니다
  • 두 문서나 벡터의 방향성(similarity)뿐만 아니라 크기도 고려할 때 유용합니다
  • 예를 들어, 문서 검색에서 문서의 길이(norm)가 검색 결과의 순위에 영향을 미칠 수 있습니다

4. 중요한 포인트:

  • 순수한 Cosine Similarity는 방향만 고려하지만, 이 수식은 벡터의 크기도 함께 고려합니다
  • 이는 더 포괄적인 유사도 측정을 가능하게 하지만, 때로는 크기 차이가 지나치게 결과에 영향을 미칠 수 있습니다
  • 따라서 적용 상황에 따라 정규화(normalization)를 고려해야 할 수 있습니다

예시

아이템의 순수한 유사도만 보고 싶을 때는 코사인 유사도만 사용하는 것이 더 적절합니다.

예를 들어 영화 추천 시스템을 생각해보면:

영화 : [1,2,1,2]
  1. 점곱 사용 시:
영화 A: 평점 벡터 [5,2,5,2] (많은 사람이 높게 평가)
영화 B: 평점 벡터 [2,3,2,3] (적은 사람이 평가했지만 비슷한 패턴)
  • 점곱은 norm의 영향으로 인기 있는 영화 A를 더 유사하다고 판단
  • 결과: 단순히 인기 있는 영화가 추천될 가능성이 높음
  1. 코사인 유사도 사용 시:
영화 A: [5,2,5,2] -> 정규화 후: [0.5,0.5,0.5,0.5]
영화 B: [2,3,2,3] -> 정규화 후: [0.5,0.5,0.5,0.5]
  • 코사인 유사도는 1.0으로 완벽히 같은 패턴으로 인식
  • 결과: 인기도와 관계없이 순수하게 비슷한 패턴의 영화 추천

따라서:

  • 인기도를 제외하고 순수 유사도만 보고 싶다면 → 코사인 유사도
  • 인기도도 고려하여 추천하고 싶다면 → 점곱
    을 사용하는 것이 적절합니다.
profile
시리즈를 기반으로 작성하였습니다.

0개의 댓글