데이터는 어떠한 현상의 관측한 것입니다. 통계학에서는 관측치를 바탕으로 모집단(알고싶은 집단)의 특성을 유추하려고 합니다. 이때 관측치는 모집단에 대한 샘플이 됩니다. 


하지만, 불행히도 이러한 샘플은 현실에 대한 값만을 나타낼뿐 모집단의 성질을 설명해주지는 않습니다. 그래서 샘플을 통해 변수(Random Variable)의 성질을 알기위해 다양한 통계적 기법들이 동원되죠.


오늘은 이러한 통계적 기법들 중에서 KDE에 대해 알아볼까 합니다.


1. KDE


KDE란 Kernel Density Estimation의 줄임말입니다. 하지만 커널밀도추정라는 말은 너무 추상적인 말입니다. 커널은 무엇이며, 밀도는 또 무엇일까요?


KDE를 알기위해서는 각각의 개념에 대해 명확할 필요가 있습니다.




1-1. Kernel


우선 Kernel에 대해 알아봅시다. 사용하는 분야마다 Kernel을 달리 정의하기에 구체적으로 KDE에서 사용된 Kernel의 의미를 짚어보도록 하겠습니다.


수학적 의미로는 적분값이 1인 non-negative 함수이며, 모든 값이 대칭인 함수를 말합니다.




위의 수식을 만족시킨다면 Kernel함수는 다양하게 정의될 수 있습니다.


대표적으로 Gaussian, uniform Epanechnikov이 사용된다고 합니다.



다양한 종류의 kernel함수


그럼 이 Kernel은 어떻게 활용할 수 있을까요? Kernel 함수 안에 정의된 x는 Kernel의 세상으로 매핑이 되었다고 생각할 수 있습니다. 즉, Kernel은 K(x)에서 x의 값을 다른 차원으로 확장하는 역할을 하죠.


그렇다면 이제 Kernel에 대해서 어느정도 이해된듯 합니다.


1-2. Density


다음은 Density에 대해 알아보겠습니다. 앞서 데이터란 샘플이고 샘플은 현실에서의 값을 나타낸다고 얘기했습니다.


밀도 추정은 결국 이러한 데이터로부터 random variable에 대한 특성을 추정하는 방법을 일컫습니다.


만약 매일매일 한 가게의 손님 방문수를 관찰한다고 해봅시다. 하루하루 쌓이는 기록들을 모아보면, 손님 방문수에 대한 분포를 얻을 수 있을것입니다. (아마 히스토그램을 그리게 되겠지요.) 그렇게 되면 '손님 방문수'라는 변수에 대한 특성을 가늠할수 있게 될 것입니다. (히스토그램의 높낮이를 단순히 확률처럼 바라봐보자. 그렇다면 우리는 일별로 가장 높은 (혹은 낮은) 손님방문수를 알게될 것입니다.)




Density의 이같은 성질은 확률과 유사한면이 있습니다. 하지만 이 둘은 엄연히 다른 개념입니다.



다음은 이를 비교하기위한 그림입니다.


만약 \(\ f(x) \) 라는 확률밀도함수가 존재할때 \(\ a \)에서의 값은 \(\ f(a) \) 입니다. 이 값은 random variable x=a가 될 가능성을 의미합니다. 하지만 a에서의 확률은 \(\ \int_{a}^{a} f(x) dx \) 로 0이 됩니다. 확률은 확률밀도함수의 적분값을 갖기 때문입니다. (그래서 확률은 주로 CDF를 통해 구합니다.)


1-3. Histogram


앞선 예제처럼 Density를 파악하기 가장 쉬운 방법은 Histogram을 그리는것입니다. 단순히 빈도만을 시각화하는것이니 Density를 알기 위해서 이처럼 간단한 방법이 없는듯 합니다.


히스토그램


하지만, 히스토그램은 몇가지 단점이 존재합니다.


1. 각 bin(눈금) 경계에서 불연속합니다.

2. bin(눈금)의 크기에 따라 히스토그램의 모습이 서로 다릅니다.


이러한 문제의식에서 부터 KDE가 출발했습니다.



2. Deep...


위의 내용을 다시 정리하자면 KDE란 Kernel Function을 이용해 Density Estimation하는것을 말합니다. 즉, Kernel Function으로 확장한 차원에서의 Random Variable을 추정하는것을 의미합니다.


그렇다면 KDE의 수식은 어떻게 전개될까요?



x : random variable, xi : 관측치, K : 커널함수, h : bin width


수식만 보면 뭔가 엄청난 수식인것 같습니다. 하지만, 커널추정함수의 본질은 명확합니다.


1. h


h는 히스토그램의 bin 크기로 치환될 수 있습니다. 커널을 조정하기 위한 parameter로, h크기에 따라 커널의 첨도가 결정됩니다.


2. \(\ \frac{1}{nh} \sum_{i=1}^n K( \frac{ x - x_{i} }{h}  )\)


시그마는 커널함수가 적용된 관측치들의 합계를 전체 관측치 수로 나눠줍니다.


위 수식은 결국 커널로 매핑 후 분포의 평균을 구하는 간단한 결과로 요약될 수 있습니다.


이 결과를 시각화하면 다음처럼 다양한 빨간 분포들의 평균을 구할수 있게됩니다.


KDE visualization


KDE는 히스토그램에 비해 훨씬 부드러운 곡선의 형태를 제공합니다. h값에 따라 그래프의 첨도가 조금씩 달라질것이 예상됩니다. 그러므로 KDE에서의 이슈는 결국 h값의 선정에 있을것입니다.


참고


[1] http://darkpgmr.tistory.com/147?category=761008


[2] https://en.wikipedia.org/wiki/Kernel_(statistics)#Kernel_functions_in_common_use


[3] https://en.wikipedia.org/wiki/Kernel_density_estimation

티스토리 툴바