본문 바로가기
2/[ Python ]

Kernel Density Estimation

by Kieran_Han 2021. 11. 3.

Probability Density Functiuon (확률밀도함수, pdf)

확률밀도함수는 확률변수의 분포를 나타내는 함수로 보통 확률변수가 연속형일 때를 지칭한다.

확률밀도함수는 아래 두 가지 조건을 만족해야 한다.

1. 모든 실수값 x에 대해 f(x) ≥ 0

2. ∫f(x)dx = 1

위 조건에서 알 수 있듯이 확률밀도함수는 확률이 아니며, 확률밀도함수를 적분해야 확률을 알 수 있다.

 

Probability Density (확률밀도)

확률밀도는 X = x0일 때 확률밀도함수(f(x0))값을 의미한다. 따라서 확률밀도함수는 분포의 형태를 어떻게 정의하는지에 따라 1 이상의 값이 나올 수 있다. 

연속형 확률변수 X를 정의했을 때 P(X = x0)은 연속 구간에서는 취할 수 있는 무수히 많은 경우의 수가 있으므로 P(X=x0)=0이다.

P(a ≤ X ≤ b)은 확률변수 X의 범위가 a와 b사이에서 정의되면 P(a ≤ X ≤ b) = 1을 만족해야 한다.

두 가지 정의에 불일치하는 부분이 있다. P(X = x0) = 0으로 정의하면  X의 범위 a와 b 사이에서 P(X = x0)은 무수히 많이 더해도 1을 만족하지 않는다.

P(X = x0) = ϵ, 즉 0에 아주 근접한 매우 작은 값으로 정의하면 연속 구간에서는 취할 수 있는 무수히 많은 경우의 수가 있으므로 P(a ≤ X ≤ b) = ∞가 된다.

 

따라서 P(X = x0)은 위의 정의를 그대로 생각해보면 0은 아니지만 0보다 작은 값도 아닌 값이 된다.

 

확률변수 X의 범위가 0부터 1까지일 경우 P(0 ≤ X ≤ 1) = 1이다. 구간을 절반으로 나누면 P(0 ≤ X ≤ 0.5) = 0.5이다. 구간을 다시 절반으로 나누면 P(0 ≤ X ≤ 0.25) = 0.25이다.

이러한 과정을 계속 반복해서 구간을 잘게 쪼개면 P(0 ≤ X ≤ d) = d가 성립하며, P(x0 ≤ X ≤ x0 + d) = d이다.

즉, P(X = x0) = lim(d→0)P(x0 ≤ X ≤ x0 + d)이며, 식에 따라서 P(X = x0) = 0이 된다.

이 정의도 문제가 있는데 정의 그대로 P(X = x0) = 0이면 a의 값에 상관없이 P(0 ≤ X ≤ a) = 0이 된다.

이 문제를 해결하기 위해서 P(x0 ≤ X ≤ x0 + d) == d에서 양변에 d를 나눠서 확률밀도를 재정의하면,

f(x0) = P(X = x0) = lim(d→0)(P(x0 ≤ X ≤ x0 + d))/d

lim(d→0)(P(x0 ≤ X ≤ x0 + d))/d = lim(d→0)d/d = lim(d→0)1 = 1을 만족한다.

 

Density Estimation의 의미

통계학에서 Density Estimation은 보통 분포(확률밀도함수)의 형태를 가정하고 데이터를 이용해서 모수를 추정하는 방식(Parametric Denstiy Estimation)이다.

반면에 Kernel Density Estimation에서는 분포의 형태를 가정하지 않고 관찰된 데이터만을 이용해서 분포를 추정(Non-parametric Density Estimation)한다. 

 

Kernel Density의 정의

$ = _{i = 1}^nw()$

h = bin width or smoothing parameter or whindow width

간격을 좁게 하면 undersmooth되고, 넓게 하면 oversmooth된다.

w: weight function( = K(·) : Kernel Function) w(t)는 probability density의 성질을 만족해야 하며, density의 형태를 원점에서 대칭으로 정의한다.

 

Kernerl Function의 종류

Kernel의 형태는 정의하기에 따라 여러 종류가 있다.

Kernel 함수의 형태에 따라 추정되는 밀도의 형태가 조금씩 바뀐다.

다만 전반적인 추정된 밀도의 형태는 거의 유사하다 (MISE를 기준으로 Kernel별 점근적 상대 효율성을 비교해보면 Epanechnikov Kernel이 1로 가장 좋지만 다른 Kernel Function과 큰 차이를 보이지 않는다.) Kernel Function을 정하는 것보다는 Bin Width를 정하는 것이 더 중요하다.