행렬과 선형대수의 이해 Part II


Topics:


  • Part I

    • 벡터 / 행렬 / 기본연산 / 선형결합

    • transpose / trace

    • 단위행렬 / 대칭행렬

    • 선형방정식

    • 행렬식

    • 선형독립 / rank

    • 역행렬


  • Part II

    • eigenvalue / eigenvector

    • spectral decomposition

    • quadratic form / pd / nnd

    • projection / idempotency

    • partitioned matrix




Scopes of this material



  • part II 에 대한 설명

    • 개념의 의미를 설명함

    • 수치적인 예를 제시함



2. Part II


2.1 행렬의 특성, 변환과 분해법과 표준형


  • 특성, 변환, 분해법, 표준형 사이의 관계 :

    • 행렬이 가진 특정한 특성의 동일성을 보기 위하여,

      행렬을 변환하고, 그 과정을 행렬을 분해하는 형태로 표현하기도 하고, 
      
      그 표현 중 특정한 형태를 표준형으로 규정하게 되므로
      
      행렬의 변환법, 분해법, 표준형 이라는 용어는 서로 밀접하게 관련되어 있다



  • 행동치 row equivalence : [wiki]

    • 가우스 소거법을 적용하여 행단위로 변환할 수 있는 행렬들을 행동치로 설정

    • 행동치 관계인 행렬들은 해가 동일한 선형방정식을 만들게 됨

  • 동치 equivalence : [wiki]

    • 행동치와 열동치 개념을 동시 적용함

    • 동치관계인 행렬들은 동일한 rank 를 가짐

  • 닯음분해 similarity : [wiki]

    • 정방행렬을 대상으로 하여, 행렬의 대각화를 위하여

    • 행렬의 고유값고유벡터를 구하기 위한 과정

  • 직교닮음 분해 orthogoanl similarity :

    • 대칭행렬의 경우에 대한 닮음분해. 대칭행렬의 고유값과 고유벡터를 구하기 위한 과정

    • 스펙트럴 분해법을 행렬에 적용하는 경우와 동일한 결과

    • 닮음 similarity 와 합동성 congruence 이 동시에 만족되는 경우

  • 특이값 분해 singular value decomposition : [wiki]

    • 정방행렬에 대하여 적용되는 닮음분해의 개념을 비정방행렬의 경우로 확장한 방법



  • 기타 많은 수의 행렬 분해법과 표준형이 사용되고 있음. [wiki]

    • 선형방정식 관련 : LU / Cholesky / QR …

    • 고유값 관련 : Jordan / Schur …




