본문 바로가기

딥러닝기초

[Density Estimation]파젠창(KDE)으로 파라미터 추정

  • Parametic Methods(단순한 분포를 가정하고 유한한 파라미터를 구하자)
    • ML(Maximum Likelihood) Estimation
    • MAP(Maximum A Posteriori) Estimation
  • Non-Parametic Methods(복잡한 분포를 가정하자)
    • 파젠창(Parzen Window)
    • K-Nearest Neighbor Estimation

 

 

데이터의 분포가 유한한 파라미터로 가정할 수 없는 경우를 다뤄본다.

어떠한 사전 정보나 지식 없이 순수하게 관측된 데이터만으로 확률밀도함수를 추정한다.

 

 

 

Histogram

 

시험을 봐서 성적을 [0, 100]까지 나타낸다고 하자.

이때 점수 분포를 5점마다, 10점마다 나타낼 수 있겠다.

 

 

그러나

그렇게 되면 bin의 크기마다 데이터의 분포가 달라지게 된다.

또한 bin의 경계마다 불연속적이게 된다.


 

Kernel Density Estimation

 

파젠창은 곧 Kernel Density Estimation이라고도 불린다.

히스토그램에서의 문제점을 어떻게 해소했을까?

 

여기서는 커널함수를 사용한다.

커널함수란 원점 대칭이면서 적분값이 1인 함수로 정의되며 가우시안, 계단함수 등이 있다.

 

 

샘플의 위치마다 이를 중심으로 하는 커널함수를 생성한다($x_i$ 중심, 폭이 h인 커널)

h는 히스토그램의 bin 크기와 같은 역할이다.

$$K_h(x-x_i), \textrm{h : softness}$$

 

 

샘플마다 만들어진 커널 함수를 모두 더한 후 데이터 개수로 나누어 분포의 평균을 구한다.

$$P_h(x) = \frac{1}{n}\sum\limits_{i=1}^nK_h(x-x_i)$$

 

 

그러면 아래처럼 unique하고도 부드러운 확률밀도함수 분포가 생성된다.

h를 좁게 하던지, 넓게 하던지에 따라서 빨간색, 파란색의 분포로 형성된다. 

 

 

이때 h까지 수학적으로 잘 표기해보자.

아래의 계단함수에서 면적은 일정하되, 폭(width)을 기존대비 h배 늘리고 싶다면 $f(\dfrac{x}{h})$로 표현해야한다.

h=2라면 $(x, f(x)) \Rightarrow (2x, f(\dfrac{x}{2}))$

 

 

이를 반영한 최종 식은 아래와 같아진다. 이때의 커널함수 K는 표준 커널을 가정한다.

$$P_h(x) = \frac{1}{nh^d}\sum\limits_{i=1}^nK(\frac{x-x_i}{h})$$

 

 

KDE의 한계
1. 폭 h를 실험적으로 결정해야 한다.
    알려지기는 Epanechnikov 커널이 최적, 계산의 편의상 가우시안 커널 함수도 많이 사용
2. 샘플을 모두 저장하고 있어야하는 메모리 based 방법
    새로운 샘플 x가 주어질 때마다 $K_h(x-x_i)$를 다시 계산해야 한다.
3. 차원의 저주로부터 자유롭지 못하다.
    갖고 있는 데이터보다 feature dimension이 훨씬 더 큰 경우를 말한다.
    d가 너무 커 $h^d \rightarrow \inf$가 되면서 $P_h(x) \approx 0$이 된다.

 

그렇기에 데이터가 낮은 차원인 경우로 국한하여 활용한다.