핵심 인사이트 (3줄 요약)

  1. 본질: 코사인 유사도(Cosine Similarity)는 두 개의 데이터(주로 텍스트나 사용자 평점 벡터)가 다차원 우주 공간에서 가리키는 **'방향(각도)'**이 얼마나 똑같은지를 -1에서 1 사이의 수치로 계산해 내는 거리 척도다.
  2. 가치: 데이터의 '절대적인 크기(길이)'를 완전히 무시하므로, 영화를 100편 본 평론가와 영화를 2편 본 일반인이더라도 두 사람이 똑같은 영화를 극찬했다면 "둘의 취향은 100% 똑같다"고 평가해 주는 기막힌 보정 능력을 갖추고 있다.
  3. 판단 포인트: 유클리디안 거리(단순 직선거리)가 크기에 심하게 휘둘리는 단점을 극복하여 텍스트 마이닝과 추천 시스템(협업 필터링)의 절대적인 표준으로 쓰이지만, 0점이 많은(Sparse) 데이터에서는 각도 계산의 신뢰성이 떨어지므로 피어슨 상관계수로 보정하는 판단이 필요하다.

Ⅰ. 개요 및 필요성

쇼핑몰에서 A고객은 [아이폰 10개, 에어팟 10개]를 샀고, B고객은 [아이폰 1개, 에어팟 1개]를 샀다. 이 둘은 취향이 같을까 다를까? 일반적인 자(유클리디안 거리)로 둘 사이의 거리를 재면, A는 너무 많이 샀기 때문에 B와 엄청나게 멀리 떨어진 남남으로 계산된다.

하지만 비즈니스 관점에서 둘은 완벽한 '애플빠'로 취향이 100% 똑같다. "데이터의 크기(구매량, 단어 수)에 휘둘리지 말고, 그 데이터가 향하고 있는 '비율과 방향(취향)'만 순수하게 측정할 순 없을까?" 이 질문에서 채택된 삼각함수 공식이 바로 코사인 유사도다. 크기를 무시하고 오직 각도만 잰다는 철학은 텍스트 문서 비교의 구원자가 되었다.

📢 섹션 요약 비유: 100m를 걸어간 거인과 1m를 걸어간 꼬마의 거리는 매우 멀지만, 두 사람이 걷고 있는 '나침반의 방향'이 똑같이 정북쪽(0도)이라면 두 사람은 같은 목적지를 향해 가고 있다고 판단하는 것이다.


Ⅱ. 아키텍처 및 핵심 원리

코사인 유사도는 두 벡터 $\mathbf{A}$와 $\mathbf{B}$ 사이의 끼인각 $\theta$의 코사인 값을 계산한다.

┌────────────────────────────────────────────────────────┐
│             [ 코사인 유사도의 수학적 계산 및 의미 ]            │
├────────────────────────────────────────────────────────┤
│ 1. 코사인 유사도 공식                                   │
│    Cos(θ) = (A · B) / (||A|| × ||B||)                │
│    - 분자: 두 벡터의 내적 (방향이 같을수록 값이 커짐)        │
│    - 분모: 두 벡터의 크기를 곱함 (크기를 나눠버려서 무력화시킴!)│
│                                                        │
│ 2. 결과값의 해석 (-1 ~ 1)                              │
│    - Cos(0도) = 1  : 방향이 완벽히 똑같음 (도플갱어)       │
│    - Cos(90도) = 0 : 서로 아무 상관 없음 (완전 남남)        │
│    - Cos(180도) = -1: 방향이 완벽히 정반대임 (철천지 원수)    │
└────────────────────────────────────────────────────────┘
  1. 크기 정규화 (Normalization): 공식의 분모에서 $A$의 길이와 $B$의 길이로 나누어 준다. 이는 100페이지짜리 긴 소설책이나 1페이지짜리 짧은 시나 모두 똑같은 1cm짜리 화살표로 길이를 강제로 맞춰놓고(정규화) 각도만 비교하는 마법이다.
  2. 희소 행렬(Sparse Matrix) 최적화: 텍스트 데이터는 단어 행렬에 0이 엄청나게 많다. 유클리디안 거리는 0끼리의 거리도 계산하지만, 코사인 유사도의 분자인 '내적' 연산은 둘 중 하나라도 0이면 곱해서 0으로 날려버리므로 연산 속도가 압도적으로 빠르다.

📢 섹션 요약 비유: 손전등 불빛이 얼마나 밝은지(데이터 크기)는 중요하지 않다. 두 개의 손전등이 벽의 똑같은 곳(방향)을 비추고 있는지만 검사하기 위해 불빛의 밝기를 똑같이 맞춰버리는 조도 조절기다.


Ⅲ. 비교 및 연결

머신러닝에서 벡터 간의 유사도를 재는 3대 거리 척도를 비교하면 코사인 유사도의 독보적 위치가 보인다.

비교 항목유클리디안 거리 (L2 Distance)피어슨 상관계수 (Pearson)코사인 유사도 (Cosine)
측정 기준공간상 두 점 사이의 절대적 직선거리두 변수 간의 선형적 비례 관계두 벡터가 향하는 각도(방향)
데이터 크기 영향매우 크게 받음 (스케일링 필수)받지 않음전혀 받지 않음 (자동 정규화)
결과값 형태0 ~ $\infty$ (작을수록 비슷함)-1 ~ 1 (1일수록 비슷함)-1 ~ 1 (1일수록 비슷함)
최고의 용도K-Means 군집화, KNNA/B 변수의 통계적 상관성텍스트 마이닝 (문서 유사도), 추천 시스템

