✏️ 데이터 사이언스 스쿨 에서 공부한 내용입니다.
D D D 차원 다변수정규분포(MVN: multivariate Gaussian normal distribution) 의 확률밀도함수는 평균벡터 μ \mu μ 와 공분산행렬 Σ \Sigma Σ 라는 두 개의 모수를 가지며 다음과 같은 수식으로 정의한다.
N ( x ; μ , Σ ) = 1 ( 2 π ) D / 2 ∣ Σ ∣ 1 / 2 exp ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) (8.6.1) \mathcal{N}(x ; \mu, \Sigma) = \dfrac{1}{(2\pi)^{D/2} |\Sigma| ^{1/2}} \exp \left( -\dfrac{1}{2} (x-\mu)^T \Sigma^{-1} (x-\mu) \right) \tag{8.6.1} N ( x ; μ , Σ ) = ( 2 π ) D / 2 ∣ Σ ∣ 1 / 2 1 exp ( − 2 1 ( x − μ ) T Σ − 1 ( x − μ ) ) ( 8 . 6 . 1 )
x ∈ R D x \in \mathbf{R}^D x ∈ R D 확률변수벡터
μ ∈ R D \mu \in \mathbf{R}^D μ ∈ R D 평균벡터
Σ ∈ R D × D \Sigma \in \mathbf{R}^{D\times D} Σ ∈ R D × D 공분산행렬
다변수정규분포에서 공분산행렬은 양의 정부호인 대칭행렬이어야 한다. 따라서 역행렬이 항상 존재한다. 공분산행렬의 역행렬 Σ − 1 \Sigma^{-1} Σ − 1 을 정밀도행렬(precision matrix)이라고 한다.
💡 Recap 💡
양의 정부호 : 영 벡터가 아닌 모든 벡터 x x x 에 대해 x T A x > 0 x^T A x > 0 x T A x > 0
공분산 : 두 확률 변수에 대해 '편차 곱의 평균'을 적용한 수식 떠올리기!
공분산행렬 : M M M 개의 확률 변수로 이루어진 확률 벡터 표본이 N N N 개 있을 때, i i i 행 j j j 열의 성분이 i i i 번째 확률 변수와 j j j 번째 확률 변수의 공분산으로 이루어진 행렬을 공분산행렬이라 한다.
S = 1 N X 0 T X 0 S = \dfrac{1}{N} X_0^TX_0 S = N 1 X 0 T X 0 으로 계산할 수 있으며, X 0 = X − 1 N x ˉ T = X − 1 N 1 N 1 N T X X_0 = X - \mathbf{1_N}\bar{x}^T = X - \dfrac{1}{N} \mathbf{1_N}\mathbf{1_N}^TX X 0 = X − 1 N x ˉ T = X − N 1 1 N 1 N T X 이다.
예제
다음과 같은 2차원(D = 2 D=2 D = 2 ) 다변수정규분포를 생각하자. 2차원이므로 확률변수벡터는
x = [ x 1 x 2 ] (8.6.2) x = \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} \tag{8.6.2} x = [ x 1 x 2 ] ( 8 . 6 . 2 )
이다.
만약 모수가 다음과 같다고 하자.
μ = [ 2 3 ] . Σ = [ 1 0 0 1 ] (8.6.3) \mu = \begin{bmatrix}2 \\ 3 \end{bmatrix}. \;\;\; \Sigma = \begin{bmatrix}1 & 0 \\ 0 & 1 \end{bmatrix} \tag{8.6.3} μ = [ 2 3 ] . Σ = [ 1 0 0 1 ] ( 8 . 6 . 3 )
공분산행렬로부터 x 1 x_1 x 1 과 x 2 x_2 x 2 가 독립이라는 것을 알 수 있다. 확률밀도함수를 구하면 다음과 같다.
∣ Σ ∣ = 1. Σ − 1 = [ 1 0 0 1 ] (8.6.4) | \Sigma| = 1. \;\;\; \Sigma^{-1} = \begin{bmatrix}1 & 0 \\ 0 & 1 \end{bmatrix} \tag{8.6.4} ∣ Σ ∣ = 1 . Σ − 1 = [ 1 0 0 1 ] ( 8 . 6 . 4 )
( x − μ ) T Σ − 1 ( x − μ ) = [ x 1 − 2 x 2 − 3 ] [ 1 0 0 1 ] [ x 1 − 2 x 2 − 3 ] = ( x 1 − 2 ) 2 + ( x 2 − 3 ) 2 (8.6.5) \begin{aligned} (x-\mu)^T \Sigma^{-1} (x-\mu) &= \begin{bmatrix}x_1 - 2 & x_2 - 3 \end{bmatrix} \begin{bmatrix}1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix}x_1 - 2 \\ x_2 - 3 \end{bmatrix} \\ &= (x_1 - 2)^2 + (x_2 - 3)^2 \end{aligned} \tag{8.6.5} ( x − μ ) T Σ − 1 ( x − μ ) = [ x 1 − 2 x 2 − 3 ] [ 1 0 0 1 ] [ x 1 − 2 x 2 − 3 ] = ( x 1 − 2 ) 2 + ( x 2 − 3 ) 2 ( 8 . 6 . 5 )
N ( x 1 , x 2 ) = 1 2 π exp ( − 1 2 ( ( x 1 − 2 ) 2 + ( x 2 − 3 ) 2 ) ) (8.6.6) \mathcal{N}(x_1, x_2) = \dfrac{1}{2\pi} \exp \left( -\dfrac{1}{2} \left( (x_1 - 2)^2 + (x_2 - 3)^2 \right) \right) \tag{8.6.6} N ( x 1 , x 2 ) = 2 π 1 exp ( − 2 1 ( ( x 1 − 2 ) 2 + ( x 2 − 3 ) 2 ) ) ( 8 . 6 . 6 )
확률밀도함수값이 같은 등고선은 원이 된다.
( x 1 − 2 ) 2 + ( x 2 − 3 ) 2 = r 2 (8.6.7) (x_1 - 2)^2 + (x_2 - 3)^2 = r^2 \tag{8.6.7} ( x 1 − 2 ) 2 + ( x 2 − 3 ) 2 = r 2 ( 8 . 6 . 7 )
사이파이의 stats 서브패키지는 다변수정규분포를 위한 multivariate_normal()
명령을 제공한다. mean
인수로 평균벡터를, cov
인수로 공분산행렬을 받는다. multivariate_normal()
명령으로 위 확률밀도함수를 그리고 랜덤 표본을 생성하면 다음 그림과 같다.
mu = [ 2 , 3 ]
cov = [ [ 1 , 0 ] , [ 0 , 1 ] ]
rv = sp. stats. multivariate_normal( mu, cov)
X = rv. rvs( 20000 )
xx = np. linspace( - 1 , 6 , 120 )
yy = np. linspace( - 1 , 6 , 150 )
XX, YY = np. meshgrid( xx, yy)
plt. scatter( X[ : , 0 ] , X[ : , 1 ] , s= 1 )
plt. contour( XX, YY, rv. pdf( np. dstack( [ XX, YY] ) ) )
plt. axis( "equal" )
plt. xlim( 0 , 4 )
plt. ylim( 2 , 4 )
plt. xlabel( "$x_1$" )
plt. ylabel( "$x_2$" )
plt. title( "이차원 다변수정규분포의 예" )
plt. show( )
예제
만약 모수가 다음과 같다고 하자. 공분산행렬로부터 x 1 x_1 x 1 과 x 2 x_2 x 2 가 양의 상관관계가 있다는 것을 알 수 있다.
μ = [ 2 3 ] . Σ = [ 2 3 3 7 ] (8.6.8) \mu = \begin{bmatrix}2 \\ 3 \end{bmatrix}. \;\;\; \Sigma = \begin{bmatrix}2 & 3 \\ 3 & 7 \end{bmatrix} \tag{8.6.8} μ = [ 2 3 ] . Σ = [ 2 3 3 7 ] ( 8 . 6 . 8 )
이 때 확률밀도함수는 다음과 같다.
∣ Σ ∣ = 5 , Σ − 1 = [ 1.4 − 0.6 − 0.6 0.4 ] (8.6.9) |\Sigma| = 5,\;\;\; \Sigma^{-1} = \begin{bmatrix}1.4 & -0.6 \\ -0.6 & 0.4 \end{bmatrix} \tag{8.6.9} ∣ Σ ∣ = 5 , Σ − 1 = [ 1 . 4 − 0 . 6 − 0 . 6 0 . 4 ] ( 8 . 6 . 9 )
( x − μ ) T Σ − 1 ( x − μ ) = [ x 1 − 2 x 2 − 3 ] [ 1.4 − 0.6 − 0.6 0.4 ] [ x 1 − 2 x 2 − 3 ] = 7 5 ( x 1 − 2 ) 2 − 6 5 ( x 1 − 2 ) ( x 2 − 3 ) + 2 5 ( x 2 − 3 ) 2 (8.6.10) \begin{aligned} (x-\mu)^T \Sigma^{-1} (x-\mu) &= \begin{bmatrix}x_1 - 2 & x_2 - 3 \end{bmatrix} \begin{bmatrix}1.4 & -0.6 \\ -0.6 & 0.4\end{bmatrix} \begin{bmatrix}x_1 - 2 \\ x_2 - 3 \end{bmatrix} \\ &= \dfrac{7}{5}(x_1 - 2)^2 - \dfrac{6}{5}(x_1 - 2)(x_2 - 3) + \dfrac{2}{5}(x_2 - 3)^2 \end{aligned} \tag{8.6.10} ( x − μ ) T Σ − 1 ( x − μ ) = [ x 1 − 2 x 2 − 3 ] [ 1 . 4 − 0 . 6 − 0 . 6 0 . 4 ] [ x 1 − 2 x 2 − 3 ] = 5 7 ( x 1 − 2 ) 2 − 5 6 ( x 1 − 2 ) ( x 2 − 3 ) + 5 2 ( x 2 − 3 ) 2 ( 8 . 6 . 1 0 )
N ( x 1 , x 2 ) = 1 2 5 π exp ( 7 5 ( x 1 − 2 ) 2 − 6 5 ( x 1 − 2 ) ( x 2 − 3 ) + 2 5 ( x 2 − 3 ) 2 ) (8.6.11) \mathcal{N}(x_1, x_2) = \dfrac{1}{2\sqrt{5}\pi} \exp \left( \dfrac{7}{5}(x_1 - 2)^2 - \dfrac{6}{5}(x_1 - 2)(x_2 - 3) + \dfrac{2}{5}(x_2 - 3)^2 \right) \tag{8.6.11} N ( x 1 , x 2 ) = 2 5 π 1 exp ( 5 7 ( x 1 − 2 ) 2 − 5 6 ( x 1 − 2 ) ( x 2 − 3 ) + 5 2 ( x 2 − 3 ) 2 ) ( 8 . 6 . 1 1 )
이 확률밀도함수의 모양은 다음과 같이 회전변환된 타원 모양이 된다.
mu = [ 2 , 3 ]
cov = [ [ 2 , 3 ] , [ 3 , 7 ] ]
rv = sp. stats. multivariate_normal( mu, cov)
X = rv. rvs( 20000 )
xx = np. linspace( - 1 , 6 , 120 )
yy = np. linspace( - 1 , 6 , 150 )
XX, YY = np. meshgrid( xx, yy)
plt. scatter( X[ : , 0 ] , X[ : , 1 ] , s= 1 )
plt. contour( XX, YY, rv. pdf( np. dstack( [ XX, YY] ) ) )
plt. axis( "equal" )
plt. xlim( 0 , 4 )
plt. ylim( 2 , 4 )
plt. xlabel( "$x_1$" )
plt. ylabel( "$x_2$" )
plt. title( "이차원 다변수정규분포의 예" )
plt. show( )
💡 행렬의 대각화 (Matrix Diagonalization) 💡
행렬의 대각화는 정사각행렬 A A A 를 다음 형태로 분해하는 과정:
A = P D P − 1 A = P D P^{-1} A = P D P − 1
P P P : 행렬 A A A 의 고유벡터 를 열로 가지는 행렬
D D D : 행렬 A A A 의 고유값 을 대각선에 가지는 대각행렬
P − 1 P^{-1} P − 1 : P P P 의 역행렬
다변수정규분포와 고윳값 분해
다변수정규분포의 공분산행렬 Σ \Sigma Σ 은 양의 정부호인 대칭행렬이므로 대각화가능(diagonalizable)이다. 정밀도행렬 Σ − 1 \Sigma^{-1} Σ − 1 은 다음처럼 분해할 수 있다. 이 식에서 Λ \Lambda Λ 는 고윳값행렬, V V V 는 고유벡터행렬이다.
Σ − 1 = V Λ − 1 V T (8.6.12) \Sigma^{-1} = V \Lambda^{-1} V^T \tag{8.6.12} Σ − 1 = V Λ − 1 V T ( 8 . 6 . 1 2 )
이를 이용하면 확률밀도함수는 다음처럼 좌표 변환할 수 있다.
N ( x ) ∝ exp ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) = exp ( − 1 2 ( x − μ ) T V Λ − 1 V T ( x − μ ) ) = exp ( − 1 2 ( V T ( x − μ ) ) T Λ − 1 ( V T ( x − μ ) ) ) = exp ( − 1 2 ( V − 1 ( x − μ ) ) T Λ − 1 ( V − 1 ( x − μ ) ) ) (8.6.13) \begin{aligned} \mathcal{N}(x) &\propto \exp \left( -\dfrac{1}{2} (x-\mu)^T \Sigma^{-1} (x-\mu) \right) \\ &= \exp \left( -\dfrac{1}{2} (x-\mu)^T V \Lambda^{-1} V^T (x-\mu) \right) \\ &= \exp \left( -\dfrac{1}{2} (V^T(x-\mu))^T \Lambda^{-1} (V^T (x-\mu)) \right) \\ &= \exp \left( -\dfrac{1}{2} (V^{-1}(x-\mu))^T \Lambda^{-1} (V^{-1} (x-\mu)) \right) \\ \end{aligned} \tag{8.6.13} N ( x ) ∝ exp ( − 2 1 ( x − μ ) T Σ − 1 ( x − μ ) ) = exp ( − 2 1 ( x − μ ) T V Λ − 1 V T ( x − μ ) ) = exp ( − 2 1 ( V T ( x − μ ) ) T Λ − 1 ( V T ( x − μ ) ) ) = exp ( − 2 1 ( V − 1 ( x − μ ) ) T Λ − 1 ( V − 1 ( x − μ ) ) ) ( 8 . 6 . 1 3 )
x ′ = V − 1 ( x − μ ) (8.6.14) x' = V^{-1}(x-\mu) \tag{8.6.14} x ′ = V − 1 ( x − μ ) ( 8 . 6 . 1 4 )
라고 하자. 이 식은 변환행렬 V − 1 V^{-1} V − 1 의 열벡터인 고유벡터를 새로운 축으로 가지도록 회전하고 μ \mu μ 벡터 방향으로 평행이동하는 것을 뜻한다.
최종 확률밀도함수식은 다음과 같다. 이 식에서 Λ \Lambda Λ 는 고윳값 λ i \lambda_i λ i 를 대각성분으로 가지는 대각행렬이므로 새로운 좌표 x ′ x' x ′ 에서 확률밀도함수는 타원이 된다. 타원의 반지름은 고윳값 크기에 비례한다. 반대로 이야기하면 원래 좌표에서 확률밀도함수는 μ \mu μ 를 중심으로 가지고 고윳값에 비례하는 반지름을 가진 타원을 고유벡터 방향으로 회전시킨 모양이다.
N ( x ) ∝ exp ( − 1 2 x ′ T Λ − 1 x ′ ) ∝ exp ( x ′ 1 2 λ 1 2 + x ′ 2 2 λ 2 2 + ⋯ + x ′ D 2 λ D 2 ) (8.6.15) \begin{aligned} \mathcal{N}(x) &\propto \exp \left( -\dfrac{1}{2} x'^T \Lambda^{-1} x' \right) \\ &\propto \exp \left( \dfrac{{x'}_1^2}{\lambda_1^2} + \dfrac{{x'}_2^2}{\lambda_2^2} + \cdots + \dfrac{{x'}_D^2}{\lambda_D^2} \right) \end{aligned} \tag{8.6.15} N ( x ) ∝ exp ( − 2 1 x ′ T Λ − 1 x ′ ) ∝ exp ( λ 1 2 x ′ 1 2 + λ 2 2 x ′ 2 2 + ⋯ + λ D 2 x ′ D 2 ) ( 8 . 6 . 1 5 )
예를 들어 위의 두번째 예제에서 공분산행렬을 고유분해하면 다음과 같다.
mu = [ 2 , 3 ]
cov = [ [ 4 , 3 ] , [ 3 , 5 ] ]
w, V = np. linalg. eig( cov)
print ( w)
print ( V)
array([1.45861873, 7.54138127])
array([[-0.76301998, -0.6463749 ],
[ 0.6463749 , -0.76301998]])
고윳값: λ 1 = 1.46 \lambda_1=1.46 λ 1 = 1 . 4 6 , λ 2 = 7.54 \lambda_2=7.54 λ 2 = 7 . 5 4
고유벡터: v 1 = ( − 0.763 , 0.646 ) v_1 = (-0.763, 0.646) v 1 = ( − 0 . 7 6 3 , 0 . 6 4 6 ) , v 2 = ( − 0.646 , − 0.763 ) v_2 = (-0.646, -0.763) v 2 = ( − 0 . 6 4 6 , − 0 . 7 6 3 )
따라서 확률밀도함수가 고유벡터 v 1 = ( − 0.763 , 0.646 ) v_1 = (-0.763, 0.646) v 1 = ( − 0 . 7 6 3 , 0 . 6 4 6 ) 와 v 2 = ( − 0.646 , − 0.763 ) v_2 = (-0.646, -0.763) v 2 = ( − 0 . 6 4 6 , − 0 . 7 6 3 ) 를 축으로하는 타원형임을 알 수 있다
plt. figure( figsize= ( 8 , 4 ) )
d = dict ( facecolor= "k" , edgecolor= "k" , width= 2 )
plt. subplot( 121 )
xx = np. linspace( - 1 , 5 , 120 )
yy = np. linspace( 0 , 6 , 150 )
XX, YY = np. meshgrid( xx, yy)
rv1 = sp. stats. multivariate_normal( mu, cov)
plt. contour( XX, YY, rv1. pdf( np. dstack( [ XX, YY] ) ) )
plt. annotate( "" , xy= ( mu + 0.35 * w[ 0 ] * V[ : , 0 ] ) , xytext= mu, arrowprops= d)
plt. annotate( "" , xy= ( mu + 0.35 * w[ 1 ] * V[ : , 1 ] ) , xytext= mu, arrowprops= d)
plt. scatter( mu[ 0 ] , mu[ 1 ] , s= 10 , c= "k" )
plt. axis( "equal" )
plt. xlabel( "$x_1$" )
plt. ylabel( "$x_2$" )
plt. title( "$x_1,x_2$좌표의 결합확률밀도함수" )
plt. subplot( 122 )
xx = np. linspace( - 3 , 3 , 120 )
yy = np. linspace( - 3 , 3 , 150 )
XX, YY = np. meshgrid( xx, yy)
rv2 = sp. stats. multivariate_normal( ( 0 , 0 ) , w)
plt. contour( XX, YY, rv2. pdf( np. dstack( [ XX, YY] ) ) )
plt. annotate( "" , xy= ( 0.35 * w[ 0 ] * np. array( [ 1 , 0 ] ) ) , xytext= ( 0 , 0 ) , arrowprops= d)
plt. annotate( "" , xy= ( 0.35 * w[ 1 ] * np. array( [ 0 , 1 ] ) ) , xytext= ( 0 , 0 ) , arrowprops= d)
plt. scatter( 0 , 0 , s= 10 , c= "k" )
plt. axis( "equal" )
plt. xlabel( "$x'_1$" )
plt. ylabel( "$x'_2$" )
plt. title( "$x'_1,x'_2$좌표의 결합확률밀도함수" )
plt. tight_layout( )
plt. show( )
연습 문제 8.6.1
다음과 같은 평균벡터와 공분산행렬을 가지는 2차원 다변수정규분포의 확률밀도함수의 모양은 어떻게 되는가?
μ = [ 1 2 ] . Σ = [ 4 − 3 − 3 4 ] (8.6.16) \mu = \begin{bmatrix} 1 \\ 2 \end{bmatrix}. \;\;\; \Sigma = \begin{bmatrix}4 & -3 \\ -3 & 4 \end{bmatrix} \tag{8.6.16} μ = [ 1 2 ] . Σ = [ 4 − 3 − 3 4 ] ( 8 . 6 . 1 6 )
mu = [ 1 , 2 ]
cov = [ [ 4 , - 3 ] , [ - 3 , 4 ] ]
w, V = np. linalg. eig( cov)
rv = sp. stats. multivariate_normal( mu, cov)
X = rv. rvs( 7777 )
xx = np. linspace( - 6 , 6 , 120 )
yy = np. linspace( - 6 , 6 , 150 )
XX, YY = np. meshgrid( xx, yy)
plt. scatter( X[ : , 0 ] , X[ : , 1 ] , s= 1 )
plt. contour( XX, YY, rv. pdf( np. dstack( [ XX, YY] ) ) )
plt. axis( "equal" )
plt. xlim( - 4 , 6 )
plt. ylim( - 4 , 8 )
plt. xlabel( "$x_1$" )
plt. ylabel( "$x_2$" )
plt. title( "연습 문제 8.6.1" )
plt. show( )
🚨 조건부 확률 분포, 주변 확률 분포에 대해 조사할 것!🚨
다변수 정규 분포의 조건부 확률 분포
다변수 정규 분포인 확률 변수 벡터 중 어떤 원소의 값이 주어지면 다른 확률 변수의 조건부 확률 분포는 다변수 정규 분포다.
즉 다변수정규분포 확률밀도함수를 자른 단면은 다변수정규분포가 된다.
예를 들어 확률변수 X X X 의 값 x x x 를 두 벡터 x 1 x_1 x 1 과 x 2 x_2 x 2 로 나누었을 때
x = [ x 1 x 2 ] (8.6.17) x = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \tag{8.6.17} x = [ x 1 x 2 ] ( 8 . 6 . 1 7 )
x 2 x_2 x 2 값이 주어지면(관측되면), X 1 X_1 X 1 만의 확률밀도함수가 다변수정규분포를 이루는 것을 증명하자.
x 1 x_1 x 1 과 x 2 x_2 x 2 에 따라 기댓값벡터도 μ 1 \mu_1 μ 1 과 μ 2 \mu_2 μ 2 로 나뉘어진다.
μ = [ μ 1 μ 2 ] (8.6.18) \mu = \begin{bmatrix} \mu_1 \\ \mu_2 \end{bmatrix} \tag{8.6.18} μ = [ μ 1 μ 2 ] ( 8 . 6 . 1 8 )
공분산행렬 Σ \Sigma Σ 도 다음처럼 나뉘어진다.
Σ = [ Σ 11 Σ 12 Σ 21 Σ 22 ] (8.6.19) \Sigma = \begin{bmatrix} \Sigma_{11} & \Sigma_{12} \\ \Sigma_{21} & \Sigma_{22} \\ \end{bmatrix} \tag{8.6.19} Σ = [ Σ 1 1 Σ 2 1 Σ 1 2 Σ 2 2 ] ( 8 . 6 . 1 9 )
공분산행렬의 역행렬인 정밀도행렬 Λ \Lambda Λ 도 마찬가지로 분할한다.
Λ = Σ − 1 = [ Λ 11 Λ 12 Λ 21 Λ 22 ] (8.6.20) \Lambda = \Sigma^{-1} = \begin{bmatrix} \Lambda_{11} & \Lambda_{12} \\ \Lambda_{21} & \Lambda_{22} \\ \end{bmatrix} \tag{8.6.20} Λ = Σ − 1 = [ Λ 1 1 Λ 2 1 Λ 1 2 Λ 2 2 ] ( 8 . 6 . 2 0 )
이 때 Σ \Sigma Σ 와 Λ \Lambda Λ 가 대칭행렬이므로 Λ 11 \Lambda_{11} Λ 1 1 와 Λ 22 \Lambda_{22} Λ 2 2 도 대칭행렬이고 Λ 12 = Λ 21 \Lambda_{12}=\Lambda_{21} Λ 1 2 = Λ 2 1 이다.
이를 적용하면
( x − μ ) T Σ − 1 ( x − μ ) = ( x 1 − μ 1 ∣ 2 ) T Λ 11 ( x 1 − μ 1 ∣ 2 ) + C ( x 2 , μ , Σ ) (8.6.21) \begin{aligned} &(x-\mu)^T\Sigma^{-1}(x-\mu) = (x_1 - \mu_{1|2})^T\Lambda_{11}(x_1 - \mu_{1|2}) + C(x_2,\mu,\Sigma) \\ \end{aligned} \tag{8.6.21} ( x − μ ) T Σ − 1 ( x − μ ) = ( x 1 − μ 1 ∣ 2 ) T Λ 1 1 ( x 1 − μ 1 ∣ 2 ) + C ( x 2 , μ , Σ ) ( 8 . 6 . 2 1 )
가 된다. 이 식에서 조건부기댓값 μ 1 ∣ 2 \mu_{1|2} μ 1 ∣ 2 는
μ 1 ∣ 2 = μ 1 − Λ 11 − 1 Λ 12 ( x 2 − μ 2 ) (8.6.22) \mu_{1|2} = \mu_1 -\Lambda_{11}^{-1}\Lambda_{12}(x_2-\mu_2) \tag{8.6.22} μ 1 ∣ 2 = μ 1 − Λ 1 1 − 1 Λ 1 2 ( x 2 − μ 2 ) ( 8 . 6 . 2 2 )
이다. C C C 는 x 1 x_1 x 1 을 포함하지 않은 항을 가리키며 다음과 같다.
C = μ 1 T Λ 11 μ 1 − 2 μ 1 T Λ 12 ( x 2 − μ 2 ) + ( x 2 − μ 2 ) T Λ 22 ( x 2 − μ 2 ) − ( x 2 − μ 2 ) T Λ 12 T Λ 11 − 1 Λ 12 ( x 2 − μ 2 ) (8.6.23) \begin{aligned} C &= \mu_1^T\Lambda_{11}\mu_1 -2\mu_1^T\Lambda_{12}(x_2-\mu_2) + (x_2-\mu_2)^T\Lambda_{22}(x_2-\mu_2)\\ & - (x_2-\mu_2)^T \Lambda_{12}^T \Lambda_{11}^{-1}\Lambda_{12}(x_2-\mu_2) \end{aligned} \tag{8.6.23} C = μ 1 T Λ 1 1 μ 1 − 2 μ 1 T Λ 1 2 ( x 2 − μ 2 ) + ( x 2 − μ 2 ) T Λ 2 2 ( x 2 − μ 2 ) − ( x 2 − μ 2 ) T Λ 1 2 T Λ 1 1 − 1 Λ 1 2 ( x 2 − μ 2 ) ( 8 . 6 . 2 3 )
이 식에 지수함수를 적용하면
p ( x 1 ∣ x 2 ) = C ′ exp ( ( x 1 − μ 1 ∣ 2 ) T Λ 11 ( x 1 − μ 1 ∣ 2 ) ) (8.6.24) p(x_1 | x_2) = C' \exp \left( (x_1 - \mu_{1|2})^T\Lambda_{11}(x_1 - \mu_{1|2}) \right) \tag{8.6.24} p ( x 1 ∣ x 2 ) = C ′ exp ( ( x 1 − μ 1 ∣ 2 ) T Λ 1 1 ( x 1 − μ 1 ∣ 2 ) ) ( 8 . 6 . 2 4 )
가 된다. 이 식에서 C ′ = exp C C' = \exp C C ′ = exp C 다.
즉 x 2 x_2 x 2 가 어떤 값으로 주어지면 x 1 x_1 x 1 은 조건부기댓값 μ 1 ∣ 2 \mu_{1|2} μ 1 ∣ 2 와 조건부공분산행렬 Σ 1 ∣ 2 \Sigma_{1|2} Σ 1 ∣ 2 를 가지는 다변수정규분포가 된다. Σ 1 ∣ 2 \Sigma_{1|2} Σ 1 ∣ 2 은 분할행렬의 역행렬공식으로부터 다음과 같다.
Σ 1 ∣ 2 = Λ 11 − 1 = Σ 11 − Σ 12 Σ 22 − 1 Σ 21 (8.6.25) \Sigma_{1|2} = \Lambda_{11}^{-1} = \Sigma_{11} − \Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21} \tag{8.6.25} Σ 1 ∣ 2 = Λ 1 1 − 1 = Σ 1 1 − Σ 1 2 Σ 2 2 − 1 Σ 2 1 ( 8 . 6 . 2 5 )
다변수 정규 분포의 주변 확률 분포
다변수 정규 분포의 주변 확률 분포는 다변수 정규 분포다.
즉 결합확률밀도함수를 어떤 확률변수의 값으로 적분하여 나머지 확률변수의 주변확률분포를 구하면 다변수정규분포이다. 예를 들어 x 1 x_1 x 1 과 x 2 x_2 x 2 로 이루어진 결합 확률밀도함수 p ( x 1 , x 2 ) p(x_1, x_2) p ( x 1 , x 2 ) 를 x 2 x_2 x 2 로 적분하면 x 1 x_1 x 1 의 주변확률분포는 정규분포가 된다.
p ( x 1 ) = ∫ p ( x 1 , x 2 ) d x 2 = N ( x 1 ; μ 1 , Σ 11 ) (8.6.26) p(x_1) = \int p(x_1, x_2) dx_2 = \mathcal{N}(x_1; \mu_1, \Sigma_{11}) \tag{8.6.26} p ( x 1 ) = ∫ p ( x 1 , x 2 ) d x 2 = N ( x 1 ; μ 1 , Σ 1 1 ) ( 8 . 6 . 2 6 )
x 2 x_2 x 2 의 주변확률분포는의 기댓값은 원래 기댓값벡터 중 x 1 x_1 x 1 성분과 같고 공분산행렬은 분할행렬 중 Σ 11 \Sigma_{11} Σ 1 1 성분과 같다. 증명은 생략한다.
연습 문제 8.6.2
2차원 다변수정규분포가 다음과 같은 모수를 가진다고 하자.
μ = [ μ 1 μ 2 ] , Σ = [ σ 1 2 ρ σ 1 σ 2 ρ σ 1 σ 2 σ 2 2 ] (8.6.27) \mu = \begin{bmatrix} \mu_1 \\ \mu_2 \end{bmatrix} ,\;\; \Sigma = \begin{bmatrix} \sigma_1^2 & \rho\sigma_1\sigma_2 \\ \rho\sigma_1\sigma_2 & \sigma_2^2 \\ \end{bmatrix} \tag{8.6.27} μ = [ μ 1 μ 2 ] , Σ = [ σ 1 2 ρ σ 1 σ 2 ρ σ 1 σ 2 σ 2 2 ] ( 8 . 6 . 2 7 )
(1) x 2 x_2 x 2 가 주어졌을 때 x 1 x_1 x 1 의 조건부확률분포함수가 다음과 같음을 보여라.
N ( x 1 ∣ μ 1 + ρ σ 1 σ 2 σ 2 2 ( x 2 − μ 2 ) , σ 1 2 − ( ρ σ 1 σ 2 ) 2 σ 2 2 ) (8.6.28) \mathcal{N} \left(x_1 \; \Big\vert \; \mu_1 + \dfrac{\rho\sigma_1\sigma_2}{\sigma_2^2}(x_2 - \mu_2), \sigma_1^2 - \dfrac{(\rho\sigma_1\sigma_2)^2}{\sigma_2^2} \right) \tag{8.6.28} N ( x 1 ∣ ∣ ∣ ∣ μ 1 + σ 2 2 ρ σ 1 σ 2 ( x 2 − μ 2 ) , σ 1 2 − σ 2 2 ( ρ σ 1 σ 2 ) 2 ) ( 8 . 6 . 2 8 )
✏️
x 2 x_2 x 2 가 주어졌을 때 x 1 x_1 x 1 의 조건부 분포는 x 1 ∣ x 2 ∼ N ( μ 1 ∣ 2 , σ 1 ∣ 2 2 ) x_1 \mid x_2 \sim \mathcal{N}(\mu_{1|2}, \sigma_{1|2}^2) x 1 ∣ x 2 ∼ N ( μ 1 ∣ 2 , σ 1 ∣ 2 2 ) 이다.
조건부 평균 (μ 1 ∣ 2 \mu_{1|2} μ 1 ∣ 2 ) :
μ 1 ∣ 2 = μ 1 + ρ σ 1 σ 2 ( x 2 − μ 2 ) , \mu_{1|2} = \mu_1 + \rho \frac{\sigma_1}{\sigma_2} (x_2 - \mu_2), μ 1 ∣ 2 = μ 1 + ρ σ 2 σ 1 ( x 2 − μ 2 ) ,
여기서 ρ \rho ρ 는 x 1 x_1 x 1 과 x 2 x_2 x 2 사이의 상관계수이며, ρ = Cov ( x 1 , x 2 ) σ 1 σ 2 \rho = \frac{\text{Cov}(x_1, x_2)}{\sigma_1\sigma_2} ρ = σ 1 σ 2 Cov ( x 1 , x 2 ) 이다.
조건부 분산 (σ 1 ∣ 2 2 \sigma_{1|2}^2 σ 1 ∣ 2 2 ) :
σ 1 ∣ 2 2 = σ 1 2 ( 1 − ρ 2 ) . \sigma_{1|2}^2 = \sigma_1^2 (1 - \rho^2). σ 1 ∣ 2 2 = σ 1 2 ( 1 − ρ 2 ) .
이를 정리하면 식 (8.6.28)과 같아진다.
한편 조건부 평균과 분산을 이용하면, 조건부 확률 밀도 함수는 다음과 같다.
f ( x 1 ∣ x 2 ) = 1 2 π σ 1 ∣ 2 2 exp ( − ( x 1 − μ 1 ∣ 2 ) 2 2 σ 1 ∣ 2 2 ) f(x_1 \mid x_2) = \frac{1}{\sqrt{2\pi \sigma_{1|2}^2}} \exp\left( -\frac{(x_1 - \mu_{1|2})^2}{2\sigma_{1|2}^2} \right) f ( x 1 ∣ x 2 ) = 2 π σ 1 ∣ 2 2 1 exp ( − 2 σ 1 ∣ 2 2 ( x 1 − μ 1 ∣ 2 ) 2 )