2.2 행렬의 대각화


  • 정방행렬을 대각행렬로 변환하는 방법

  • 대각행렬 계산의 편리성 :

    • 예를 들어, \(D = \begin{pmatrix} d_1 & 0 & 0 \\ 0 & d_2 & 0 \\ 0 & 0 & d_3 \end{pmatrix}\) 라 하자

    • 만약 \(D^5\) 을 계산할 필요가 있다면, 대각행렬의 경우 행렬의 곱셈을 5번 하지 않고서도

    • \(D^5 = \begin{pmatrix} d_1^5 & 0 & 0 \\ 0 & d_2^5 & 0 \\ 0 & 0 & d_3^5 \end{pmatrix}\) 을 쉽게 얻을 수 있다.

    • 이와 같은 대각행렬의 특성을 이용하여, 효과적으로 비대각행렬의 계산을 수행하는 방법을 생각해 보자


  • 대각행렬의 특징 :

    • 여기서, \(\mathbf{u}_1 =\begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix}\), \(\mathbf{u}_2 =\begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}\), \(\mathbf{u}_3 =\begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}\) 라 하면,

    • \(k=1,2,3\) 에 대하여, 식 \(D \, \mathbf{u}_k = d_k \mathbf{u}_k\) 이 만족된다


  • (정방)행렬 \(A\)의 고유값 eigenvalue, 고유벡터 eigenvector,

    • \(A \mathbf{u} = d \, \mathbf{u}\) 을 만족하는 값 \(d\)와 벡터 \(\mathbf{u}\) 가 있다

    • 고유값 : 위 식을 만족하는 값 \(d\) (실수 혹은 복소수)

    • 고유벡터 : 영벡터가 아니면서,위 식을 만족하는 벡터 \(\mathbf{u}\)




  • 예, \(A = \left( \begin{array}{rrr} 2 & 2 & 0 \\ 2 & 1 & 1 \\ -7 & 2 & -3 \end{array} \right)\) 의 경우

    • 고유값 : \(d_1 = 1\), \(d_2 = 3\), \(d_3 = -4\)

    • 고유벡터 : \(\mathbf{u}_1 =\left( \begin{array}{r} -2 \\ 1 \\ 4 \end{array} \right)\), \(\mathbf{u}_2 =\left( \begin{array}{r} -2 \\ -1 \\ 2 \end{array} \right)\), \(\mathbf{u}_3 = \left( \begin{array}{r} 1\\ -3 \\ 13 \end{array} \right)\)

    • \(A \, \mathbf{u}_k = d_k \mathbf{u}_k , \quad k=1,2,3\)

    • \(\mathbf{u}= -1 \, \mathbf{u}_1 + 2 \, \mathbf{u}_2\) 이면, \(A \, \mathbf{u}= (-1)\, (1) \, \mathbf{u}_1 + (2) \, (3) \, \mathbf{u}_2\)

    • \({A^2 \mathbf{u}_3 = A \left( A \mathbf{u}_3 \right) = A \left( (-4) \mathbf{u}_3 \right) = (-4) \, A \mathbf{u}_3 = (-4)^2 \,\mathbf{u}_3 }\) 이므로,

    • \(A^2\)의 고유값과 고유벡터 : \(d_k^2\), \(\mathbf{u}_k\), \(k=1,2,3\)


  • 고유벡터 행렬 \(U\), 고유값 대각행렬 \(D\)

    • \(U\) : 고유벡터를 열벡터로 구성한 행렬,

    • \(D\) : 고유벡터의 순서에 따라 대응하는 고유값을 대각원소로 배치한 대각행렬

    • \(A \mathbf{u} = d \, \mathbf{u}\)인 관계를 행렬 형태로 표현하면, \(AU = UD\)

    • 위의 예에서, \(U=\left( \begin{array}{rrr} -2& -2& 1\\ 1& -1& -3\\ 4& 2& 13\end{array} \right)\), \(D= \left( \begin{array}{rrr} 1 & 0& 0\\0 & 3& 0\\0 & 0& -4\end{array} \right)\)




  • 행렬의 닮음 표준형 similar canonical form : \(\quad AU=UD\)

    • \(U\) 의 역행렬이 존재하면, \(A = UDU^{-1}\) 로 표현됨.

    • \(U\) 의 역행렬이 존재하지 않는 경우, \(A\) 를 deficient 행렬, defective 행렬이라 함.

    • 다음의 경우에는 \(U\) 의 역행렬이 존재함이 증명되어 있음

      • 고유값이 모두 다른 실수인 경우

      • \(A\) 가 대칭행렬인 경우


  • 행렬 \(A\) 가 deficient 행렬이 아니고, \(A = UDU^{-1}\) 와 같이 표현되면,

    • \(A^2 = U D U^{-1} U D U^{-1}= U D^2 U^{-1}\)

    • 이를 일반화 하면, \(A^c = U D^c U^{-1}\), 여기서 \(c\) 는 음수가 아닌 모든 정수.

    • 즉, \(A^3 = U D^3 U^{-1}\) 이 됨.

    • 이 때, \(D\)는 대각행렬이므로, \(D^3\) 은 고유값의 3제곱 값을 대각원소로 배치한 행렬.

    • \(A+3A^2\) 은 마찬가지로 \(U \left(D+3D^2\right) U^{-1}\) 으로 표현됨.

    • \(\exp(x)=1+x +x^2/2 +x^3 /3 + \cdots\) 이므로,

    • \(\exp(A)=U \left(I+D +D^2/2 + \cdots \right)U^{-1}\) 이고, 결국 \(\exp(A)=U \, \exp(D) \, U^{-1}\) 임.

    • 여기서 \(\exp(D)\) 은 대각원소에 고유값 \(d_k\) 들에 대하여 \(\exp(d_k)\) 를 계산한 값을 배치한 대칭행렬.

    • 만약 고유값이 0이 아니면, \(A^{-1} = U D^{-1} U^{-1}\) 임.

    • 만약, 모든 고유값이 양수라면, \(c\) 는 모든 실수로 확장할 수 있음.

    • 즉, \(A^{1/2} = U D^{1/2} U^{-1}\) 라고 할 수 있음 ( 말하자면, \(\sqrt{A}\) 를 구할 수 있음).


