
62번 Gram 행렬 은 내적 의 모든 쌍. 내적은 벡터 길이 에 영향받아 "긴 벡터끼리 더 유사"로 편향될 수 있습니다. 해결은 행 정규화:
norms = np.linalg.norm(X, axis=1, keepdims=True) # (N, 1)
X_norm = X / np.clip(norms, 1e-12, None)
S = X_norm @ X_norm.T # (N, N)
함수 cosine_similarity_matrix(X) 를 완성하세요.
X shape (N, D).(N, N), 값 , 대각 = 1 (영벡터 아니라면).| # | 이름 | 검증 |
|---|---|---|
| 1 | shape (N, N) | |
| 2 | 대각 = 1 (영벡터 없으면) | |
| 3 | 대칭 | S == S.T |
| 4 | 값 범위 ⊂ [-1, 1] | |
| 5 | 스케일 불변 | S(αX) == S(X) |
| 6 | 루프 금지 |
(m×n)·(n×p)=(m×p), 전치 .T, 내적.@(행렬곱) 와 *(요소별 곱)은 완전히 다름.코드를 작성하고 실행하면 5개의 테스트가 각각 표시됩니다.