다운로드
작성자: admin 작성일시: 2016-04-29 19:23:57 조회수: 12951 다운로드: 687
카테고리: 기초 수학 태그목록:

9.2 최대가능도 추정법

모멘트 방법으로 추정한 모수는 그 숫자가 가장 가능성 높은 값이라는 이론적 보장이 없다. 이 절에서는 이론적으로 가장 가능성이 높은 모수를 찾는 방법인 최대가능도 추정법에 대해 알아본다. 최대가능도 추정법은 모든 추정방법 중 가장 널리 사용되는 방법이다. 먼저 가능도함수에 대해 알아보고 베르누이분포, 카테고리분포, 정규분포, 다변수정규분포 등 여러 기본분포의 모수를 최대가능도 추정법으로 추정하는 방법을 공부한다.

가능도함수

이제부터는 여러가지 확률분포 $X$에 대한 확률밀도함수 또는 확률질량함수를 다음과 같이 대표하여 쓰기로 한다.

$$ \begin{align} p(x;\theta) \tag{9.2.1} \end{align} $$

이 식에서 $x$는 확률분포가 가질 수 있는 실숫값이다. $x$는 스칼라값일 수도 있고 벡터값일 수도 있다. $\theta$는 확률밀도함수의 모수를 표시하는 대표기호다. $x$와 마찬가지로 $\theta$도 스칼라일 수도 있고 벡터일 수도 있다.

만약 확률분포가 베르누이 확률분포라면,

$$ \begin{align} \theta = \mu \tag{9.2.2} \end{align} $$

다. 만약 확률분포가 이항분포면,

$$ \begin{align} \theta = (N,\mu) \tag{9.2.3} \end{align} $$

가 된다. 또 확률분포가 정규분포라면

$$ \begin{align} \theta = (\mu, \sigma^2) \tag{9.2.4} \end{align} $$

이다.

확률밀도함수에서는 모수 $\theta$가 이미 알고 있는 상수계수고 $x$가 변수다. 하지만 모수 추정 문제에서는 $x$ 즉, 이미 실현된 표본값은 알고 있지만 모수 $\theta$를 모르고 있다. 이때는 반대로 $x$를 이미 알고있는 상수계수로 놓고 $\theta$를 변수로 생각한다. 물론 함수의 값 자체는 변함없이 주어진 $x$가 나올 수 있는 확률밀도다. 이렇게 확률밀도함수에서 모수를 변수로 보는 경우에 이 함수를 가능도함수(likelihood function)라고 한다. 같은 함수를 확률밀도함수로 보면 $p(x;\theta)$로 표기하지만 가능도함수로 보면 $L(\theta;x)$ 기호로 표기한다.

$$ \begin{align} {L}(\theta;x) = p(x;\theta) \tag{9.2.5} \end{align} $$

예제

정규분포의 확률밀도함수는 다음과 같은 단변수 함수다.

$$ \begin{align} p(x; \mu_0, \sigma_0^2) = \dfrac{1}{\sqrt{2\pi\sigma_0^2}} \exp \left(-\dfrac{(x-\mu_0)^2}{2\sigma_0^2}\right) \tag{9.2.6} \end{align} $$

모수가 상수라는 것을 강조하기 위해 아래첨자를 붙였다.

이때 가능도함수는 다음과 같이 입력변수가 2개인 다변수 함수가 된다.

$$ \begin{align} L(\mu, \sigma^2; x_0) = \dfrac{1}{\sqrt{2\pi\sigma^2}} \exp \left(-\dfrac{(x_0-\mu)^2}{2\sigma^2}\right) \tag{9.2.7} \end{align} $$

수식은 같지만 함수의 변수가 다르다는 점에 주의하라.

예를 들어 정규분포에서 기댓값 모수와 분산 모수를 입력 변수로 가지는 가능도함수를 그리면 각각 다음과 같다. 기댓값 모수를 입력 변수로 가지는 가능도함수의 모양이 확률밀도함수와 같은 모양인 것은 ($x$와 $\mu$를 바꾸어도 식이 같아지는) 정규분포의 확률밀도함수가 가지는 특별한 성질 때문이며 아주 우연히 이렇게 된 것뿐이다.

In [1]:
def likelihood_mu(mu):
    return sp.stats.norm(loc=mu).pdf(0)

mus = np.linspace(-5, 5, 1000)
likelihood_mu = [likelihood_mu(m) for m in mus]

plt.subplot(211)
plt.plot(mus, likelihood_mu)
plt.title("가능도함수 $L(\mu, \sigma^2=1; x=0)$")
plt.xlabel("$\mu$")
plt.show()

def likelihood_sigma2(sigma2):
    return sp.stats.norm(scale=np.sqrt(sigma2)).pdf(0)

sigma2s = np.linspace(0.1, 10, 1000)
likelihood_sigma2 = [likelihood_sigma2(s) for s in sigma2s]

plt.subplot(212)
plt.plot(sigma2s, likelihood_sigma2)
plt.title("가능도함수 $L(\mu=0, \sigma; x=0)$")
plt.xlabel("$\sigma^2$")
plt.show()

$L(\mu,\sigma2)$은 이차원 함수이므로 입체로 그리면 다음과 같다.

