1. 유사도, 닮음 (Similarity) 이란?
ㅇ 기하학에서, 모양이 같지만 크기는 다를 수 있는 관계를 설명 ☞ 합동 닮음 비교 참조
- 서로 대응하는 길이의 비율이 일정하고, 대응하는 각이 모두 같음 : 닮은꼴 (Similar Figure)
ㅇ 기계학습에서, 두 데이터가 얼마나 같은지(닮았는지)를 나타내는 척도
- 유사도가 높다는 것은, 피처(특징) 값이 비슷하다는 것임
※ [참고]
- `확률변수/신호/함수/현상 (변량)`에서의 닮음 ☞ 상관성(유사성) 참조
- `행렬`에서의 닮음 ☞ 닮음 행렬, 닮음 변환 참조
- 한편, `비교` 개념의 종합화/일반화는, ☞ 비교 (같음/닮음/다름) 참조
2. [기계학습] 데이터 유사도의 척도 구분
ㅇ 그 적용 범위와 계산 방식에 따라 여러 가지 방식으로 분류 가능
- 크게, 기하학적 거리 기반, 벡터공간 기반, 집합 기반, 문자열 기반 등으로 구분 가능
ㅇ 기하학적 거리 기반
- 유클리드 거리 (Euclidean Distance) : 직선 거리
- 맨해튼 거리 (Manhattan Distance) : 수평, 수직 거리 합
- 민코프스키 거리 (Minkowski Distance) : 유클리드 거리와 맨해튼 거리의 일반화된 형태
- 체비셰프 거리 (Chebyshev Distance) : 두 점 간의 축 방향으로 가장 큰 차이
ㅇ 벡터공간 기반
- 벡터 간 유사도 : 벡터 공간 내 두 벡터 사이의 거리 척도
- 코사인 유사도 : 두 벡터 간의 사잇각으로 유사도를 측정
ㅇ 집합 기반
- 자카드 유사도 (Jaccard Similarity) : 벡터의 교집합과 합집합 비율을 이용한 유사도
. 공통된 것들이 많을수록 유사하다고 판단
ㅇ 확률 기반
- 평균제곱오차 : 개별 관측값들이 중심에서 떨어진 정도를 나타내는 척도
- 피어슨 유사도 : 피어슨 상관계수에 의해 유사도를 측정
ㅇ 문자열 기반
- 레벤슈타인 거리 (Levenshtein Distance) : 최소 편집 횟수
- 다음-슈프롤 유사도 (Damerau-Levenshtein Distance) : 레벤슈타인 거리와 인접 문자 교환을
고려한 편집 거리
- Jaro-Winkler 유사도 : 문자열 간의 유사성 점수를 계산
3. [기계학습] 거리 기반의 유사도 척도
ㅇ 주로, 거리 (distance) 개념에 의한 여러가지 계산 방법들이 개발되어짐
ㅇ 例) 유사도 척도를, 거리로써 일반화한 수학적 개념 : 민코스키 거리 (Minkowski distance)
[# d(X,Y) = \sqrt[p]{\sum^{m}_{i=1} |x_i-y_i|^p}
= \left(\sum^{m}_{i=1} |x_i-y_i|^p\right)^{1/p} #]
- p = 1 : 맨해튼 거리 (L1 거리)
. 격자 기반의 경로(例,도시의 도로)에서 두 점 간 거리 표현 (例,x방향 2,y방향 3,총 5)
- p = 2 : 유클리드 거리 (L2 거리)
- p = ∞ : 최대 거리 (Chebyshev distance)
※ 한편, `거리`가 아닌 `크기`에 대해, 수학적으로 일반화된 개념은, ☞ 노름 (Norm) 참조
4. [기계학습] 단어 유사도
ㅇ 단어 사이의 유사도 : 통상, 공통 글자의 수와 단어의 길이로 판단
ㅇ 자카드 거리 : 두 문자열 간에 공통으로 포함된 글자가 많을수록 유사도 높음
- 완전 일치 : 1, 공통 글자 없음 : 0
. 단, 같은 글자들은 1글자로 계산됨
[# J(A,B) = \frac{|A \cap B|}{|A \cup B|} = \frac{|A \cap B|}{|A|+|B|-|A \cap B|} #]
ㅇ (편집중)