본문으로 바로가기



다변수 정규분포의 최대우도추정량(MLE) 유도하기 1

category Statistics/Inference 2017.01.25 00:07

오늘은 다변수 정규분포(Multivariate Normal distribution-이하 MVN)에서 최대우도추정량(Maximum Likelihood Estimator-이하 MLE)를 유도하는 것을 알아보도록 하겠다. 필자가 MLE에 대한 포스팅은 하지 않았으나 독자가 MLE에 대한 기본지식이 있다는 전제하에 다변수 정규분포의 모수인 \(\mu\)\(\Sigma\)에 대한 MLE를 유도하는 초점을 맞춰서 포스팅 하도록 하겠다. MLE의 개념에 대한 포스팅은 추후에 업데이트 하도록 하겠다.

사진출처: http://blogs.sas.com/content/iml/2012/07/05/compute-multivariate-normal-denstity.html#prettyPhoto/0/


다변량 정규분포(MVN)

먼저 확률벡터 \(\underline{X}_{d}\)가 모수가 \(\underline{\mu}\)\(\Sigma\)인 다변수 정규분포를 따른다고 하자. 여기서 밑줄은 \(X\)가 벡터라는 것을 나타내기 위해 사용된 기호이며, \(d\)는 확률벡터의 차원을 나타낸다. 따라서 모수 \(\underline{\mu}\)\(d\times1\) 벡터, \(\Sigma\)\(d\times d\) 매트릭스가 된다.

\[ \underline{X}=\left(\begin{array}{c} X_{1}\\ X_{2}\\ \vdots\\ X_{d} \end{array}\right)\sim MVN\left(\underline{\mu},\Sigma\right) \]

이러한 다변수 정규분포의 p.d.f.는 다음과 같다. \[ f\left(\underline{x}_{i};\underline{\mu},\Sigma\right)=\frac{1}{\left(2\pi\right)^{\frac{d}{2}}\left|\Sigma\right|^{\frac{1}{2}}}exp\left(-\frac{1}{2}\left(\underline{x}_{i}-\underline{\mu}\right)^{T}\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right)\right) \]

\(n\)개의 샘플 사이즈를 가정할 경우, 우도함수(Likeihood function)는 다음과 같이 나타낼 수 있다.

\[ \begin{align*} L\left(\underline{x};\underline{\mu},\Sigma\right) & =\Pi_{i=1}^{n}f\left(\underline{x}_{i}\right)\\ & =\Pi_{i=1}^{n}\left[\frac{1}{\left(2\pi\right)^{\frac{d}{2}}\left|\Sigma\right|^{\frac{1}{2}}}exp\left(-\frac{1}{2}\left(\underline{x}_{i}-\underline{\mu}\right)^{T}\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right)\right)\right] \end{align*} \]

좀 더 편한 계산을 위하여 양변에 로그 함수를 취하여 Loglikelihood 함수를 도출하자.

\[ \begin{align*} \mathit{l}\left(\underline{x};\underline{\mu},\Sigma\right) & =\sum_{i=1}^{n}\left(-\frac{d}{2}log\pi-\frac{1}{2}log\left|\Sigma\right|-\frac{1}{2}\left(\underline{x}_{i}-\underline{\mu}\right)^{T}\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right)\right)\\ & =-\frac{d}{2}nlog\pi-\frac{n}{2}log\left|\Sigma\right|-\frac{1}{2}\sum_{i=1}^{n}\left(\underline{x}_{i}-\underline{\mu}\right)^{T}\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right) \end{align*} \]

MLE는 위의 로그우도함수를 최대로 만드는 모수인 \(\mu\)\(\Sigma\)의 값을 구하는 것이므로, 첫번째 항인 \(-\frac{d}{2}nlog\pi\)는 모수와 관계가 없으므로 생략해도 MLE의 값을 바뀌지 않는다.

\[ \mathit{l}\left(\underline{x};\underline{\mu},\Sigma\right)\propto-\frac{n}{2}log\left|\Sigma\right|-\frac{1}{2}\sum_{i=1}^{n}\left(\underline{x}_{i}-\underline{\mu}\right)^{T}\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right) \]

