4.1 유사도와 거리

"유사도와 거리"에서는 유사도와 거리(비유사도)에 대한 개념을 개략적으로 살펴봅니다.4.2 "코사인 유사도"에서는 내적 공간에서의 두 벡터 간 사잇각인 코사인 값을 사용하여 유사도를 계산하는 방법에 대해 살펴봅니다.4.3 "피어슨 상관계수와 유사도"에서는 두 벡터의 공분산 값을 각 벡터의 표준편차의 곱으로 나눠서 표준화한 피어슨 상관계수를 사용하여 유사도를 계산하는 방법에 대해 살펴봅니다.4.4 "유클리드 거리와 유사도"에서는 N차원의 공간에서 두 데이터 포인트 간의 거리를 나타내는 확장 유클리드 거리를 사용하여 유사도를 계산하는 방법에 대해 살펴봅니다.4.5 "이진 속성과 유사도"에서는 두 집합 사이의 유사도를 측정하는 방법 중 하나인 확장 자카드 계수를 사용하여 이진 데이터의 유사도를 계산하는 방법에 대해 살펴봅니다.

이번 장에서 사용하는 표기법은 다음과 같습니다.

  • ${{\bf{x}}_a}$, ${{\bf{x}}_b}$ 임의의 벡터 ${\bf{x}}_a^{\rm T}{{\bf{x}}_b}$, ${{\bf{x}}_a} = ({a_1},{a_2} \cdots {a_n})$,
  • ${{\bf{x}}_b} = ({b_1},{b_2}, \cdots ,{b_n})$ ${\bf{x}}_a^{\rm T}{{\bf{x}}_b}$ ${{\bf{x}}_a}$와 ${{\bf{x}}_b}$의 내적

두 데이터 포인트 간 비슷한 정도를 나타내는 유사도(Similarity)는 거리(Distance)와 밀접한 관계가 있습니다. 두 데이터가 비슷하면 할수록 거리가 0에 가깝게 작아진다고 표현할 수 있습니다. 하지만 표현과 달리 많은 유사도 함수가 거리 함수가 가지는 삼각 부등식의 성질을 가지고 있지는 않기 때문에 모든 유사도 함수를 정확한 거리 함수로 사용할 수는 없습니다. 유사도에서 비유사도는 거리로 혼용되어 사용되는 경우가 많지만, 수학적인 성질이 다르기 때문에 맥락에 따라 그 의미를 살펴보는 것이 좋습니다.

Tip:

유사도 측도(Similarity Measure)는 다차원 공간에서의 두 데이터 포인트 간의 유사도를 측정하는 방법입니다. 데이터 포인트는 특징 공간(Feature Space) 속의 위치를 나타내는 개념으로 N차원의 특징 벡터(Feature Vector)로 표현되며 추천 영역 이외에도 분류나 군집 등 다양한 데이터 분석 분야에서도 두 데이터 포인트 간의 특징 정보를 바탕으로 근접성(Proximity)이나 서로 간의 떨어진 정도( Distance)의 크기를 측정합니다. 여기에서 근접성은 가깝다는 의미로 유사도나 비유사도를 포괄하는 의미로 사용되기도 합니다.

4.1.1 유사도란

유사도는 대상 사용자와 유사한 성향을 가진 사용자가 선호하는 아이템, 또는 대상 사용자가 선호했던 아이템과 유사한 성향을 가진 아이템의 선정이 필요한 근접 이웃 기반의 협업 필터링 추천 기법에서 대표적으로 사용됩니다. 이는 서로 다른 두 사용자 혹은 아이템 간의 유사성을 측정하여 유사도로 나타내는 것입니다. 여기에서 근접성은 가깝다는 의미로 유사도나 비유사도를 포괄하는 의미로 사용되기도 합니다.

유사도는 다음과 같이 정의됩니다.

$$ \begin{flalign} x,y \in X,{\rm{ }}\mathrm{sim} :X \times X \to \mathbb{R} \end{flalign} $$

다음 네 가지 조건을 만족하면 $\mathrm{sim} $을 유사도 혹은 유사도 함수라고 합니다.

  • (조건 1) $0 \le \mathrm{sim} (x,y) \le 1$ (Non-negativity)유사도는 0보다 크거나 같고 1보다 작거나 같은 양의 값입니다.

  • (조건 2) $\mathrm{sim} (x,y) = \mathrm{sim} (y,x)$ (Symmetric)유사도는 대칭성(symmetric)을 만족해야 합니다. 즉, 교환 법칙이 성립합니다.

  • (조건 3) $x = y \to \mathrm{sim} (x,y) = 1$ (Identity of > Indiscernibles) $x$와 $y$가 같다면 유사도는 1입니다.

  • (조건 4) $\mathrm{sim} (x,y) \le \mathrm{sim} (x,x)$ (Maximality) $x$와 $y$간의 유사도는 $x$와 $x$간의 유사도보다 작거나 같습니다.

