1.4 모델링을 나누는 여러 축

실습 · 연습문제 1개

1차원 가우시안 생성 분류기 gaussian-generative-classifier

생성 모델은 p(y)p(y)와 p(x∣y)p(x \mid y)를 학습하고, 분류할 때는 Bayes 정리로 p(y∣x)p(y \mid x)를 계산한다. 함수 fit_predict_proba(x_train, y_train, x_new)를 완성해, 새 입력마다 p(y=1∣x)p(y = 1 \mid x)를 반환한다.

모델은 다음과 같다.

  • 클래스 사전확률: πk=p(y=k)\pi_k = p(y = k), 학습 데이터에서 클래스 kk의 비율
  • 클래스 조건부분포: p(x∣y=k)=N(μk,σ2)p(x \mid y = k) = \mathcal{N}(\mu_k, \sigma^2). 평균 μk\mu_k는 클래스마다 다르고, 분산 σ2\sigma^2은 두 클래스가 공유한다.
  • μk\mu_k는 클래스 kk의 표본 평균, σ2\sigma^2은 각 점에서 자기 클래스 평균을 뺀 편차 제곱의 평균(전체 NN으로 나눈 최대우도 추정)이다.
σ2=1N∑i=1N(xi−μyi)2,p(y=1∣x)=π1 N(x;μ1,σ2)π0 N(x;μ0,σ2)+π1 N(x;μ1,σ2).\sigma^2 = \frac{1}{N} \sum_{i=1}^{N} (x_i - \mu_{y_i})^2, \qquad p(y = 1 \mid x) = \frac{\pi_1\, \mathcal{N}(x; \mu_1, \sigma^2)}{\pi_0\, \mathcal{N}(x; \mu_0, \sigma^2) + \pi_1\, \mathcal{N}(x; \mu_1, \sigma^2)}.
인자 shape 뜻
x_train (N,) 학습 입력
y_train (N,) 0 또는 1
x_new (M,) 확률을 계산할 입력

반환값의 shape은 (M,)이다. 데이터에서 먼 xx에서는 가우시안 밀도가 0으로 언더플로할 수 있으므로, 로그 밀도의 차이로 계산하는 편이 안전하다.

테스트는 손으로 계산한 값과의 비교, 확률의 범위, 그리고 분산을 공유하면 p(y=1∣x)p(y = 1 \mid x)가 xx의 선형 함수에 sigmoid를 씌운 꼴(로지스틱 회귀와 같은 꼴)이 된다는 성질을 확인한다. 생성 모델로 학습해도 판별 모델과 같은 형태의 p(y∣x)p(y \mid x)가 나온다는 뜻이다.