사실 코사인 유사도와 피어슨 상관계수는 핏줄이 같다. 데이터들의 평균을 0으로 깎아낸 뒤(Mean-centering) 코사인 유사도를 구하면, 그 수치는 피어슨 상관계수와 100% 완벽하게 일치한다.

📢 섹션 요약 비유: 유클리디안이 "너 나랑 집 거리가 얼마나 멀어?"라고 묻는 거라면, 피어슨은 "너 나랑 시험 등수 오르락내리락하는 패턴이 비슷해?"라고 묻는 거고, 코사인은 "너 나랑 장래 희망(방향)이 똑같아?"라고 묻는 것이다.


Ⅳ. 실무 적용 및 기술사 판단

실무 적용 시나리오: 구글이나 네이버의 '유사 문서(중복 문서) 판독기'에 쓰인다. 블로거 A가 B의 글을 토씨 하나 안 틀리고 베낀 뒤, 앞뒤로 인사말만 100줄을 더 붙였다. 유클리디안 거리로 재면 두 문서의 길이가 달라 다른 문서로 속아 넘어간다. 하지만 TF-IDF 벡터로 바꾼 뒤 코사인 유사도를 돌리면, 두 문서의 '단어 사용 비율(방향)'이 완벽히 겹치므로 유사도 0.99가 나와 즉시 어뷰징(Abusing)으로 차단된다.

기술사 판단 포인트 (Trade-off): 협업 필터링 추천 시스템을 설계할 때, 기술사는 **'평가 기준의 편향(Rating Bias)'**을 코사인 유사도가 잡지 못한다는 맹점을 해결해야 한다.

  1. 고객 A는 점수가 짜서 명작에도 3점을 주고, 고객 B는 관대해서 망작에도 5점을 준다. 둘의 코사인 각도를 재면 평점의 척도가 달라 취향이 다르다고 오판한다.
  2. 따라서 순수 코사인 유사도를 그대로 쓰면 안 되며, 각 고객의 '평균 별점'을 모든 데이터에서 빼서 영점을 맞춰준 뒤 코사인 유사도를 구하는 조정된 코사인 유사도(Adjusted Cosine Similarity) 파이프라인을 구축해야만 추천의 질이 비약적으로 상승한다.

📢 섹션 요약 비유: 짠돌이 평론가의 3점과 천사 평론가의 5점은 사실 똑같이 "최고의 영화"라는 뜻이다. 코사인 유사도는 이 속마음을 모르기 때문에, 사전에 두 평론가의 기준표 평균을 0점으로 강제로 맞춰주는 영점 조절 수술이 필요하다.


Ⅴ. 기대효과 및 결론

코사인 유사도는 텍스트나 사용자 별점처럼 0(빈칸)이 99%를 차지하는 척박한 고차원 희소(Sparse) 데이터 환경에서, 빠르고 우아하게 데이터의 의미망(Semantic Web)을 엮어낸 최고의 수학 공식이다.

결론적으로 LLM(거대 언어 모델) 시대가 도래하면서 코사인 유사도는 다시 한번 전성기를 맞고 있다. RAG(검색 증강 생성) 아키텍처에서 사용자의 질문(Query)과 수백만 개의 사내 문서 조각(Chunk)들을 벡터 차원에 뿌려놓고, 가장 각도가 좁은(코사인 유사도가 1에 가까운) 문서를 0.1초 만에 찾아내어 챗GPT의 아가리에 넣어주는 Vector DB의 최전선 검색 엔진이 바로 코사인 유사도이기 때문이다. 기술사는 이 각도 계산의 철학을 텍스트 임베딩 파이프라인의 심장으로 다뤄야 한다.

📢 섹션 요약 비유: 사막에서 바늘을 찾을 때, 나침반의 바늘(코사인 유사도)이 가리키는 뱡항만 따라가면 사막이 얼마나 넓든(데이터 크기) 상관없이 가장 빠르고 정확하게 바늘을 찾아낼 수 있는 나침반의 법칙이다.

📌 관련 개념 맵

  • 상위 개념: 거리 척도 (Distance Metrics), 텍스트 마이닝
  • 하위 개념: 내적 (Dot Product), 벡터 정규화 (Vector Normalization)
  • 연결 개념: TF-IDF, 협업 필터링 (CF), Word2Vec, Vector DB (RAG)

👶 어린이를 위한 3줄 비유 설명

  1. 코끼리는 사과 100개를 먹고, 다람쥐는 사과 1개를 먹어요. 둘의 덩치 차이는 엄청나죠?
  2. 코사인 유사도는 이 덩치(크기)는 하나도 안 보고, "어? 둘 다 다른 과일은 안 먹고 사과만 먹네?"라는 사실만 봐요.
  3. 그래서 덩치에 속지 않고 "코끼리와 다람쥐는 100% 똑같은 사과 매니아(취향)야!"라고 똑똑하게 찾아내는 마법의 각도기랍니다!