자, 이제 앞으로 남은 것은 이 함수를 모수인 \(\mu\)\(\Sigma\)로 각각 편미분 하는 것인데, 함수가 벡터 형식이라서 다소 생소한 다음의 벡터 미적분 지식이 조금 필요하다.

  • 몇가지 벡터 미분 공식

    \(a\)\(b\)\(p \times 1\) 벡터이고, \(\boldsymbol{A}\)\(p \times p\) 상수로 이루어진 행렬일 때, 다음의 미분식이 성립한다.

    • \(\frac{\partial a^{T}b}{\partial b}=a\)
    • \(\frac{\partial a^{T}b}{\partial a}=b\)
    • \(\frac{\partial b^{T}\boldsymbol{A}b}{\partial b}=\left(\boldsymbol{A}+\boldsymbol{A}^{T}\right)b\)

로그우도함수 \(\mu\) 벡터로 편미분

\(\mu\)벡터에 대하여 로그우도 함수를 편미분을 해보면, 첫 번째 항은 \(\mu\)를 포함하고 있지 않으므로 0이 된다. 두 번째 항은 다음과 같은 함수 \(f\)의 합 꼴로 볼 수 있다.

\[ f\left(\underline{\mu}\right)=\left(\underline{x}_{i}-\underline{\mu}\right)^{T}\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right) \]

따라서 우리가 구하는 로그우도함수를 \(\mu\)벡터로 편미분 결과값은 다음과 같이 함수 \(f\)\(\mu\) 벡터로 편미분 한 것의 합의 꼴로 나타낼 수 있다.

\[ \frac{\partial\mathit{l}\left(\underline{\mu}\right)}{\partial\underline{\mu}}=\sum_{i=1}^{n}\left(-\frac{1}{2}\times\frac{\partial f\left(\underline{\mu}\right)}{\partial\underline{\mu}}\right) \]

함수 \(f\)를 미분하기 위하여 다음과 같이 치환을 하도록 하자.

\[ \begin{align*} \underline{v} & :=\underline{x}_{i}-\underline{\mu}\\ B & :=\Sigma^{-1} \end{align*} \]

위의 치환을 통하여 \(f\)함수를 아래와 같이 미분 공식을 알고 있는 꼴로 변경 할 수 있다.

\[ \begin{align*} f\left(\underline{\mu}\right) & =\left(\underline{x}_{i}-\underline{\mu}\right)^{T}\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right)\\ & =h\left(\underline{v}\right)=\underline{v}^{T}B\underline{v} \end{align*} \]

따라서, 위의 미분 공식에 의하여, \(h\) 함수를 \(v\)벡터로 미분하면 다음과 같다.

\[ \frac{\partial h\left(\underline{v}\right)}{\partial\underline{v}}=\left(\boldsymbol{B}+\boldsymbol{B}^{T}\right)\underline{v}=2\boldsymbol{B}\underline{v} \]

마지막 결과는 Covariance 매트릭스가 대칭이기 때문이다. 미적분에서 배운 chain rule에 의하여 함수 \(f\)\(\mu_{1}\)에 대하여 미분한 것을 나타내어보면 다음과 같다.

\[ \begin{align*} \frac{\partial f\left(\underline{\mu}\right)}{\partial\mu_{1}} & =\sum_{i=1}^{d}\frac{\partial h\left(v\right)}{\partial v_{i}}\frac{\partial v_{i}}{\partial\mu_{1}}\\ & =\left(\begin{array}{cccc} \frac{\partial v_{1}}{\partial\mu_{1}} & \frac{\partial v_{2}}{\partial\mu_{1}} & \cdots & \frac{\partial v_{d}}{\partial\mu_{1}}\end{array}\right)\left(\begin{array}{c} \frac{\partial h\left(v\right)}{\partial v_{1}}\\ \frac{\partial h\left(v\right)}{\partial v_{2}}\\ \vdots\\ \frac{\partial h\left(v\right)}{\partial v_{d}} \end{array}\right) \end{align*} \]

따라서, 함수 \(f\)\(\mu\)벡터로 미분한 것은 다음과 같이 나타낼 수 있다.

