Recent Posts
Recent Comments
Archives
Today
Total
05-21 03:25
관리 메뉴

이것저것 잡동사니

[수학] 커널 밀도 추정(Kernel Density Estimation, KDE) 본문

수학

[수학] 커널 밀도 추정(Kernel Density Estimation, KDE)

Park Siyoung 2022. 7. 21. 20:03
반응형

    커널밀도추정(KDE)은 이산적인 데이터를 사용해 연속적인 밀도함수(density function)를 추정하는 것이다. 간단하게는 히스토그램을 매끄러운 곡선으로 근사한 그래프를 만드는 것이다. 신호 처리나 경제 분야에서는 Parzen-Rosenblatt window method라고 부르기도 한다.
    히스토그램과 동일한 값(데이터) 분포에서 랜덤한 값을 뽑아냈을 때, 특정 값이 나올 확률을 추정한 것이다. 히스토그램과 형태는 비슷하지만 \(y\)축 스케일이 다른 것을 확인할 수 있다. (확률은 0~1 사이의 값이기 때문)

    이산적인 데이터로 밀도함수를 추정하는 방법에는 parametric 방법과 non-parametric 방법이 있다.
    Parametric 밀도 추정 방법밀도 함수의 기본적인 틀이 이미 정해진 상태에서 몇 개의 파라미터를 추정해 대입하는 방식이다. 예를 들어, 어떤 데이터 분포가 정규분포를 따른다고 하자. 정규분포는 다음과 같이 일반적인 정규분포 식에서 두 개의 파라미터인 평균(\(\mu\))과 분산(\(\sigma^2\))의 값에 따라 그 모양이 정해진다. 그러므로 데이터의 평균과 분산을 구하면 밀도 함수를 추정할 수 있다.
$$N(\mu,\sigma^2)=\frac{1}{\sigma\sqrt{2\pi}}\exp^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}$$

각기 다른 평균과 분산을 갖는 정규분포 그래프들

    하지만 복잡한 현실세계에서 이런 식으로 편리하게 모델이 주어지는 경우는 흔치 않다. 모델이 없는 경우에 사용하는 밀도 추정 방법이 non-parametric 방법이다. 히스토그램은 가장 간단한 non-parametric 밀도 추정 방법이다. 하지만 불연속적이고 구간의 너비에 따라 그래프의 형태가 달라진다는 단점이 있다. 이를 커널 함수를 사용한 밀도 추정(커널밀도추정; KDE)으로 개선할 수 있다.
    커널 함수(kernel function)란, 다음 두 조건을 만족하는 non-negative, real and integrable function이다.
$$\begin{align}\text{Normalization : }&\int_{-\infty}^{\infty}K(x)\,dx=1 \\ \text{Symmetry : }&K(-x)=K(x)\end{align}$$
    첫 번째 조건은 커널밀도추정의 결과가 확률밀도함수가 되도록 (최종 확률밀도함수 그래프의 밑넓이를 1으로 만들기 쉽도록)하기 위함이고 두 번째 조건은 밀도함수의 평균값과 데이터의 평균값을 일치시키기 위함이다. 주로 정규분포함수를 커널 함수로 사용한다.

다양한 커널 함수

    \(K\)가 커널 함수이면, 임의의 \(h>0\)에 대하여 다음의 \(K_h\)도 커널 함수다.
$$K_h(x)=\frac{1}{h}K\left(\frac{x}{h}\right)$$
     \(h\)는 bandwidth라 불리는 파라미터이며 \(h\)값이 작을 수록 커널 함수의 분산이 작아진다. 즉, 커널 함수가 뾰족해진다. Smoothing parameter라고도 불리는데, \(h\)값이 클 수록 추정된 밀도함수가 완만해지기 때문이다. 아래 그래프에서 주황색 그래프가 낮은 \(h\)값을 사용한 결과고 파란색 그래프가 높은 \(h\)값을 사용한 결과다.

bandwidth에 따른 커널밀도추정 결과

    커널 함수로 정규분포함수를 사용 할 경우, 최적의 \(h\)값은 다음과 같다(Mean Integrated Squared Error(MISE)가 최소가 되는 값이라고 한다). 하지만 모든 경우에 대한 최적의 값은 아니므로 상황에 따라 여러 값을 시험해보는 것이 좋다.
$$h=\left(\frac{4\hat{\sigma}^5}{3n}\right)^\frac{1}{5}\approx 1.06\hat{\sigma}n^{-1/5}$$
    커널밀도추정(Kernel Density Estimation, KDE)은 커널함수를 사용해 다음과 같이 확률밀도함수를 추정한다. \(x\)를 확률변수(random variable), \(x_1, x_2, \ldots, x_n\)을 데이터, \(K\)를 커널 함수라고 하면,
$$\hat{f_h}(x)=\frac{1}{n}\sum_{i=1}^nK_h(x-x_i)=\frac{1}{nh}\sum_{i=1}^{n}K\left(\frac{x-x_i}{h}\right)$$
  데이터의 개수\(n\)을 나누는 이유는 밀도함수 그래프의 밑넓이를 1으로 만들어주기 위함이다.


예시

    다음과 같이 6개의 데이터가 있다고 하자.
$$\left\{-2.1, -1.3, -0.4, 1.9, 5.1, 6.2\right\}$$
    커널 함수는 \(\mu=0, \,\sigma^2=2.25\)인 정규분포함수라고 하면 커널밀도추정 결과는 다음과 같다.

    각 데이터를 중심으로 하는 커널함수(빨간색 점선)을 모두 더하면 밑넓이가 1인 커널함수 6개(\(n\)개)를 더했으므로 밑넓이가 6(\(n\))인 함수가 만들어진다. 이를 데이터의 개수(\(n\))로 나누어 밑넓이를 1으로 만든 것(파란색 실선)이다.

반응형
Comments