01-14 최대 가능도 추정
모든 확률분포에 대한 모수를 완벽하게 추정할 수 있는 것은 아닙니다. ML에서도 이는 마찬가지여서 주어진 데이터가 우리가 알고 있는 확률분포를 완벽하게 따른다는 보장이 없습니다. 성능이 좋은 ML 알고리즘은 이러한 확률분포를 계산할 때 가장 그 경향성을 잘 모사하는 모수를 찾게 마련입니다. 이를 모수 추정 문제라고 합니다.
이 때, 모멘트 방법 이외에 이론상 가장 가능성이 높은 모수를 찾는 방법으로 최대 가능도 추정을 사용합니다. 어떤 확률변수 $X$에 대한 확률함수 $p\left(x;\theta\right)$에서 가지고 있는 데이터 $x$를 토대로 모수 $\theta$를 찾는 문제로 이해할 수 있습니다. 즉, 확률밀도함수에서 모수를 변수로 간주하는 겁니다.
이러한 문제 정의를 바탕으로 가능도(우도) 함수를 정의하면 아래와 같습니다.
$$L\left(\theta ;x\right)=p\left(x;\theta\right)$$
모멘트를 이용한 추정에서도 말한 것과 같이 추정하고자 하는 확률분포에 따라 가능도함수를 다르게 정의할 수도 있습니다. 앞선 포스트에서 예로 들었던 것 중 베르누이 분포와 정규분포를 예로 들어보면...
- 베르누이 분포 $\rightarrow \theta = \mu$
- 정규분포 $\rightarrow \theta = \left(\mu,\sigma^2\right)$
결론적으로 최대 가능도 추정은 아래와 같은 문제를 해결하는 것이 목표입니다.
$$\hat{\theta}_{MLE} = \text{argmax}_{\theta} L\left(\theta;x\right)$$
식을 해석하자면, 가지고 있는 정보 $x$를 토대로, 가능도를 최대로 만드는 모수 $\theta$를 찾는 것입니다.
정규분포 추정 예시 (이변수)
정규분포의 확률밀도함수로부터 가능도 함수를 정의해보겠습니다. 먼저 확률밀도함수는
$$f\left(x;\mu,\sigma^2\right)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{1}{2\sigma^2}\left(x-\mu\right)^2}$$
이므로, 가능도함수의 정의를 따라서 정리하면
$$L\left(\mu,\sigma^2;x\right)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{1}{2\sigma^2}\left(x-\mu\right)^2}$$
과 같이 나타납니다. 단, 우리는 데이터 $x$는 이미 알고 있다고 간주하며, 적분했을 때의 면적이 1이 아닐 수도 있습니다.(표준정규분포가 아닐 수도 있기 때문에)
표준편차($\sigma$)가 2로 알려져 있고, 값이 5인 데이터 한 개를 가지고 있다고 해봅시다. 이때, $[5, 7, 9]$ 중 어떤 값이 가장 평균에 적합할까요? 아래 그림을 보면 평균값이 5일 때 값이 5인 데이터와 가장 가능도가 높습니다. 따라서 이 상황에서는 5를 고를 때가 가장 적합한 모수라고 볼 수 있습니다.
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(123)
mu1, mu2, mu3 = 5, 7, 9
sigma = 2
x1 = np.linspace(0, 14, 1000)
x2 = np.linspace(0, 14, 1000)
x3 = np.linspace(0, 14, 1000)
plt.figure(figsize=(16, 9))
plt.plot(x1, norm.pdf(x1, loc=mu1, scale=sigma), label=f'N({mu1:.1f}, $4.0^2$)')
plt.plot(x2, norm.pdf(x2, loc=mu2, scale=sigma), label=f'N({mu2:.1f}, $4.0^2$)')
plt.plot(x3, norm.pdf(x3, loc=mu3, scale=sigma), label=f'N({mu3:.1f}, $4.0^2$)')
plt.plot(np.ones(100)*mu1, np.linspace(-0.01, 0.25, 100), 'k--', label='Maximum likelihood')
plt.xlabel(r'$x$', fontsize=12)
plt.ylabel(r'$f(x)$', fontsize=12)
plt.title('Normal Distribution with different ' + r'$\mu$'+', '+ '$\sigma$')
plt.grid()
plt.legend(loc='upper left')
plt.show()
여러 개의 데이터가 있는 경우 가능도 추정 (다변수)
이제 데이터를 $N$개로 늘린 일반적인 상황을 고려해보겠습니다. 데이터 $N$개를 $\left\{x_1, x_2, \cdots, x_N\right\}$이라고 놓죠. 이 표본 데이터들은 모두 같은 확률분포에서 나온 독립적인 값입니다. 즉, 1번째 샘플링에서 $x_1$이 나온 것이 2번째 샘플링의 값 $x_2$를 결정짓지 않습니다. 따라서 $N$개의 데이터가 동시에 나올 결합 확률밀도함수는 아래와 같습니다.
$$L\left(\theta;x_1,\cdots,x_N\right)=p\left(x_1,\cdots,x_N;\theta\right)=\prod_{i=1}^N p\left(x_i;\theta\right)$$
이와 관련된 예제를 풀이해보겠습니다.
먼저 정규분포에서 $\left\{-5,0,3,10\right\}$의 네 개의 데이터를 얻었다고 가정해보겠습니다. 그러면 가능도함수는 아래와 같이 유도할 수 있습니다.
$$L\left(\theta;x_1,x_2,x_3,x_4\right)=\mathcal{N}\left(\theta;x_1,x_2,x_3,x_4\right)= \mathcal{N}\left(x_1;\theta\right)\cdot\mathcal{N}\left(x_2;\theta\right)\cdot\mathcal{N}\left(x_3;\theta\right)\cdot\mathcal{N}\left(x_4;\theta\right)$$
$$=\frac{1}{\sqrt{2\pi}\sigma}\exp \left(\frac{-\left(-5-\mu\right)^2}{2\sigma^2}\right)\cdot\frac{1}{\sqrt{2\pi}\sigma}\exp \left(\frac{-\left(0-\mu\right)^2}{2\sigma^2}\right)\cdot\frac{1}{\sqrt{2\pi}\sigma}\exp \left(\frac{-\left(-\mu\right)^2}{2\sigma^2}\right)\cdot\frac{1}{\sqrt{2\pi}\sigma}\exp \left(\frac{-\left(10-\mu\right)^2}{2\sigma^2}\right)$$
$$=\frac{1}{\left(\sqrt{2\pi}\sigma\right)^4}\exp \left(-\frac{\left(-5-\mu\right)^2+\left(0-\mu\right)^2+\left(3-\mu\right)^2+\left(10-\mu\right)^2}{2\sigma^2}\right)$$
$$=\frac{1}{\left(\sqrt{2\pi}\sigma\right)^4}\exp \left(-\frac{4\mu^2-16\mu +134}{2\sigma^2}\right)=\frac{1}{\left(\sqrt{2\pi}\sigma\right)^4}\exp \left(-\frac{4\left(\mu-2\right)^2 + 118}{2\sigma^2}\right)$$
따라서 가능도함수 $L$은
$$L\left(\theta;x_1,\cdots,x_N\right)=\frac{1}{\left(\sqrt{2\pi}\sigma\right)^4}\exp \left(-\frac{4\left(\mu-2\right)^2 + 118}{2\sigma^2}\right)$$
과 같이 정리합니다. 위 식에 따르면 $\sigma$의 값에 무관하게 $\mu=2$일 때 항상 최대값을 갖게 됩니다.
한편, 정규분포의 최대가능도함수를 다음과 같이 정리할 수도 있습니다.
$$L\left(\mu;x_1,\cdots,x_N\right)=p\left(x_1,\cdots,x_N;\mu\right)=\prod_{i=1}^N \frac{1}{\sqrt{2\pi}\sigma}\exp \left(-\frac{1}{2\sigma^2}\left(x_i-\mu\right)^2\right)$$
$$\because \log L=\log p\left(x_1,\cdots,x_N;\mu\right)=\sum_{i=1}^N \left\{-\frac{1}{2} \log \left(2\pi\sigma^2\right)-\frac{\left(x_i-\mu\right)^2}{2\sigma^2}\right\}$$
$$=-\frac{N}{2}\log\left(2\pi\sigma^2\right)-\frac{1}{2\sigma^2}\sum_{i=1}^N \left(x_i-\mu\right)^2$$
이 값이 $\mu$, $\sigma$에서 최소값을 가질 경우
결과적으로 양변에 로그를 취해 정리하면 다음과 같습니다.
$$-\frac{N}{2}\log\left(2\pi\sigma^2\right)-\frac{1}{2\sigma^2}\sum_{i=1}^N \left(x_i-\mu\right)^2$$
이를 $\mu$와 $\sigma^2$으로 미분한 값이 0일 때, 가능도가 최대가 됩니다.
$$\frac{\partial\log L}{\partial \mu}=\frac{\partial}{\partial\mu}\left\{\frac{N}{2}\log\left(2\pi\sigma^2\right)+\frac{1}{2\sigma^2}\sum_{i=1}^N \left(x_i-\mu\right)^2\right\}=0$$
$$\frac{\partial\log L}{\partial \sigma^2}=\frac{\partial}{\partial \sigma^2}\left\{\frac{N}{2}\log\left(2\pi\sigma^2\right)+\frac{1}{2\sigma^2}\sum_{i=1}^N \left(x_i-\mu\right)^2\right\}=0$$
식을 전개하면 해는 아래와 같이 나옵니다.
$$\mu=\frac{1}{N}\sum_{i=1}^N x_i$$
$$\sigma^2=\frac{1}{N}\sum_{i+1}^N \left(x_i-\mu\right)^2$$
따라서, 정규분포의 평균($\mu$)은 표본평균과 같고, 분산($\sigma^2$)은 표본분산과 같습니다.
14일차 후기
30일 챌린지의 반환점에 도착했습니다. 나머지 절반 성공 가봅시다.
* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'[패스트캠퍼스 환급챌린지]딥러닝 > Chapter 1. 통계' 카테고리의 다른 글
[패스트캠퍼스][환급 챌린지]Chapter 1. 딥러닝을 위한 통계 01-16 최소 제곱법과 추세선 (0) | 2023.03.07 |
---|---|
[패스트캠퍼스][환급 챌린지]Chapter 1. 딥러닝을 위한 통계 01-15 편향과 오차 (0) | 2023.03.06 |
[패스트캠퍼스][환급 챌린지]Chapter 1. 딥러닝을 위한 통계 01-13 확률분포의 추정 (0) | 2023.03.04 |
[패스트캠퍼스][환급 챌린지]Chapter 1. 딥러닝을 위한 통계 01-12 공분산과 상관계수 (0) | 2023.03.03 |
[패스트캠퍼스][환급 챌린지]Chapter 1. 딥러닝을 위한 통계 01-11 분산과 표준편차 (0) | 2023.03.02 |