logo

유사도 함수 📂데이터과학

유사도 함수

도입

유사도 함수란 두 데이터가 얼마나 유사한지를 측정할 수 있도록 정의되는 함수들을 말한다. 그러한 목적에 걸맞게 잘 작동하려면 몇가지 수학적 조건을 만족하는 함수로 정의되어야한다. 의미적으로는 함숫값 $s(x, y)$가 크면 클수록 두 데이터가 서로 유사하다는 해석을 할 수 있어야한다.

정의

집합 $X$에 대해서 다음의 조건을 만족하는 $s : X \times X \to \mathbb{R}$을 유사도 함수similarity function라 한다.

  • 자기유사최대성질: $$ s(x, y) \le s(x, x) \quad \forall x, y \in X $$

  • 대칭성질symmetry: $$ s(x, y) = s(y, x) \quad \forall x, y \in X $$

설명

정의의 조건에서 자기유사최대성질이 유사도 함수의 핵심이라 할 수 있다. 이 성질로부터 큰 값을 갖는 두 대상이 서로 유사하다고 말할 수 있다. 유사도 함수의 치역을 아래와 같은 형태로 정규화하는 경우도 많다.

$$ s(x, y) \in [0, 1], \qquad s(x, y) \in [-1, 1] $$

KL 발산은 두 분포가 유사할 수록 값이 작아지므로 비유사도dissimilarity라 할 수 있다.

거리 함수와의 차이

두 대상이 얼마나 가까운지를 나타내는 기능을 하는 것으로는 거리 함수가 있는데, 굳이 유사도라는 개념이 왜 필요한지 생각해보자. 기본적으로 거리 함수 $d$는 그 이름답게 가까운 정도를 재기 때문에 두 대상이 가까울수록 값이 작아진다. 반면 유사도 $s$는 두 대상이 유사할수록 값이 커진다. 거리는 떨어진 정도를 재는 것이고, 유사도는 일치하는 정도를 재는 것이라, 보고 싶은 측정량의 방향이 서로 반대이다. 그래서 거리함수와 달리 유사도함수는 정규화되어있는 경우가 많다.

$$ 0 = d(x, x) \le d(x, y), \qquad s(x, y) \le s(x, x) $$

또다른 이유는 거리 함수가 요구하는 조건이 꽤 까다롭기 때문이다. 삼각부등식이나 항등공리는 "진짜 거리"가 되기 위한 강한 제약인데, 데이터를 다룰 때 흔히 쓰는 내적이나 코사인 유사도는 이 조건들을 만족하지 않는다. 유사도는 두 대상이 얼마나 가까운지보다 얼마나 관련되어 있는지, 같은 방향으로 정렬되어 있는지를 재며, 값이 음수가 되는 것도 허용하므로 거리보다 훨씬 자유롭게 정의할 수 있다.

한편 거리 $d$와 유사도 $s$는 방향만 반대인 "가까움"의 두 관점이므로, 거리 $d$가 커질수록 작아지는 단조감소 변환을 통해 서로 바꿔 볼 수도 있다. 예컨대 $s = -d$나 $s = e^{-d}$ 같은 변환이 그러하다. 다만 이렇게 얻은 유사도가 앞서 정의한 자기유사최대나 대칭성을 만족하는지는 변환에 따라 달라진다.

종류 \ 성질대칭성비음수삼각부등식항등자기 자신
거리$0$ (최소)
유사거리$0$ (최소)
유사도최대
발산$0$ (최소)
  • 대칭성: $f(x, y) = f(y, x)$
  • 비음수: $f(x, y) \ge 0$
  • 삼각부등식: $f(x, z) \le f(x, y) + f(y, z)$
  • 항등: $f(x, y) = 0 \implies x = y$
  • 자기 자신: $f(x, x)$

종류

대표적인 유사도, 비유사도 함수로는 다음과 같은 것들이 있다.

  • 유사도

    • 내적inner product: 내적의 정의 자체는 유사도와 관련이 없지만, 유사도로 쓰기에 적절하다. 두 벡터가 같은 방향으로 크게 정렬될수록 값이 커진다. 크기를 무시하면 아래의 코사인 유사도가 된다.

    • 코사인 유사도cosine similarity: 두 벡터 사이 각의 코사인 값으로, 정규화된 내적이라 할 수 있다. 벡터의 크기는 무시하고 방향이 얼마나 정렬되어 있는지만 측정한다. $$ s(\mathbf{x}, \mathbf{y}) = \frac{\mathbf{x} \cdot \mathbf{y}}{\left\lVert \mathbf{x} \right\rVert \left\lVert \mathbf{y} \right\rVert} $$

  • 비유사도

    • 쿨백-라이블러 발산Kullback–Leibler divergence: 두 확률분포가 서로 얼마나 다른지를 재는 비유사도로, 두 분포가 유사할수록 값이 작아진다.