← 문제 목록/코사인 거리 (1 - cos)
문제 해설

코사인 거리 (1 - cos)

NumPy 기초 · easy

preview

코사인 거리 (Cosine Distance)

13번 코사인 유사도유사도(높을수록 비슷). 거리 지표가 필요할 땐 단순히 1에서 빼면 됩니다:

dcos(x,y)=1cos(x,y)=1xyxyd_{\cos}(\mathbf{x}, \mathbf{y}) = 1 - \cos(\mathbf{x}, \mathbf{y}) = 1 - \frac{\mathbf{x} \cdot \mathbf{y}}{\|\mathbf{x}\| \, \|\mathbf{y}\|}

범위: [0,2][0, 2]

  • 같은 방향 → 0 (완전히 가까움)
  • 직교 → 1
  • 반대 방향 → 2

어디 쓰나?

KNN·클러스터링에서 방향 기반 유사도가 필요할 때. 텍스트 임베딩(TF-IDF, word2vec)과 문서 검색이 대표 사례 — 문서 길이와 무관하게 "주제" 만 비교.

주의: 코사인 거리는 참 거리 메트릭이 아님 (삼각부등식을 만족하지 않을 수 있음). 진짜 메트릭이 필요하면 angular distance = arccos(cos) / π 를 씀.

과제

함수 cosine_distance(x, y) 를 완성하세요.

  • 입력: 1D 배열 두 개.
  • 반환: Python float, 범위 [0, 2].
  • 한 줄: 1 - cos(x, y) 혹은 직접 수식.

테스트 케이스

#이름xy기대
1같은 벡터[1, 2, 3][1, 2, 3]0.0
2스케일 불변[1, 0][5, 0]0.0
3직교 → 1[1, 0][0, 1]1.0
4반대 방향 → 2[1, 2][-1, -2]2.0
545°[1, 1][1, 0]1 - 1/√2 ≈ 0.293
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.