In [2]:
MU, SIGMA2 = np.meshgrid(mus, sigma2s)
L = np.exp(-MU ** 2 / (2 * SIGMA2)) / np.sqrt(2 * np.pi * SIGMA2)

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(MU, SIGMA2, L, linewidth=0.1)
plt.xlabel('$\mu$')
plt.ylabel('$\sigma^2$')
plt.title('가능도함수 $L(\mu, \sigma^2)$')
plt.show()

예제

베르누이분포의 확률질량함수는 다음과 같은 함수다. 이때 입력 $x$는 0과 1이라는 두 가지 값만 받을 수 있다.

$$ \begin{align} p(x; \mu_0) = \mu_0^x (1-\mu_0)^{1-x} \tag{9.2.8} \end{align} $$

하지만 가능도함수는 다음과 0부터 1까지의 연속적인 실숫값을 입력으로 받는 함수가 된다.

$$ \begin{align} L(\mu; x_0) = \mu^{x_0} (1-\mu)^{1-x_0} \tag{9.2.9} \end{align} $$

수식은 같지만 함수의 변수가 다르다는 점에 주의하라.

가능도함수를 수식으로 나타내면 수식 자체는 확률밀도함수의 수식과 같다. 하지만 가능도함수는 확률분포함수가 아니라는 점에 주의해야 한다. 확률밀도함수는 가능한 모든 표본값 $x$에 대해 적분하면 전체 면적이 1이 되지만,

$$ \begin{align} \int_{-\infty}^{\infty} p(x; \theta) dx = 1 \tag{9.2.10} \end{align} $$

가능도함수는 가능한 모든 모숫값 $\theta$에 대해 적분했을 때 1이 된다는 보장이 없다.

$$ \begin{align} \int_{-\infty}^{\infty} {L}(\theta;x) d\theta = \int_{-\infty}^{\infty} p(x; \theta) d\theta \neq 1 \tag{9.2.11} \end{align} $$
가능도 함수와 확률밀도함수
  • 확률밀도함수 $f(x; \theta) $
    • $\theta$ 값을 이미 알고 있음
    • $\theta$는 상수, $x$는 변수
    • $\theta$가 이미 정해져 있는 상황에서의 $x$ 값의 상대적 확률
    • 적분하면 전체 면적은 항상 1
  • 가능도함수 $L(\theta) = p(x|\theta)$
    • $x$가 이미 발생. 값을 이미 알고 있음
    • $x$는 상수, $\theta$는 변수
    • $x$가 이미 정해져 있는 상황에서의 $\theta$ 값의 상대적 확률
    • 적분하면 전체 면적이 1이 아닐 수 있다.

최대가능도 추정법

최대가능도 추정법(Maximum Likelihood Estimation, MLE)은 주어진 표본에 대해 가능도를 가장 크게 하는 모수 $\theta$를 찾는 방법이다. 이 방법으로 찾은 모수는 기호로 $\hat\theta_{\text{MLE}}$와 같이 표시한다.

$$ \begin{align} \hat\theta_{\text{MLE}} = \arg \max_{\theta} L(\theta; x) \tag{9.2.12} \end{align} $$

예제

정규분포를 가지는 확률변수의 분산 $\sigma^2=1$은 알고 있으나 평균 $\mu$를 모르고 있어 이를 추정해야 하는 문제를 생각해보자. 확률변수의 표본은 하나 $x_1=1$를 가지고 있다고 하자. 이 경우 어떤 $\mu$ 값이 가장 가능성(가능도)이 커 보이는가? 다음 그림에는 $\mu=-1$, $\mu=0$, $\mu=1$, 세 가지 후보를 제시한다. 이 세 가지 $\mu$ 값에 대해 $1$이 나올 확률밀도의 값이 바로 가능도다.

In [3]:
x = np.linspace(-5, 5, 100)

p1 = sp.stats.norm(loc=-1).pdf(1)
p2 = sp.stats.norm(loc=0).pdf(1)
p3 = sp.stats.norm(loc=1).pdf(1)

plt.scatter(1, p1, s=100, c='r', marker='v', 
         label=r"$N(x_1;\mu=-1)$={:.2f}".format(np.round(p1, 2)))
plt.scatter(1, p2, s=100, c='b', marker='^', 
         label=r"$N(x_1;\mu=0)$={:.2f}".format(np.round(p2, 2)))
plt.scatter(1, p3, s=100, c='g', marker='s', 
         label=r"$N(x_1;\mu=1)$={:.2f}".format(np.round(p3, 2)))

plt.plot(x, sp.stats.norm(loc=-1).pdf(x), ls="-.")
plt.plot(x, sp.stats.norm(loc=0).pdf(x), ls="--")
plt.plot(x, sp.stats.norm(loc=1).pdf(x), ls="-")
plt.scatter(1, 0, s=100, c='k')
plt.vlines(1, -0.09, 0.45, linestyle=":")
plt.text(1-0.3, -0.15, "$x_1=1$")
plt.xlabel("x")
plt.ylabel("확률밀도")
plt.legend()
plt.title("최대가능도 추정법의 원리")
plt.show()