A= t(matrix(c(2,2,0, 2,1,1,-7, 2, -3),3,3))

u1 = matrix(c(-2, 1, 4), ncol=1)
u2 = matrix(c(-2, -1, 2), ncol=1)
u3 = matrix(c(1, -3, 13), ncol=1)
u =  -1*u1 + 2*u2

A
##      [,1] [,2] [,3]
## [1,]    2    2    0
## [2,]    2    1    1
## [3,]   -7    2   -3
cbind(u1, u2, u3, u)
##      [,1] [,2] [,3] [,4]
## [1,]   -2   -2    1   -2
## [2,]    1   -1   -3   -3
## [3,]    4    2   13    0
cbind(A %*% u1,  A %*% u2,  A %*% u3, A %*% u, (-1)*(1)*u1+(2)*(3)*u2 )
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   -2   -6   -4  -10  -10
## [2,]    1   -3   12   -7   -7
## [3,]    4    6  -52    8    8
( D=diag(c(1,3,-4)) )
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    3    0
## [3,]    0    0   -4
( U=cbind(u1,u2,u3) )
##      [,1] [,2] [,3]
## [1,]   -2   -2    1
## [2,]    1   -1   -3
## [3,]    4    2   13
A %*% A  %*%  A          # A^3
##      [,1] [,2] [,3]
## [1,]   14   26    0
## [2,]   26    1   13
## [3,]  -91   26  -51
U %*%  diag( c(1,3,-4)^3 )   %*%  solve(U)  
##      [,1] [,2]          [,3]
## [1,]   14   26  4.440892e-16
## [2,]   26    1  1.300000e+01
## [3,]  -91   26 -5.100000e+01
solve(A)                 # A^{-1}
##             [,1] [,2]       [,3]
## [1,]  0.41666667 -0.5 -0.1666667
## [2,]  0.08333333  0.5  0.1666667
## [3,] -0.91666667  1.5  0.1666667
U %*%  diag( c(1,3,-4)^{-1} )   %*%  solve(U)
##             [,1] [,2]       [,3]
## [1,]  0.41666667 -0.5 -0.1666667
## [2,]  0.08333333  0.5  0.1666667
## [3,] -0.91666667  1.5  0.1666667
exp(A)                   #  What ? Why ?   Don't confuse of vector operation in R.
##             [,1]     [,2]       [,3]
## [1,] 7.389056099 7.389056 1.00000000
## [2,] 7.389056099 2.718282 2.71828183
## [3,] 0.000911882 7.389056 0.04978707
U %*%  diag( exp(c(1,3,-4)) )   %*%  solve(U)
##            [,1]      [,2]      [,3]
## [1,]  14.892038  15.04050  2.326753
## [2,]   6.896868   9.69854  1.703370
## [3,] -15.413716 -12.88053 -1.768444
eigen(A)
## eigen() decomposition
## $values
## [1] -4  3  1
## 
## $vectors
##             [,1]       [,2]       [,3]
## [1,]  0.07474351 -0.6666667 -0.4364358
## [2,] -0.22423053 -0.3333333  0.2182179
## [3,]  0.97166562  0.6666667  0.8728716
unit.vector <- function(u) { u/sqrt(sum(u*u))}

cbind(unit.vector(u3), unit.vector(u2), unit.vector(u1))
##             [,1]       [,2]       [,3]
## [1,]  0.07474351 -0.6666667 -0.4364358
## [2,] -0.22423053 -0.3333333  0.2182179
## [3,]  0.97166562  0.6666667  0.8728716




