일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- error
- forward
- kde
- ai tech
- tril
- triu
- kernel density estimation
- Til
- nn.Sequential
- LSTM
- Linux
- band_part
- pytorch
- 네이버 부스트캠프
- Chrome Remote Desktop
- ubuntu
- tensorflow
- RNN
- 크롬 원격 데스크톱
- GRU
- Today
- Total
무슨 생각을 해 그냥 하는거지
Kernel Density Estimation 본문
※ 이해한 내용에 대한 정리와 생각을 개인 공부 목적으로 작성합니다. ※
Kernel?
머신러닝에서는 주로 Kernel Trick을 의미할 때 사용됨.
non-linear 문제를 linear classifier를 이용하여 해결하게 만들 때, 이 과정을 더 편하고 빠르게 만들어주는 역할을 함.
수학적으로는 원점을 중심으로 대칭이면서 적분값이 1인 non-negative real valued function임.
대표적인 커널 함수로는 Gaussian, Laplacian, Epanechnikov, Uniform kernel 등이 있다 (아래 그림 참조)
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 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을 갖게 된다.
읽어봤던 자료