\[ \frac{\partial f\left(\underline{\mu}\right)}{\partial\underline{\mu}}=\left(\begin{array}{cccc} \frac{\partial v_{1}}{\partial\mu_{1}} & \frac{\partial v_{2}}{\partial\mu_{1}} & \cdots & \frac{\partial v_{d}}{\partial\mu_{1}}\\ \frac{\partial v_{1}}{\partial\mu_{2}} & \frac{\partial v_{2}}{\partial\mu_{2}} & \cdots & \frac{\partial v_{d}}{\partial\mu_{2}}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial v_{1}}{\partial\mu_{d}} & \frac{\partial v_{2}}{\partial\mu_{d}} & \cdots & \frac{\partial v_{d}}{\partial\mu_{d}} \end{array}\right)\left(\begin{array}{c} \frac{\partial h\left(v\right)}{\partial v_{1}}\\ \frac{\partial h\left(v\right)}{\partial v_{2}}\\ \vdots\\ \frac{\partial h\left(v\right)}{\partial v_{d}} \end{array}\right) \]

엄청 복잡하게 보이지만, 사실 우리가 \(v\)벡터를 앞에서 정의한 것을 살펴보면,

\[ v_{j}:=\left[\underline{x}_{i}\right]_{j}-\mu_{j}, \ \ \mbox{where j = 1,...,d.} \]

이므로 이것을 각 \(\mu_i\)에 대하여 미분을 해보면 앞의 행렬은 \(d \times d\) 크기의 음단위 행렬(\(-\boldsymbol{I}\))이 된다는 것을 알 수 있다. 따라서, 우리가 구하고자 하는 로그우도 함수의 편미분 값은 다음과 같다.

\[ \begin{align*} \frac{\partial\mathit{l}\left(\underline{\mu}\right)}{\partial\underline{\mu}} & =\sum_{i=1}^{n}\left(-\frac{1}{2}\times\frac{\partial f\left(\underline{\mu}\right)}{\partial\underline{\mu}}\right)\\ & =\sum_{i=1}^{n}\left(-\frac{1}{2}\left(-2\boldsymbol{I}\boldsymbol{B}\underline{v}\right)\right)\\ & =\sum_{i=1}^{n}\left(\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right)\right) \end{align*} \]

마지막 단계는 위에서 구한 로그우도 함수의 편미분 벡터(Gradient)를 영벡터로 만드는 벡터 \(\mu\)의 값을 찾는 것이다.

\[ \begin{align*} \frac{\partial\mathit{l}\left(\underline{\mu}\right)}{\partial\underline{\mu}} & =\sum_{i=1}^{n}\left(\Sigma^{-1}\left(\underline{x}_{i}-\underline{\mu}\right)\right)\overset{set}{=}\underline{0}\\ \iff & \Sigma^{-1}\sum_{i=1}^{n}\left(\underline{x}_{i}-\underline{\mu}\right)=\underline{0}\\ \iff & \sum_{i=1}^{n}\left(\underline{x}_{i}-\underline{\mu}\right)=\underline{0}\\ \iff & \underline{\mu}=\left(\sum_{i=1}^{n}\underline{x}_{i}\right)/n \end{align*} \]

위의 과정에서, 공분산 행렬(Covariance matrix)의 역행렬을 벡터에 곱해서 합한 것이나 벡터를 다 더하고 곱해주는 것이 똑같으므로 교환가능 하다. 밖으로 뺀 역행렬을 없애기 위해 양변에 공분산 행렬을 곱하여 없애버리면, 우리가 고대하던 \(\mu\)벡터의 MLE,

\[ \hat{\underline{\mu}}=\left(\sum_{i=1}^{n}\underline{X}_{i}\right)/n \]

샘플 평균이 구해지는 것을 볼 수 있다. 포스팅이 길어진 관계로 \(\boldsymbol{\Sigma}\)의 MLE를 구하는 것은 다음 포스팅에서 이어가도록 하겠다.

References

[1] Matrix Cookbook www.imm.dtu.dk/pubdb/views/edoc_download.php/3274/pdf/imm3274.pdf

[2] Anderson, T. W. (2003). An Introduction to Multivariate Statistical Analysis. Willey and Sons, New York, NY.


SHARE TO



티스토리 툴바