• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

KDE에 관한 질문

22.10.22 21:49 작성 조회수 276

0

선생님 안녕하세요. 두가지 질문이 생겨서 글 남깁니다.

  1. 여기서 왜 trapz(density, support)로 나누는지 잘 이해가 되지 않습니다.

density = np.sum(kernels, axis=0)

density /= trapz(density, support)

 

위에 sum을 하는 이유는 이해가 됩니다. 각 관측치에 커널함수를 적용하고 그 값을 더해서 합산한 것을 구하기 때문입니다.

 

두번째 질문

책 2020판 428p에, KDE에 관한 식이 있습니다. 그런데 왜 x-xi 인지 궁금합니다. 제 생각엔 각 관측치인 xi만을 커널함수에 넣어서 더하고

총 개수로 나누는 것으로 이해하는 데, 혹시 정규화를 하는 것이여서 그런가요? 그렇다면 x는 전체 30개의 평균을 말하는 것이고, h로 나눠서 정규화하는 것인가요?

만일 그런 것이라면, 3) nh로 정규화된 녀석을 한번 더 나눠주는 이유는 무엇인가요? n으로 나누는 건 알겠는데 또 h가 붙는건 잘 이해가 안됩니다..ㅠ

 

이상 읽어주셔서 감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하십니까,

  1. trapz(density, support)를 적용하지 않고 데이터 건수인 30으로 나눠도 무방합니다. seaborn의 구현 소스가 trapz(density, support)로 되어 있기에 적용 했을 뿐입니다. trapz(density, support)를 적용한 이유는 수치 적분으로 kernel의 합에 대한 보다 정교한 정규화 적용을 위한 것으로 보입니다.

 

  1. KDE의 정의가 그렇게 되어있습니다.

    KDE는 관측된 데이터마다 해당 데이터를 중심으로 하는 커널 함수를 생성하여 더한 뒤, 데이터 개수로 나누어서 만듭니다. 이때 개별 관측데이터에 커널 함수를 생성한다는 의미는 해당 관측 데이터를 중심으로 하는 커널 함수를 생성한다는 것이지 그냥 관측 데이터를 커널 함수의 인자로 넣는게 아닙니다(개별 관측 데이터를 그냥 인자로 넣으면 함수가 만들어지지 않습니다)

    이를 위해서 K(x - xi)가 적용되는 것입니다.

    요약하자면 KDE는 관측된 데이터를 기반으로 모수 데이터(random 변수 x)의 특성인 확률 밀도를 찾아내는 것으로 관측된 데이터 주변에 어떻게 random 변수 x값들이 모여있는지에 대한 특성을 기반으로 확률 밀도를 찾아내는 것입니다.

     

    감사합니다.