커널 밀도 추정(Kernel Density Estimation, KDE)은 통계학에서 확률 밀도 추정을 위해 커널 평활화(kernel smoothing)를 적용한 비모수적(non-parametric) 방법이다. 유한한 개수의 데이터 샘플을 기반으로 확률 변수의 확률 밀도 함수(Probability Density Function, PDF)를 추정하는 기법으로, 데이터에 대한 특정 분포 가정 없이 관측된 데이터만으로 연속적인 밀도 함수를 도출한다.
개요 및 역사
커널 밀도 추정은 히스토그램(histogram) 기반 밀도 추정의 한계를 극복하기 위해 개발되었다. 히스토그램은 구간(bin)의 경계에서 불연속성이 발생하고, 구간의 크기 및 시작 위치에 따라 결과가 달라지는 단점이 있다. KDE는 각 데이터 포인트를 중심으로 커널 함수(kernel function)를 배치하고 이를 모두 합산하여 부드럽고 연속적인 밀도 곡선을 생성함으로써 이러한 문제를 해결한다.
신호 처리 및 계량경제학 분야에서는 에마누엘 파르젠(Emanuel Parzen)과 머레이 로젠블라트(Murray Rosenblatt)의 이름을 따서 파르젠-로젠블라트 창(Parzen-Rosenblatt window)법이라고도 부른다.
수학적 정의
n개의 독립적이고 동일하게 분포된 표본 데이터 $X_1, X_2, ..., X_n$이 주어졌을 때, 점 x에서의 커널 밀도 추정량 $\hat{f}_h(x)$는 다음과 같이 정의된다.
$$ \hat{f}h(x) = \frac{1}{n} \sum{i=1}^{n} K_h(x - X_i) = \frac{1}{nh} \sum_{i=1}^{n} K\left(\frac{x - X_i}{h}\right) $$
여기서 $K$는 커널 함수, $h$는 대역폭(bandwidth)이라고 불리는 평활화 매개변수이다. 커널 함수 $K$는 일반적으로 원점을 중심으로 대칭이고 적분값이 1이며 음수가 아닌 값을 가지는 확률 밀도 함수의 성질을 만족한다.
커널 함수의 종류
대표적인 커널 함수로는 다음과 같은 것들이 있다.
- 가우시안 커널(Gaussian kernel): $K(u) = \frac{1}{\sqrt{2\pi}} e^{-\frac{1}{2}u^2}$. 무한 지지를 가지며 매우 매끄러운 추정 결과를 제공한다. 계산의 편의성 때문에 가장 널리 사용된다.
- 에파네치니코프 커널(Epanechnikov kernel): $K(u) = \frac{3}{4}(1 - u^2)$ (단, $|u| \le 1$). 이론적으로 평균제곱오차 기준에서 최적의 점근적 효율을 가지는 것으로 알려져 있다.
- 직사각형 커널(Rectangular kernel): $K(u) = \frac{1}{2}$ (단, $|u| \le 1$). 가장 단순한 형태이나 추정된 밀도 곡선이 매끄럽지 않다.
- 삼각형 커널(Triangular kernel), 코사인 커널(Cosine kernel) 등도 사용된다.
커널 함수의 선택은 추정 결과에 영향을 미치지만, 일반적으로 대역폭 $h$의 선택이 결과에 훨씬 더 큰 영향을 미친다.
대역폭의 중요성
대역폭 $h$는 각 커널의 폭, 즉 평활화의 정도를 결정하는 가장 중요한 매개변수이다.
- $h$가 너무 작으면: 각 데이터 포인트에 과도하게 적합되어 추정 곡선이 들쭉날쭉해지고 분산이 커진다(과적합, under-smoothing).
- $h$가 너무 크면: 데이터의 세부 구조가 지나치게 평활화되어 중요한 특징(예: 다봉 분포의 봉우리)이 사라진다(과소적합, over-smoothing).
최적의 대역폭을 선택하기 위한 방법으로는 다음과 같은 것들이 있다.
- 규칙 기반 방법: 스코트 규칙(Scott's rule), 실버먼의 규칙(Silverman's rule of thumb) 등. 데이터가 정규분포를 따른다고 가정하고 표본 크기와 표준편차를 기반으로 대역폭을 계산한다. 계산이 빠르지만 데이터가 정규분포에서 크게 벗어난 경우 성능이 저하될 수 있다.
- 교차 검증 기반 방법: 최대우도교차검증, 최소제곱교차검증 등. 데이터 자체를 사용하여 예측 오차를 최소화하는 대역폭을 선택한다. 규칙 기반 방법보다 일반적으로 더 정확하지만 계산 비용이 높다.
응용 분야
커널 밀도 추정은 다양한 분야에서 활용된다.
- 데이터 시각화: 히스토그램의 대안으로 데이터 분포를 부드러운 곡선으로 표현하여 분포의 형태, 봉우리(최빈값)의 개수와 위치 등을 직관적으로 파악할 수 있다.
- 군집 분석(Clustering): 밀도 기반 군집 알고리즘(예: DBSCAN, Mean Shift)의 기반이 된다. 데이터 공간에서 밀도가 높은 영역을 군집으로 식별한다.
- 이상치 탐지(Anomaly Detection): 추정된 밀도 함수에서 낮은 밀도 값을 가지는 영역의 데이터 포인트를 이상치로 간주하여 탐지한다.
- 나이브 베이즈 분류(Naive Bayes Classification): 클래스 조건부 확률 밀도를 추정하여 분류기의 예측 정확도를 향상시키는 데 사용된다.
- 지리정보시스템(GIS): 범죄 발생 위치, 교통사고 지점 등의 공간 데이터에서 핫스팟(hotspot) 영역을 식별하는 데 활용된다.
장점과 한계
장점으로는 데이터의 분포 형태에 대한 사전 가정이 거의 필요하지 않아 유연하게 밀도를 추정할 수 있다는 점, 직관적이고 시각화가 용이하다는 점이 있다.
한계로는 대역폭 선택에 결과가 매우 민감하다는 점, 데이터의 크기가 클수록 계산 비용이 증가한다는 점, 그리고 차원의 저주(curse of dimensionality)로 인해 고차원 데이터(일반적으로 3차원 이상)에서는 신뢰할 수 있는 추정이 어려워진다는 점이 있다.
소프트웨어 구현
Python에서는 scikit-learn의 KernelDensity 클래스와 SciPy의 gaussian_kde 모듈을 통해 구현할 수 있다. R 언어에서는 기본 패키지의 density() 함수가 널리 사용되며, MATLAB에서도 kde 함수를 제공한다.