2.3 Quadratic form 2차 형식


  • 대칭행렬을 이용하여, 다변수 2차함수를 표현하는 방법


  • 2차 형식 : \(\quad Q(A) = \mathbf{x} ' A \mathbf{x}\)

    • \(\mathbf{x}=(x_1, \ldots, x_p)'\) 라고 하고, \(A_{p \times p}\) 이면,

    • 2차 형식 \(Q(A)\) 를 통하여, \(\mathbf{x}=(x_1, \ldots, x_p) '\) 에 대한 2차 함수 표현이 가능하다.

  • 2차 형식에 사용되는 행렬 \(A\)대칭행렬이라 본다.

    • 임의의 행렬 \(B\) 에 대하여, \(A=(B+B')/2\) 라 하면, \(A\) 는 대칭이고, \(Q(A)=Q(B)\) 이다.


  • 양수 비음수 개념의 행렬로의 확장

    • 비음수 : ‘실수 \(a\)가 비음수’ \(~\Leftrightarrow~\) ‘모든 \(x\) 에 대하여, \(ax^2 \ge 0\)

    • 양수 : ‘실수 \(a\)가 양수’ \(~\Leftrightarrow~\) ‘0 아닌 모든 \(x\) 에 대하여, \(ax^2 >0\)

    • 행렬 \(A\)는 비음정치 행렬 \(~\Leftrightarrow~\) 임의의 \(\mathbf{x}\) 에 대하여, \(Q(A) \ge 0\)

    • 행렬 \(A\)는 양정치 행렬 \(~\Leftrightarrow~\) 영벡터가 아닌 임의의 \(\mathbf{x}\) 에 대하여, \(Q(A) > 0\)


  • 양정치 행렬의 역행렬은 양정치 행렬이다. (why ?)

  • 어떤 행렬 \(A\)에 대하여, \(A'A\) 형태로 주어지는 행렬은 대칭행렬이다.

  • 어떤 행렬 \(A\)에 대하여, \(A'A\) 형태로 주어지는 행렬은 비음정치 행렬이다.

  • 행렬 \(A\) 의 열벡터가 모두 선형독립이면, \(A'A\)은 양정치 행렬이다.(why ?)



  • 예: 다음에서 \(A\) 는, 고유값이 모두 양수인 경우로 양정치 행렬이다.


( A <- matrix(c(2,-1,-1,2),2,2))
##      [,1] [,2]
## [1,]    2   -1
## [2,]   -1    2
egnA<- eigen(A)

egnA
## eigen() decomposition
## $values
## [1] 3 1
## 
## $vectors
##            [,1]       [,2]
## [1,] -0.7071068 -0.7071068
## [2,]  0.7071068 -0.7071068


  • 양정치 행렬 \(A\) 의 2차 형식에 대한 3차원 그림 (아래로 볼록한 특성을 보임).


library(plotly, warn.conflicts = FALSE, quietly=TRUE)

Q <- function(xx){ t(xx) %*% A %*% xx }

x1sn <- seq(-2,2, l=41)
x2sn <- seq(-2,2, l=41) 

ss <- expand.grid(x1=x1sn, x2=x2sn)

Q1 <- apply( ss, 1, Q)

# Q1[abs(ss$x1-ss$x2)>2] <- NA

Q <- t(matrix(Q1, ncol=41 ))

# Q[Q>4]<-NA

pp <- plot_ly(z=~Q,x=x1sn, y=x2sn) %>% 
      
      add_surface(showscale=FALSE, 
                  contours = list(z = list(show=TRUE,
                                           usecolormap=TRUE,
                                           highlightcolor="#ff0000",
                                           project=list(z=TRUE)
                                          )
                                  )
                  )              

pp %>% layout(title="Quadratic form with a positive definite matrix", 
              scene=list(xaxis=list(title="x1",range=c(-3,3)), yaxis=list(title="x2",range=c(-3,3)))
              )




2.4 Spectral decomposition


  • 대칭행렬을 대각화하는 방법


  • 직교닮음 표준형 : \(\quad A=UD U'\) (여기서 \(A\)는 대칭행렬)

    • 행렬의 닮음 표준형 \(AU=UD\) 표현에서, 실수 대칭행렬의 경우 \(U^{-1}\) 이 존재한다.

    • 이 경우, \(A=UD U^{-1}\) 라고 표현이 가능하고,

    • \(A\) 가 대칭행렬이므로, \(UDU^{-1} = A = A'= (U^{-1})' D U'\) 인 관계가 성립한다.

    • \(U^{-1} = U'\) 인 경우, 이 조건을 만족한다. 즉, \(A=UD U'\) 이다.

    • \(U'\)\(U\)의 역행렬이 되는 경우이므로, \(U'U = UU' =I\) (단위행렬)이라는 의미이고,

    • 단위행렬의 비대각 원소는 0 이고 대각원소는 1이므로,

    • \(j\neq k\) 일 때, \(\mathbf{u}_j ' \mathbf{u}_k =0\) 이고, \(\mathbf{u}_k ' \mathbf{u}_k = 1\) 이라는 의미이다.

    • 이는 \(U\) 의 모든 열벡터의 길이(norm)는 1이고, 서로 간에 직교한다는 의미이다.

    • 즉, \(U\)가 직교행렬이라는 의미다.

    • 이 경우, 즉, \(U^{-1} = U'\) 일 때, \(A=UD U'\) 를 직교닮음 표준형 표현이라고 한다.



  • 스펙트럴 분해법 (\(A\) 는 대칭행렬) :

    • 고유값과 고유벡터를 이용하여 \(A =\sum_k d_k \mathbf{u}_k \mathbf{u}_k '\) 와 같이 표현되고,

    • 앞서와 마찬가지로, \(A^c =\sum_k d_k^c \mathbf{u}_k \mathbf{u}_k '\) 이다. 여기서 \(c\) 는 비음인 정수

    • 만약 모든 고유값 \(d_k\) 가 0이 아니라면, \(A^{-1} =\sum_k d_k^{-1} \mathbf{u}_k \mathbf{u}_k '\) 가 성립함.

    • 만약 모든 고유값 \(d_k\) 가 양수라면, \(A^{1/2} =\sum_k d_k^{1/2} \mathbf{u}_k \mathbf{u}_k '\) 가 성립함.


( A <- matrix(c(9,-5,2,-5,9,2,2,2,2),ncol=3) )
##      [,1] [,2] [,3]
## [1,]    9   -5    2
## [2,]   -5    9    2
## [3,]    2    2    2
( d<- eigen(A)$values )   # ill conditioned matrix
## [1] 1.400000e+01 6.000000e+00 1.065814e-14
( U <- eigen(A)$vectors )
##            [,1]      [,2]       [,3]
## [1,]  0.7071068 0.5773503 -0.4082483
## [2,] -0.7071068 0.5773503 -0.4082483
## [3,]  0.0000000 0.5773503  0.8164966
round( t(U) %*% U , 12)
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1
u1<- U[,1]; u2<- U[,2]; u3 <- U[,3]

u1 %*% t(u1)
##      [,1] [,2] [,3]
## [1,]  0.5 -0.5    0
## [2,] -0.5  0.5    0
## [3,]  0.0  0.0    0
# check spectral decompsition

d[1]*u1 %*% t(u1) + d[2]*u2 %*% t(u2) + d[3]*u3 %*% t(u3)
##      [,1] [,2] [,3]
## [1,]    9   -5    2
## [2,]   -5    9    2
## [3,]    2    2    2



2.5 고유값과 다른 값들의 관계


  • 양정치 행렬 \(~\Leftrightarrow~\) 모든 고유값들이 양수

  • 양정치 행렬의 역행열도 양정치 행렬이다 (역행렬의 고유값은 역수)

  • 비음정치 행렬 \(~\Leftrightarrow~\) 모든 고유값들이 비음이다.

  • 행렬식의 값은, 고유값들의 곱과 같다 (why ?)

  • 행렬의 rank 는 0 아닌 고유값의 개수와 같다

  • 행렬의 대각원소의 합 trace 는, 고유값의 합과 같다

    • \(A=UDU^{-1}\) 이라 하자, \(tr(A) = tr(UDU^{-1})=tr(DUU^{-1}) =tr(D)\)




2.6 선형방정식의 해와 정규방정식의 해


  • 행렬 \(X_{n \times k}\)\(n\) 차원 벡터 \(\mathbf{y}\) 가 주어져 있을 때, 선형방정식 \(X \mathbf{b} = \mathbf{y}\) 의 해 \(\mathbf{b}\) :

    • \(\mathbf{y} \in Col(X)\) 이면, 일반해는 \(\mathbf{b}= X^{-} \mathbf{y} +(I-X^{-}X) \mathbf{z}, ~~ \mathbf{z} \in I\!\!R^k\) 이다

    • \(\mathbf{y} \not\in Col(X)\) 이면, 해가 없고 근사해를 구할 수 있다.

  • 선형방정식 \(X \mathbf{b} = \mathbf{y}\) 에 대한 최소자승법에 의한 근사해 \(\mathbf{b}\) 는,

    • 정규방정식 \(X' X \mathbf{b} = X' \mathbf{y}\) 으로부터 구한다

    • \(X' \mathbf{y} \in Col(X')\) 이므로, 정규방정식의 해는 항상 존재한다

  • 정규방정식 \(X' X \mathbf{b} = X' \mathbf{y}\) 에서,

    • 행렬 \(X\)의 열벡터들이 모두 선형독립이면 ( \(X\) 가 full column rank 이면),

      • \((X'X)^{-1}\) 이 (유일하게) 존재하고, \((X'X)^{-1}=(X'X)^{-}\) 이다.

      • 정규방정식의 해는, \(\mathbf{b} = (X'X)^{-1} X' \mathbf{y}\) 로 유일하다

    • 행렬 \(X\)의 열벡터들이 선형독립이 아니면,

      • 일반해는 \(\mathbf{b}= (X'X)^{-} X'\mathbf{y} +(I-(X'X)^{-}X'X) \mathbf{z}, ~~ \mathbf{z} \in I\!\!R^k\) 이다

      • \((X'X)^{-}\)은 존재하고(유일하지 않음), 그 선택에 따라 일반해 \(\mathbf{b}\) 도 다양한 값이 될 수 있다

      • 그러나 모든 일반해에 대하여 \(X \mathbf{b}\)는 동일한 값이다

      • 인공신경망의 특성을 이해하는 데 있어서 이 점이 매우 중요함



  • 참고 1: 일반화 역행렬 \((X'X)^{-}\) 의 성질

    • \(G=(X'X)^{-}~\) 일 때, 전치행렬 \(~G'~\)\(~X'X~\)의 일반화 역행렬이다

    • \((X'X)(X'X)^{-}(X'X) = (X'X)\) 이다

    • \(X(X'X)^{-}(X'X) = X\) 이다. 즉, \((X'X)^{-}X' = X^{-}\) 이다. (참고 2 이용) (why ?)

    • \(X(X'X)^{-}X'\) 는 불변이다. 즉, \((X'X)^{-}\) 의 선택에 영향을 받지 않고 동일하다 (why?)

    • \(X(X'X)^{-}X'\) 는 대칭행렬이다 (\(~(X'X)^{-}~\)는 대칭이 아닐 수 있지만 )


  • 참고 2: \(PX' X = Q X'X\) \(~\Longrightarrow~\) \(PX'= Q X'\) 에 대한 증명

    • \((PX'X -QX'X) (P' -Q') = (PX' -QX')(PX' -QX')'\)

    • \(A'A=\mathbf{0} ~~\Rightarrow~~ A=\mathbf{0}\)




2.7 사영행렬


  • 사영행렬: 행렬 \(P\) 가 다음 두 조건을 만족하면 사영행렬이라 한다.

    • 대칭성 symmetricity : \(P=P'\)

    • 멱등성 idempotency : \(P=P^2\)

  • 멱등성의 의미: 두 번 사영을 한 이미지는 한 번 사영한 것과 동일하다

  • 사영의 직교성 :

    • \(0 = P-P^2 = P(I-P) = P' (I-P)\) 이고, \(\mathbf{y}' P' (I-P)\mathbf{y}=0\) 이므로

    • 이미지 벡터 \(P\mathbf{y}\) 와 잔차 벡터 \((I-P)\mathbf{y}\) 는 직교한다

  • 사영행렬의 고유값은, 0 혹은 1 이다.

    • \(P\mathbf{u} =d \mathbf{u}\) 이고, \(P^2\mathbf{u}= d \, P \mathbf{u} = d^2 \mathbf{u}\) 이고, \(P=P^2\) 이므로

    • (영벡터가 아닌) 고유벡터 \(\mathbf{u}\)에 대하여, \(d \mathbf{u}= d^2 \mathbf{u}\) 이므로, \(d^2=d\) 이고, \(d=0,1\) 임.

  • 사영행렬 \(P\)에 대하여, \(trace(P)=rank(P)\) 이다. (why?)

  • \(P=X(X'X)^{-} X'\) 일 때,

    • 행렬 \(P_{n \times n}\) 는 대칭성과 멱등성을 만족하여 사영행렬이 된다.

    • \(P\) 의 이미지 공간은 행렬 \(X\)의 열공간이다. 즉, \(P\mathbf{y} \in Col(X)\)

    • \(rank(P)=rank(X)\) 이다.

    • \(P_{n \times n}\) 일 때, \(rank(I-P)=n-rank(X)\) 이다.

  • 행렬 \(X\) 가 full column rank 라면,

    • \(rank(X_{n \times k})=rank(X'X)=k\) 이고(why?),

    • \(P=X(X'X)^{-} X' = X(X'X)^{-1} X'\) 임.(why?)


  • 모자행렬 hat matrix

    • 보통 (열)벡터 \(~\mathbf{y}~\) 를 사영하여 얻은 결과를 \(~\hat{\mathbf{y}}~\) 으로 표현한다. 즉, \(~\hat{\mathbf{y}}= P \mathbf{y}~\) 이다

    • 사영행렬 \(P_{n \times n}\)\(\mathbf{y}\) 에 모자(hat) 를 씌워 \(\hat{\mathbf{y}}\) 을 만들게 되므로,

      사영행렬을 다른 이름으로 hat matrix 라고 부르고, \(P\) 대신 \(H\) 라는 기호로 나타내기도 함

    • hat matrix (사영행렬)에는 \(n\) 개의 대각원소들이 있고 이를 hat values 라고 함.

      행렬 \(X_{n \times k}\) 에는, \(n\) 개의 \(k\) 차원의 행벡터가 들어 있음.

      \(n\) 개의 \(k\) 차원 행벡터 중, 다른 벡터들과 멀리 떨어진 값을 갖는 경우,

      대응하는 hat value 가 다른 경우들 보다 큰 값을 갖게 됨.




  • 사영행렬 계산 예 :

    • trees 데이터는 31 개의 체리나무에 대한 측정 자료이다

    • 아래에서는, 간단한 예로, trees 자료의 앞 부분 8개의 관측값으로 구성된 행렬 \(X\) 로부터

    • 사영행렬 \(P\) 를 얻고, 대칭성과 멱등성이 만족되는 지를 시험해 본다.


X <-   as.matrix(trees[1:8,]); X
##   Girth Height Volume
## 1   8.3     70   10.3
## 2   8.6     65   10.3
## 3   8.8     63   10.2
## 4  10.5     72   16.4
## 5  10.7     81   18.8
## 6  10.8     83   19.7
## 7  11.0     66   15.6
## 8  11.0     75   18.2
P = X %*% solve(t(X) %*%  X ) %*% t(X)  # projection matrix

round(P,5)
##          1        2        3        4        5        6        7        8
## 1  0.52038  0.33821  0.26144 -0.01295  0.09670  0.09447 -0.20415 -0.08199
## 2  0.33821  0.30104  0.29559  0.05227 -0.00573 -0.03988  0.06398 -0.01436
## 3  0.26144  0.29559  0.32597  0.08237 -0.06468 -0.11726  0.19777  0.01252
## 4 -0.01295  0.05227  0.08237  0.17247  0.12735  0.12473  0.25112  0.19546
## 5  0.09670 -0.00573 -0.06468  0.12735  0.33424  0.39250 -0.06254  0.18647
## 6  0.09447 -0.03988 -0.11726  0.12473  0.39250  0.46767 -0.12384  0.19935
## 7 -0.20415  0.06398  0.19777  0.25112 -0.06254 -0.12384  0.63368  0.25484
## 8 -0.08199 -0.01436  0.01252  0.19546  0.18647  0.19935  0.25484  0.24455
all.equal(P,t(P))       # checking symmetricity
## [1] TRUE
all.equal(P %*% P, P)   # checking idempotency 
## [1] TRUE




  • 수치 오차에 의한 대칭성의 상실

    • 이론적으로는 당연히 대칭행렬이 되어야 하는 경우이지만,

    • 막상 계산 과정에서, 수치 오차가 발생하여, 행렬의 대칭성이 깨질 수도 있다.


  • 대칭성 상실의 효과

    • 행렬의 대칭성이 깨지게 되면, 예를 들어, 이후 고유값을 구하는 과정에서

    • 실수인 고유값이 나와야 함에도, 고유값이 복소수가 되어

    • 후속 계산이 불가능해지는 경우와 같은 문제가 발생하기도 한다.


  • 대칭성 복구

    • 이런 경우 원래의 행렬 \(A\) 를 사용하는 대신

    • \((A+A')/2\) 를 사용하여 대칭성을 복구할 수 있다.


  • 힐버트 행렬에서의 대칭성 상실

    • 아래의 예에서는, 크기가 4인 힐버트 행렬, 크기가 11인 힐버트 행렬에 대하여

    • 역행렬을 구하여 그 역행렬들의 대칭성을 시험해 본다.

    • 두 경우 모두 대칭행렬이 되어야 하지만, 크기가 11인 힐버트 행렬의 경우

    • 수치오차로 인하여 대칭성이 깨진 것으로 나타난다.

    • 이 경우 대칭화 변환을 통하여, 대칭성을 복구할 수 있다


# 'symmetric matrix' may not be symmetric in computing

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }

H4 <- hilbert(4) 
iH4 <- solve(H4)
M <- iH4[1:4,1:4] ; M
##      [,1]  [,2]  [,3]  [,4]
## [1,]   16  -120   240  -140
## [2,] -120  1200 -2700  1680
## [3,]  240 -2700  6480 -4200
## [4,] -140  1680 -4200  2800
all.equal(M,t(M))
## [1] TRUE
H11 <- hilbert(11) 
iH11 <- solve(H11)
M <- iH11[1:4,1:4] ; M
##               [,1]          [,2]          [,3]        [,4]
## [1,]      120.9175     -7251.294      141342.6    -1318762
## [2,]    -7251.2918    579881.054   -12717294.3   126576692
## [3,]   141342.4750 -12717291.722   297519276.8 -3084834612
## [4,] -1318760.5400 126576660.825 -3084834543.5 32900801617
all.equal(M,t(M)) 
## [1] "Mean relative difference: 3.213717e-08"
S <- (M+t(M))/2   # giving symmetricity 

all.equal(S,t(S))
## [1] TRUE




2.8 분할행렬 partitioned matrix


  • 다음에서 행렬 \(Q\) 는 분할된 행렬 \(A, B, C, D\) 로 이루어진 행렬이다


\(\qquad \qquad \qquad Q = \begin{pmatrix} A & B \\ C & D \end{pmatrix}\)


  • 행렬 \(A\)\(M=D-C A^{-1} B\) 의 역행렬이 존재하는 경우 :

\(\qquad \qquad \qquad Q^{-1}=\begin{pmatrix} A^{-1}+A^{-1} B M^{-1} C A^{-1} & - A^{-1} B M^{-1} \\ - M^{-1} C A^{-1} & M^{-1} \end{pmatrix}\)


  • 행렬 \(D\)\(W=A-B D^{-1} C\) 의 역행렬이 존재하는 경우 :

\(\qquad \qquad \qquad Q^{-1}=\begin{pmatrix} W^{-1} & - W^{-1} B D^{-1} \\ - D^{-1} C W^{-1} & D^{-1} + D^{-1} C W^{-1} B D^{-1} \end{pmatrix}\)


  • 위 두 경우로부터 : Woodbury 행렬등식. 참고 1:[wiki], 참고 2:[wiki]


\(\qquad \qquad \qquad (A-B D^{-1} C)^{-1} = A^{-1}+A^{-1} B (D-C A^{-1} B )^{-1} C A^{-1}\)



  • 역행렬 \(Q^{-1}\) 를 얻는 과정 : 분할행렬 단위 행동치 관계 이용


\(\qquad \qquad \qquad \begin{pmatrix} A & B & |& I & \mathbf{0} \\ C & D & |& \mathbf{0} & I \end{pmatrix}\)


\(\qquad \qquad \qquad ~~\approx ~~ \begin{pmatrix} I & A^{-1} B & | & A^{-1} & \mathbf{0} \\ \mathbf{0} & D-C A^{-1} B & | & - C A^{-1} & I \end{pmatrix}\)


\(\qquad \qquad \qquad ~~\approx ~~ \begin{pmatrix} I & \mathbf{0}& | & A^{-1}+A^{-1} B M^{-1} C A^{-1} & - A^{-1} B M^{-1} \\ \mathbf{0} & I & | & - M^{-1} C A^{-1} & M^{-1} \end{pmatrix}\)