4.1.1 비유사도(거리)란

유사도가 두 개체 간의 같은 정도를 나타낸다면 비유사도는 다른 정도를 나타냅니다. 비유사도는 두 데이터의 떨어진 정도를 나타내는 거리(Distance/Metric)를 통해 측정할 수 있습니다. 두 데이터 간의 특징 정보가 비슷하면 할수록 유사도는 1에 가깝게 커지고, 비유사도는 0에 가깝게 작아지는 점에서 거리는 유사성을 직접적으로 나타내지는 않지만, 유사도가 클수록 거리가 가깝고 거리가 클수록 먼 유사도와 서로 반대되는 개념입니다.

거리는 다음과 같이 정의됩니다.

$$ \begin{flalign} x,y,z \in X,{\rm{ }}{\mathop{\rm dist}\nolimits} :X \times X \to \mathbb{R} \end{flalign} $$

다음 세 가지 조건을 만족하면 ${\mathop{\rm dist}\nolimits} $를 비유사도 혹은 비유사도 함수라고 합니다.

  • (조건 1) $0 \le {\mathop{\rm dist}\nolimits} (x,y) \le 1$ (Non-negativity)비유사도는 0보다 크거나 같고 1보다 작거나 같은 양의 값입니다.

  • (조건 2) ${\mathop{\rm dist}\nolimits} (x,y) = {\mathop{\rm dist}\nolimits} (y,x)$ (Symmetric)비유사도는 대칭성(symmetric)을 만족해야 합니다. 즉, 교환 법칙이 성립합니다.

  • (조건 3) $x = y \to {\mathop{\rm dist}\nolimits} (x,y) = 0$ (Identity of Indiscernibles) $x$와 $y$가 같다면 거리는 0입니다.

또한 이렇게 정의되는 함수 ${\mathop{\rm dist}\nolimits} $가 다음 세 가지 조건을 더 만족하면 이를 거리(Metric) 혹은 거리 함수라고 합니다.

  • (조건 4) $0 \le {\mathop{\rm dist}\nolimits} (x,y)$ (Non-negativity)거리는 0 또는 0보다 큰 양의 값입니다.

  • (조건 5) $x = y \leftrightarrow {\mathop{\rm dist}\nolimits} (x,y) = 0$ (Reflexivity) $x$와 $y$가 같다면 거리는 0이고, 거리가 0이면 ${{\bf{x}}_a}$와 ${{\bf{x}}_b}$가 같습니다.

  • (조건 6) ${\mathop{\rm dist}\nolimits} (x,z) \le {\mathop{\rm dist}\nolimits} (x,y) + {\mathop{\rm dist}\nolimits} (y,z)$ (Triangular Inequality)거리는 다른 한 점 $z$를 경유하는 거리의 합보다 작거나 같습니다.

Tip:

삼각 부등식(Triangular Inequality)은 "삼각형에서 두 선분의 합은 항상 대각선 보다 크거나 같다"입니다.

4.1.3 거리와 유사도

이처럼 비유사도(거리)는 유사도의 역개념(Inverse)으로 상호 변환이 가능합니다. 비유사도는 유사도 최댓값인 1에서 측정된 유사도를 뺀 값으로 구할 수 있고, 유사도는 측정된 거리에 1을 더한 후 역수를 취하여 구할 수 있습니다. 거리에 1을 더해 주는 이유는 거리가 0일 때 유사도 최댓값인 1이 되도록 하기 위해서입니다.

유사도로 비유사도(거리)를 구하는 방법은 다음과 같이 정의됩니다.

$$ \begin{flalign} {\mathop{\rm dist}\nolimits} (x,y) = 1 - \mathrm{sim} (x,y) \end{flalign} $$

거리로 유사도를 구하는 방법은 다음과 같이 정의됩니다.

$$ \begin{flalign} \mathrm{sim} (x,y) = \frac{1}{{1 + {\mathop{\rm dist}\nolimits} (x,y)}} \end{flalign} $$

Tip:

거리( $d$ )의 유사도( $s$ ) 변환은 $d = 1 - s$, $d = \frac{{1 - s}}{s}$, $d = \sqrt {1 - s} $, $d = \sqrt {2(1 - {s^2})} $등의 다양한 방법이 있지만 여기에서는 자세하게 다루지 않습니다.

한글:1643 영어:1014 숫자:68

추천 시스템: 워크북

Comments

Do you have a problem, want to share feedback, or discuss further ideas? Feel free to leave a comment here! Please follow Rust's code of conduct. This comment thread directly maps to a discussion on GitHub, so you can also comment there if you prefer.

Instead of authenticating the giscus application, you can also comment directly on GitHub.