코사인 유사도란?
- 두 벡터 간의 각도를 이용하여 유사도를 측정하는 방법입니다.
- 코사인 유사도는 두 벡터가 이루는 각의 코사인 값을 계산하여 유사도를 나타냅니다.
- 이론상 값의 범위는 -1에서 1까지이며, 1에 가까울수록 두 벡터가 유사하다는 것을 의미합니다.
- 실제 코사인 유사도를 구성하는 벡터값은 거의 1사분면만 지나기 때문에 값의 범위는 0에서 1범위이 됩니다.
코사인 유사도를 사용하는 이유
- 크기 무시: 벡터의 크기(길이)를 무시하고 방향만 비교합니다.
- 예를 들어, 문서의 길이가 다르더라도 내용이 비슷하면 유사하다고 판단할 수 있습니다.
- 단순성: 계산이 간단하고 효율적입니다.
- 두 벡터의 내적(dot product)과 크기(norm)만으로 계산할 수 있습니다.
- 정규화 필요 없음: 벡터를 정규화하지 않아도 됩니다.
- 벡터의 크기에 영향을 받지 않기 때문에, 데이터 전처리가 간단해집니다.
사인과 탄젠트를 사용하지 않는 이유
- 사인(Sine)
- 사인은 두 벡터가 이루는 각의 직교성을 측정합니다.
- 유사도보다는 직교성(90도에 가까운지)을 측정하는 데 적합합니다.
- 유사도를 측정하는 데는 부적합합니다.
- 탄젠트(Tangent)
- 탄젠트는 각의 기울기를 나타냅니다.
- 각도가 90도에 가까워지면 값이 무한대로 발산합니다.
- 유사도를 측정하는 데 안정적이지 않습니다.
비유로 이해하기
- 코사인: 두 사람이 같은 방향을 바라보고 있는지를 확인하는 것과 같습니다. 방향이 같으면 유사하다고 판단합니다.
- 사인: 두 사람이 서로 직각으로 서 있는지를 확인하는 것과 같습니다. 직교성을 측정하는 데 사용됩니다.
- 탄젠트: 두 사람이 바라보는 방향의 기울기를 측정하는 것과 같습니다. 각도가 커질수록 값이 불안정해집니다.
고유값과 고유벡터란?
- 정방행렬 A에 어떤 벡터 v를 곱했을 때, 그 결과가 단순히 그 벡터에 상수 λ를 곱한 것과 같아지는 경우가 있습니다.
- 이때 이 상수 λ를 '고유값(eigenvalue)'이라 하고, 벡터 v를 '고유벡터(eigenvector)'라고 합니다.
수식으로 표현하면:
Av = λv
여기서:
- A는 n×n 정방행렬
- v는 영벡터가 아닌 벡터
- λ는 스칼라 값(고유값)
쉬운 예시로 이해하기
예를 들어, 다음과 같은 2×2 행렬이 있다고 가정해봅시다:
A = [2 0]
[0 3]
이 행렬의 경우:
- λ = 2일 때의 고유벡터는 [1, 0]
- λ = 3일 때의 고유벡터는 [0, 1]
고유값과 고유벡터의 의미
- 방향 변화: 고유벡터는 행렬 변환 후에도 방향이 변하지 않는 특별한 벡터입니다.
- 크기 변화: 고유값은 고유벡터가 얼마나 늘어나거나 줄어드는지를 나타냅니다.
실생활 응용
- 검색 엔진: 구글의 PageRank 알고리즘
- 이미지 압축: JPEG 압축에서 사용
- 진동 분석: 건물이나 다리의 진동 특성 분석
- 양자역학: 입자의 상태를 표현
계산법
계산 단계
- 특성방정식(고유방정식) 구하기여기서:
det(A - λI) = 0
- det는 행렬식(determinant)
- A는 주어진 행렬
- λ는 고유값을 나타내는 미지수
- I는 단위행렬
- 고유값 구하기
- 특성방정식을 풀어서 λ값들을 구합니다.
- 고유벡터 구하기
- 각 고유값을 (A - λI)v = 0 에 대입하여 연립방정식을 풉니다.
예시 문제
2×2 행렬의 경우를 살펴보겠습니다:
A = [3 1]
[1 3]
1단계: 특성방정식 구하기
det([3-λ 1 ]) = 0
[1 3-λ]
(3-λ)(3-λ) - 1 = 0
(3-λ)² - 1 = 0
λ² - 6λ + 8 = 0
2단계: 고유값 구하기
λ² - 6λ + 8 = 0
(λ - 2)(λ - 4) = 0
λ = 2 또는 λ = 4
3단계: 고유벡터 구하기
λ = 2일 때:
[3-2 1 ][x] = [0]
[1 3-2][y] [0]
[1 1][x] = [0]
[1 1][y] [0]
x + y = 0
x = -y
따라서 고유벡터는 [1, -1]
λ = 4일 때:
[3-4 1 ][x] = [0]
[1 3-4][y] [0]
[-1 1][x] = [0]
[1 -1][y] [0]
x = y
따라서 고유벡터는 [1, 1]
주의사항
- 고유벡터는 스칼라배를 해도 여전히 고유벡터입니다.
- n×n 행렬은 최대 n개의 서로 다른 고유값을 가질 수 있습니다.
- 중복 고유값이 있을 수 있습니다.
계산 팁
- 2×2 행렬의 경우:
- 고유값의 합 = 대각선 원소의 합(trace)
- 고유값의 곱 = 행렬식(determinant)
- 삼각행렬의 경우:
- 대각선 원소가 바로 고유값입니다.
'TIL' 카테고리의 다른 글
| Docker 소개 (0) | 2025.01.31 |
|---|---|
| [TIL] 241216 (2) | 2024.12.16 |
| [WIL] 24.12 1주차 (2) | 2024.12.06 |
| [TIL] 241206 Markdown 문법 정리 (1) | 2024.12.06 |
| [TIL] 241128 개발환경셋팅(Input-leap) (2) | 2024.11.28 |