벡터 유사도

From CS Wiki

유클리드 거리[edit | edit source]

Euclidean distance

두 점 사이의 거리를 구하는 가장 대표적인 방식이다. 구하는 방식은 두 벡터에서 각 성분 간의 차를 제곱하여 합한 뒤 제곱근을 씌워 구한다. 벡터 P와 Q 사이의 유클리드 거리는 아래와 같이 나타낼 수 있다.

유클리드 거리 공.png

맨해튼 거리[edit | edit source]

Manhattan distance

흔히 택시 거리라고도 하며, 거리 공간에서 유클리드 거리 외의 두 점 사이의 거리를 구하는 방식으로 알려져있다. 두 벡터가 있을 때, 벡터 성분 간 차이의 절댓값을 모두 합하여 구하므로 유클리드 거리보다 식이 비교적 간단하다. 벡터 P와 Q 사이의 맨해튼 거리를 식으로 나타내면 아래와 같다.

맨해튼 거리 공식.png

민코프스키 거리[edit | edit source]

Minkowski distance

두 벡터의 유사도를 벡터 사이의 각도를 사용해 표현하는 방식이다. 두 벡터 사이의 각도는 0도에서 최대 180도가 가능하며, 이때 그 각도에 해당하는 코사인 값을 두 벡터 사이의 코사인 유사도로 정의한다. 코사인 유사도 값을 구하는 식은 벡터의 내적을 사용해 아래와 같이 표현할 수 있다.

거리 공간에서 사용하는 거리 함수들을 일반화한 방식으로 생각할 수 있다. 아래와 같은 식으로 표현하며, p가 1인 경우 맨해튼 거리, p가 2인 경우 유클리드 거리와 동일하게 표현된다.

민코프스키 거리.png

코사인 유사도[edit | edit source]

Cosine similarity

두 벡터의 유사도를 벡터 사이의 각도를 사용해 표현하는 방식이다. 두 벡터 사이의 각도는 0도에서 최대 180도가 가능하며, 이때 그 각도에 해당하는 코사인 값을 두 벡터 사이의 코사인 유사도로 정의한다. 코사인 유사도 값을 구하는 식은 벡터의 내적을 사용해 아래와 같이 표현할 수 있다.

코사인 거리 공.png

자카드 유사도[edit | edit source]

Jaccard similarity

두 개의 집합 사이에서 유사도를 구하는 방식이다. 두 집합의 합집합과 교집합의 크기의 비율 값을 유사도로 나타내어 1에 가까울수록 두 집합이 유사한 원소를 가지고 있음을 알 수 있다. 아래의 식은 집합 A와 B 사이의 자카드 유사도를 나타낸 식이다.

자카드 유사도.png

참고 문헌[edit | edit source]

  • 출처: FoolsGold 알고리즘의 취약점 분석 및 해결 방안 모색(김호, 박시찬, 신홍직, 이정호, 임준환)