topic난이도 · 약 20

코사인 유사도 — 단어 거리 측정

두 벡터가 이루는 각도로 유사성을 측정한다. 1이면 동일, 0이면 무관, -1이면 반대.

#코사인 유사도#내적#노름#유사도 히트맵
왜 배우는가

AI에게 '이 두 문장이 비슷한가?'라고 물으면 숫자로 답한다. 0.95면 매우 비슷하고, 0.1이면 전혀 다르다는 뜻이다. 코사인 유사도 — 두 벡터가 이루는 각도로 유사성을 측정하는 방법이다.

코사인 유사도 — 두 벡터 사이의 각도로 유사성 측정

벡터가 같은 방향을 가리키면 유사도는 1에 가깝습니다

용어설명
코사인 유사도두 벡터 사이의 각도로 유사성을 측정하는 방법

코사인 유사도는 두 벡터 사이의 각도(θ)를 측정합니다

0° → cos=1 (동일), 90° → cos=0 (무관)

코사인 유사도(Cosine Similarity), 내적(Dot Product), 노름(Norm)

1에 가까우면 → 의미가 비슷하다 (같은 방향) 0에 가까우면 → 의미가 무관하다 (직각) -1에 가까우면 → 의미가 반대다 (반대 방향)

코사인 유사도의 수학적 정의를 살펴봅시다

cos(θ) = (A·B) / (‖A‖ × ‖B‖) 분자는 두 벡터의 내적(각 원소끼리 곱한 후 합산), 분모는 각 벡터의 크기(노름)를 곱한 값입니다. 벡터의 크기를 나누어주기 때문에 방향만 비교합니다.

A·B = Σᵢ Aᵢ × Bᵢ = A₁B₁ + A₂B₂ + ⋯ + AₙBₙ 내적은 같은 위치의 원소끼리 곱한 후 모두 더합니다. 두 벡터가 같은 방향의 성분이 클수록 내적 값이 커집니다.

직접 코사인 유사도를 계산해봅시다

np.dot()으로 내적, np.linalg.norm()으로 크기를 구하여 코사인 유사도를 계산한다.

여러 단어 사이의 유사도를 한눈에 보여주는 히트맵입니다

대각선은 자기 자신과의 유사도(=1.0)입니다. '왕'과 '여왕'은 0.85, '왕'과 '개'는 0.1

AI는 유사도 행렬로 검색, 추천, 번역을 수행합니다

히트맵 읽는 법: 빨간색(1.0에 가까움) → 매우 유사 파란색(0에 가까움) → 거의 무관 대각선은 항상 1.0 (자기 자신)

순수 Python으로 코사인 유사도를 구현하고 다양한 벡터 쌍을 비교합니다

순수 Python으로 내적, 크기, 코사인 유사도를 구현하여 의미가 비슷한 단어 쌍(고양이-강아지)의 유사도가 높음을 확인한다.

수학적 정의설명
공식cos(θ) = A·B / (‖A‖ × ‖B‖) — 내적을 크기로 나눔
내적(Dot Product)같은 위치 원소끼리 곱한 후 모두 더한 값
노름(Norm)벡터의 크기(길이) — √(v₁² + v₂² + ...)
유사도 해석설명
1에 가까우면같은 방향 → 의미가 비슷하다
0에 가까우면직각(직교) → 의미가 무관하다
-1에 가까우면반대 방향 → 의미가 반대다

코사인 유사도는 벡터의 크기(길이)에 영향받지 않고 방향만 비교합니다 — 이것이 유클리드 거리와의 핵심 차이!

실기 드릴 5문항
edit실기 드릴 · 단답형

두 문장의 코사인 유사도가 0.02라면 어떤 의미인가요?

check_circle실기 드릴 · OX

코사인 유사도는 벡터의 크기(길이)에 영향을 받지 않고 방향만 비교한다.

check_circle실기 드릴 · OX

코사인 유사도가 -1이면 두 벡터는 완전히 반대 방향을 가리킨다.

edit실기 드릴 · 단답형

NumPy에서 벡터의 크기(노름)를 계산하는 함수는?

check_circle실기 드릴 · OX

동일한 두 벡터의 코사인 유사도는 항상 1이다.