Mean Shift 개요

  • Mean Shift(평균 이동)는 K-Means와 유사하게 중심을 군집의 중심을 지속적으로 움직이면서 클러스터링을 수행한다. 다만, Mean Shift는 중심을 데이터가 모여 있는 밀도가 가장 높은 곳으로 이동시킨다.
  • 데이터의 분포도를 이용해 중심점을 찾는데, 확률 밀도 함수를 이용하고 이를 찾기 위해서 KDE(Kernel Density Estimation)을 이용한다.
  • K-Means와 달리 군집의 개수를 지정할 필요가 없고, 비정형 데이터에는 한계가 존재하여 이러한 경우 DBSCAN을 이용한다.

Mean Shift 방법

  • 특정 데이터에서 반경 내의 데이터 분포 확률 밀도가 가장 높은 곳으로 이동하기 위해 주변 데이터와의 거리 값을 KDE 함수 값으로 입력한 뒤 그 반환 값을 현재 위치에서 업데이트하면서 이동하는 방식을 취한다.

알고리즘

  1. 특정 점 에서 반경 (bandwidth)를 갖는 윈도우(커널)을 설정한다.
  2. 윈도우 안의 모든 점들의 가중평균(Weighted Mean) 을 계산한다.
  3. 현재 점을 그 평균값으로 이동한다. 즉, Mean shift 벡터를 따라 점을 이동함.
  4. 밀도 최대 지점에 도달할 때까지 반복한다. (위치가 업데이트 되지 않을 때 까지 반복)
  5. 위 과정을 모든 개별 점들에 대해 적용함.

커널 함수 (Kernal Function)

  • 수학적으로 커널함수는 원점을 중심으로 대칭이면서 적분 값이 1인 non-Negative 함수로 정의된다.
  • 가우시안(Gaussian) Epanechnikov, uniform 함수 등이 대표적인 커널 함수.
    • Uniform 커널: 윈도우 안 모든 점의 가중치가 동일 → 일반 평균
    • Gaussian 커널: 중심에서 가까운 점일수록 큰 가중치, 멀수록 작은 가중치→ 가중 평균

밀도 추정 (Kernel Density Estimation, KDE)

  • KDE는 커널(kernel) 함수를 통해 어떤 변수의 확률 밀도 함수를 추정하는 대표적인 방법.
  • 관측된 데이터 각각에 커널 함수를 적용한 값을 모두 더한 뒤에 데이터 건수로 나눠 확률 밀도 함수를 추정.
  • 아래 그림에서 초록 선은 개별 관측 데이터에 가우시안 커널 함수를 적용한 것이고, 파란 선은 적용 값을 모두 더한 KDE 결과이다.

  • 데이터 와 커널 함수 , 대역폭 가 주어졌을 때, KDE 추정식은 아래와 같다.
  • : 데이터 차원
  • : 커널 함수 (일반적으로 가우시안)
  • : 대역폭
    • 크면 멀리 있는 점도 큰 가중치 → 넓게 스무딩
    • 작으면 가까운 점만 의미 있는 가중치 → 국소적 이동
    • 즉, 데이터와의 거리 h로 나눠서 스케일링.

Gaussian 커널에서 h의 동작

Gaussian kernel:

  • 는 사실상 표준편차(σ) 역할.
  • 가 커질수록 거리값이 작아짐 → 거리값 대비 큰 가중치 → 멀리 있는 점들도 큰 가중치

가중 평균 계산

  • 데이터를 라 하고 각 데이터의 가중치라 할 때, 가중평균 식은 아래와 같다.

Mean Shift 벡터 및 업데이트

Mean Shift 벡터

업데이트


참고