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. [참고사항] k-최근접 이웃 (KNN, K-Nearest Neighbors)
ㅇ 주어진 입력에 대해,
- 가장 가까운 k개의 데이터 점(이웃)를 찾고, (주로, 거리 관점으로)
. 여기서, 'k'는, 사용자가 지정하는 하이퍼파라미터 임
- 해당 값들을 기반으로 작업 수행 (추정, 분류, 군집화 등)
. 이웃들의 정보를 바탕으로, 새로운 데이터 점의 클래스 또는 값 등을 예측 가능
ㅇ k 값 선택에 따라,
- k 값이 너무 작으면 : 잡음에 민감해질 수 있음
- k 값이 너무 크면 : 모델이 부드러워지지만 세부적인 특징을 놓칠 가능성 있음
- 홀수 k 값을 사용하면 : 분류에서 동점(타이)을 방지할 수 있음
ㅇ 특징
- 단순하고 직관적임
- 비모수적 방법으로, 데이터 확률분포에 대한 가정을 거의 하지 않음
- K 값 선택에 따라 성능이 달라질 수 있음
- 계산 비용이 높을 수 있으며, 특히 데이터 양이 많을수록 높아짐
- 분류와 회귀 모두에서 사용 가능