← 문제 목록/Cosine Nearest Centroid (Rocchio)
문제 해설

Cosine Nearest Centroid (Rocchio)

분류 · easy

preview

Cosine Nearest Centroid (Rocchio)

59번 Manhattan Nearest Centroid 는 L1 거리로 스케일 이상치에 덜 민감. 텍스트/IR 에선 한 걸음 더 나아가 방향만 봅니다 — 문서 벡터의 길이(문서 길이)는 주제와 무관하니까.

Rocchio classifier: 클래스별 평균 벡터를 구한 뒤, 테스트 벡터와 코사인 유사도 가 가장 큰 클래스 반환.

cos(x,μc)=xμcxμc\cos(\mathbf{x}, \boldsymbol{\mu}_c) = \frac{\mathbf{x} \cdot \boldsymbol{\mu}_c}{\|\mathbf{x}\| \, \|\boldsymbol{\mu}_c\|}

y^=argmaxccos(x,μc)\hat{y} = \arg\max_c \cos(\mathbf{x}, \boldsymbol{\mu}_c)

언제 좋은가

  • 고차원 희소 벡터 (TF-IDF, BoW) — 길이보다 "어떤 단어가 많은가" 가 중요.
  • 유클리드로는 긴 문서가 항상 멀어 보이는 문제.

주의

  • 영벡터 처리 필요 (norm=0 인 경우 division by zero → 1e-12 로 clip).
  • 방향만 보므로, 예: x=2μc\mathbf{x} = 2\boldsymbol{\mu}_cx=μc\mathbf{x} = \boldsymbol{\mu}_c 와 동일한 유사도.

과제

함수 predict_cosine_centroid(X_train, y_train, X_test) 를 완성하세요.

  • 각 클래스 평균 벡터 계산.
  • 테스트 벡터와 각 평균 벡터의 코사인 유사도 → argmax.
  • 반환: (M,) 정수 레이블.

테스트 케이스

#이름검증
1shape(M,)
2분리된 2 방향 → 100%
3스케일 불변x * 10 도 같은 예측
4L2 와 다른 케이스길이만 차이나는 경우
53-class 방향 클러스터≥ 0.9 정확도
코드 작성
Loading...
실행 결과

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