무슨 생각을 해 그냥 하는거지

Kernel Density Estimation 본문

MATH

Kernel Density Estimation

빛나는콩 2022. 9. 25. 14:00

※ 이해한 내용에 대한 정리와 생각을 개인 공부 목적으로 작성합니다. ※

 

Kernel?

머신러닝에서는 주로 Kernel Trick을 의미할 때 사용됨.

non-linear 문제를 linear classifier를 이용하여 해결하게 만들 때, 이 과정을 더 편하고 빠르게 만들어주는 역할을 함.

수학적으로는 원점을 중심으로 대칭이면서 적분값이 1인 non-negative real valued function임.

대표적인 커널 함수로는 Gaussian, Laplacian, Epanechnikov, Uniform kernel 등이 있다 (아래 그림 참조) 

Kernel Functions 출처) https://en.wikipedia.org/wiki/Kernel_(statistics)

 

Density Estimation?

일부의 데이터가 주어졌을 때 (관측값)

이 데이터들의 분포로부터 원래 변수의 분포를 추정하는 것.

 

 

Kernel Density Estimation?

unknown density f를 갖는 분포로부터 데이터 x_i (i=1, 2, ..., n)들이 i.i.d.일 때, 그 분포에 대한 kernel density estimation f_h hat은 아래와 같이 정의된다.

K_h(x-x_i)는 x_i에 대한 x의 similarity라고 할 수 있다.

h 값은 어떤 연관성을 갖는가? 간단하게 Uniform kernel에서 생각해보면,  [-h, h]에서 h 값이 커지면 더 옆으로 퍼진 커널 함수를 갖게 되고, 이게 관측된 data point를 중심으로 더해지는 거니까 더 blurred density가 된다고 해석할 수 있다. 

같은 데이터에 대해 히스토그램(왼쪽)과 kernel density estimate(오른쪽)을 비교한 것. 히스토그램은 불연속적인 반면, KDE는 연속적임

 

Kernel Density Estimation에서 유의해야 할 것 - Bandwidth Selection

앞서 설명했듯, KDE는 bandwidth에 따라 smoothing 되는 정도가 굉장히 달라진다. 그래서 데이터에 따라 어떤 bandwidth를 선택하는지 아주 중요하다.

 

Bandwidth Selection - Maximum likelihood Method

* 엄격하게는 likelihood라고 할 수 없음

kernel density estimation f_h hat을 maximize하는 h를 찾기

=> h가 작을수록 likelihood가 크다는 문제가 있음

만약에 h가 작으면.. kernel density estimation 값이 데이터가 원래 있던 자리에서 굉장히 튀게(튀어오르게, 크게, sharp하게) 만들어질 것이고, 이거를 over-fitting이라고 함.

 

over fitting을 막는 법 - Validation

validation set에서 가장 잘 동작하는 bandwidth를 찾자!

 

K- fold cross validation

주어진 데이터를 K개의 블록으로 쪼개서 사용하는 법. (주로 5 or 10 folds)

총 K개의 결과가 나오도록, i 번째 블록을 validation set으로 사용하고 나머지 블록을 모두 training set으로 사용한다.

K개의 결과가 나오면 평균을 취한다.

 

Leave-one-out cross validation (LOOCV)

LOOCV는 K-fold의 극단적인 경우로, fold의 개수를 데이터의 개수로 정하는 것이다.

 

이 파트는 자세하게 몰라도 될 것 같아서 (큰 개념만 알면 될 것 같아서)

나중에 더 찾아볼 때 읽어볼 자료만 붙여놓는다

Nonparametric Statistics. 2. Kernel density estimation Ⅰ 2.4.2 Cross-validation 참조

(=> Cross Validation 개념이 여기서도 나와서 좀 신기했다...ㅎ)

 

이렇게 bandwidth h를 하나로 정하여 사용하는 방법도 있지만

왜 h를 하나로 fix 하는지 의문을 갖고 나온 Silverman's rule도 있다.

 

Silverman's Rule

앞서 히스토그램과 KDE를 비교할 때 데이터가 없는 부분을 좀 채워주기 위해 KDE를 사용했다고 이해했다.

그럼 low-density region에서는 넓은 kernel을 사용해야 하는데, high-density region에서는 굳이 smoothing을 강하게 줄 필요가 없다.

그렇다면, 해당 데이터로부터 k개의 이웃한 점들 간의 거리의 평균을 h로 사용하면 어떨까?

그러면 low-density region에서는 데이터 간의 거리가 크기 때문에 높은 h값을 갖게 되어 넓은 kernel을 갖게 되고,

high-density region에서는 거리가 짧아 작은 h를 가져 좁은 kernel을 갖게 된다.

 

 

 

 

읽어봤던 자료