[선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector)

수학 이야기 2013.10.16 14:35

선형대수학에서 고유값(eigenvalue)과 고유벡터(eigenvector)가 중요하다고 하는데 왜 그런 것인지 개인적으로도 참 궁금합니다. 고유값, 고유벡터에 대한 수학적 정의 말고 이런 것들이 왜 나왔고 그 본질이 무엇인지에 대한 직관이 있으면 좋을텐데요..


아직은 딱히 이것 때문이다라고 결론지을 수는 없지만 고유값, 고유벡터 그 자체의 활용보다는 SVD(특이값분해), Pseudo-Inverse, 선형연립방정식의 풀이, PCA(주성분분석) 등의 주요 응용이 eigenvalue, eigenvector를 그 밑바탕에 깔고 있기 때문은 아닌가 생각하고 있습니다.


이 글에서는 먼저 고유값, 고유벡터 자체에 대한 개념만 살펴보고 SVD, 선형연립방정식, PCA 등에 대해서는 별도 글로 자세하게 다룰 예정입니다.



1. 고유값, 고유벡터란?


고유값(eigenvalue), 고유벡터(eigenvector)에 대한 수학적 정의는 비교적 간단하다.


행렬 A를 선형변환으로 봤을 때, 선형변환 A에 의한 변환 결과가 자기 자신의 상수배가 되는 0이 아닌 벡터를 고유벡터(eigenvector)라 하고 이 상수배 값을 고유값(eigenvalue)라 한다.


즉, n x n 정방행렬(고유값, 고유벡터는 정방행렬에 대해서만 정의된다) A에 대해 Av = λv를 만족하는 0이 아닌 열벡터 v를 고유벡터, 상수 λ를 고유값이라 정의한다.


 ---(1)


--- (2)


좀더 정확한 용어로는 λ는 '행렬 A의 고유값', v는 '행렬 A의 λ에 대한 고유벡터'이다.


즉, 고유값과 고유벡터는 행렬에 따라 정의되는 값으로서 어떤 행렬은 이러한 고유값-고유벡터가 아에 존재하지 않을수도 있고 어떤 행렬은 하나만 존재하거나 또는 최대 n개까지 존재할 수 있다.



2. 기하학적 의미


기하학적으로 봤을 때, 행렬(선형변환) A의 고유벡터는 선형변환 A에 의해 방향은 보존되고 스케일(scale)만 변화되는 방향 벡터를 나타내고 고유값은 그 고유벡터의 변화되는 스케일 정도를 나타내는 값이다.



예를 들어 지구의 자전운동과 같이 3차원 회전변환을 생각했을 때, 이 회전변환에 의해 변하지 않는 고유벡터는 회전축 벡터이고 그 고유값은 1이 될 것이다.



3. 고유값분해를 이용한 대각화 - eigendecomposition


고유값, 고유벡터는 정방행렬의 대각화와 밀접한 관련이 있다 (eigendecomposition은 정방행렬에 대해서만 가능함)


먼저 대각행렬과의 행렬곱에 대해 살펴보면, 대각행렬을 뒤에 곱하면 행렬의 열벡터들이 대각원소의 크기만큼 상수배가 된다(뒤에 곱하면 행벡터들이 상수배가 된다). 예를 들어, 3 x 3 행렬의 경우를 보면 다음과 같다.


 --- (3)


행렬 A의 고유값, 고유벡터들을 λi, vi, i = 1, 2, ..., n이라 하자.


 --- (4)


이제 식 (4)를 한꺼번에 표현하여 정리하면


 --- (5)


가 성립함을 알 수 있다.


즉, 행렬 A의 고유벡터들을 열벡터로 하는 행렬을 P, 고유값들을 대각원소로 하는 대각행렬을 Λ라 하면 다음 식이 성립한다.


--- (6)

즉,  --- (7)


이와같이 행렬 A는 자신의 고유벡터들을 열벡터로 하는 행렬과 고유값을 대각원소로 하는 행렬의 곱으로 대각화 분해가 가능한데 이러한 대각화 분해를 eigendecomposition이라고 한다.


한 예로, A = [1 1 0; 0 2 1; 0 0 3]인 경우 A는 다음과 같이 대각화가 가능하다.


 --- (8)



모든 정방행렬이 이런 방식의 eigendecomposition이 가능한 것은 아니지만 대각화 가능한 경우는 뒤에 적기로 하고 일단은 대각화를 하면 어떤게 좋은지 알아보자.


행렬 A의 eigendecomposition을 알면 행렬식 값 det(A), A의 거듭제곱, 역행렬, 대각합(trace), 행렬의 다항식 등을 매우 손쉽게 계산할 수 있다.


 --- (9)


 --- (10)


--- (11)


 --- (12)


--- (13)



4. 고유값분해(eigendecomposition) 가능조건 - 일차독립


앞서 말했지만 모든 정방행렬이 고유값분해가 가능한 것은 아니다. n x n 정방행렬 A가 고유값분해가 가능하려면 행렬 A가 n개의 일차독립인 고유벡터를 가져야 한다.


선형대수학에서 말하는 일차독립(linearly independent)이란 무엇일까?


어떤 벡터들의 집합 {v1, ..., vn}이 있을 때, 이들 벡터들 중 어느 한 벡터도 다른 벡터들의 일차결합으로 표현될 수 없으면 이 벡터들은 서로 일차독립이라고 정의한다.


벡터들의 일차결합이란 a1v1 + a2v2 + ... + anvn (ai는 상수)와 같이 상수를 곱하여 합친 형태를 말한다.


예를 들어 3차원 공간의 좌표축 단위벡터들인 v1 = (1,0,0), v2=(0,1,0), v3=(0,0,1)를 생각해 보면 v2, v3에 어떤 상수를 곱하여 더해도 v1이 나올수 없음은 쉽게 확인할 수 있다. 이와 같이 어떤 벡터도 다른 벡터들의 상수배 합으로 표현될 수 없으면 이 벡터들은 서로 일차독립(linearly independent)이라고 한다.


참고로 n차원 공간은 최대 n개의 일차독립인 벡터들을 가질 수 있으며 n개의 일차독립인 벡터들은 이 공간을 생성하는 기저(basis) 역할을 수행한다.


위 예에서, 3차원 공간에서 좌표축 단위벡터들의 집합 {v1, v2, v3}는 일차독립이지만 여기에 v4 = (-1, 3, 4)를 추가한 {v1, v2, v3, v4}는 일차독립이 아니다 (∵ v4 = -v1+3*v2+4*v3). 즉, 3차원 공간에서 가능한 일차독립인 벡터들의 개수는 최대 3개이다.


또한 v1, v2, v3를 자세히 보면 이 벡터들을 이용하여 3차원 공간의 모든 (x, y, z) 좌표를 생성할 수 있음을 알 수 있다. 어떤 일차독립인 벡터들의 집합 {v1,...,vn}의 일차결합을 통해 어떤 공간의 모든 좌표를 생성할 수 있으면 이 벡터들을 이 공간의 기저(basis)라고 정의한다.


다시 원래 문제로 돌아가서, n차 정방행렬이 고유값분해가 가능하려면 n개의 일차독립인 고유벡터가 존재해야 한다고 했는데 이게 무슨 말인지 아직은 마음에 확 와닿지는 않을 것이다. 그건 고유값, 고유벡터가 어떻게 계산되는지 그 과정에 대한 이해가 필요하기 때문이다.



5. 고유값, 고유벡터의 계산


고유값과 고유벡터를 정의하는 식인 식 (1)으로 다시 돌아가서 이를 v에 대해 정리해보면 다음과 같다.


 --- (14)


우리가 구하고자 하는 고유값, 고유벡터는 식 (14)를 풀어서 나오는 λ와 v이다 (단, v0). 그런데, 식 (14)를 잘 보면 (A-λE)의 역행렬이 존재한다면 v는 항상 v = (A-λE)-10 = 0 만을 해로 갖게 된다. 그런데, 고유벡터는 정의에 의해 영벡터가 아닌 백터여야 하므로 A-λE의 역행렬이 존재하지 않는 경우에만 존재할 수 있다. 따라서, 고유벡터가 존재하기 위해서는 일단은 det(A-λE) = 0 이어야 한다.


 --- (15)


이 때, 식 (15)를 행렬 A의 특성방정식(characteristic equation)이라고 부르며 식 (15)를 λ에 대해 풀면 A의 고유값을 구할 수 있다. 고유벡터는 이렇게 구한 λ를 다시 식 (14)에 대입하여 계산한다.


[예]

다음과 같은 행렬 A에 대한 고유값, 고유벡터를 계산해 보자.


 --- (16)


이 때, 행렬 A를 식 (14)에 대입하여 특성다항식을 구해보면


 --- (17)


이므로 특성방정식은 (2-λ)(1-λ)2 = 0 이 된다.


 --- (18)


이제 특성방정식의 해는 λ = 1, 2인데 잘 보면 λ=2는 단일근임에 비해 λ=1은 이중근임을 알 수 있다. λ에 대응하는 고유벡터의 개수는 λ가 몇중근이냐와 밀접한 관계가 있는데 단일근에 대해서는 1개, 이중근에 대해서는 최대 2개, 삼중근에 대해서는 최대 3개, ... 의 고유벡터가 존재한다.


먼저 λ = 2를 다시 식 (14)에 대입하여 고유벡터를 구해보면,





 --- (19)


따라서, λ = 2에 대응하는 고유벡터는 v = [1, 1, 0]T 로 잡을 수 있다.


마찬가지로, λ = 1에 대해서도 고유벡터를 구해보면



--- (20)


x좌표가 z좌표의 2배인 벡터들은 무수히 많은데 이들은 [2, 0, 1], [0, 1, 0]의 일차결합으로 표현할 수 있으므로 λ = 1에 대응하는 고유벡터를 [2, 0, 1]과 [0, 1, 0] 으로 잡을 수 있다.


☞ x좌표가 z좌표의 2배인 임의의 벡터는 [2t, s, t]로 표현할 수 있다 (단, t, s는 임의의 실수). 그런데, 이는 [2t, s, t] = t*[2, 0, 1] + s*[0, 1, 0]와 같이 [2, 0, 1]과 [0, 1, 0]의 일차결합으로 표현될 수 있다.


아마도 이 시점에서 고유값은 어떻게 구하는지 알겠는데 고유벡터는 뭔가 좀 애매하다고 느끼는 분들이 많을 것으로 예상한다. 그 이유는 어떤 행렬에 대해 고유값은 유일하게 결정되지만 고유벡터는 유일하지 않기 때문이다. 이는 다음 내용을 보면 알 수 있다.


식(1)의 양변에 상수 c를 곱해보면,


 --- (21)


가 되므로 v가 λ에 대한 고유벡터이면 0이 아닌 임의의 상수 c에 대해 cv도 또한 λ에 대한 고유벡터임을 알 수 있다.


또한, v1, v2가 모두 고유값 λ에 대응하는 고유벡터라고 하면 임의의 상수 c1, c2에 대해


 --- (22)


이므로 c1v1 + c2v2 또한 λ에 대한 고유벡터가 됨을 알 수 있다.


따라서 고유벡터는 식 (19), 식 (20) 등과 같은 제약조건을 만족하는 벡터들 중에서 어느 벡터를 사용해도 무방하나 보통은 벡터의 크기를 1로 정규화한(normalized) 단위벡터를 고유벡터로 잡는 것이 일반적이다. 단, 식 (20)의 경우에는 자유도(degree of freedom)가 2이기 때문에 일차독립인 2개의 고유벡터를 잡아야만 가능한 모든 고유벡터들을 대표할 수 있다.


이제 이렇게 구한 고유값, 고유벡터에 대해 아래와 같은 행렬 대각화가 정말로 성립함을 matlab 또는 손계산을 이용하면 쉽게 확인할 수 있다 (또한 고유벡터들의 스케일을 바꾸거나 순서를 바꾸어도 대각화가 성립함도 확인할 수 있다).


 --- (23)



6. 대칭행렬(symmetric matrix)과 고유값분해


정방행렬들 중에서 대각원소를 중심으로 원소값들이 대칭되는 행렬 즉, AT = A (모든 i, j에 대해 aij = aji)인 행렬을 대칭행렬(symmetric matrix)이라 부른다.


그런데, 대칭행렬은 고유값 분해와 관련하여 매우 좋은 성질 2가지를 가지고 있다. 실원소(real-valued) 대칭행렬은 항상 고유값 대각화가 가능하며 더구나 직교행렬(orthogonal matrix)로 대각화가 가능하다는 매우 좋은 성질을 가지고 있다.


 --- (24)

단, 


즉, 모든 대칭행렬은 위 식 (24)와 같이 직교행렬을 이용한 고유값 대각화가 가능하다 (증명1, 증명2).


☞ 위 성질은 원소값이 실수(real number)인 경우에 항상 성립하는 성질이며 만일 원소값이 복소수(complex number)인 경우에는 유니터리(unitary) 행렬로 항상 대각화 가능하다. 그런데 사실 직교행렬을 복소수 공간에서 정의한 것이 유니터리 행렬이기 때문에 대칭행렬은 항상 대각화 가능하다고 생각하면 된다.


이렇게 따로 대칭행렬의 대각화에 대해 단락을 구분하여 적는 이유는 선형대수학에서 워낙 중요한 성질이기 때문이다. 대칭행렬(symmetric matrix)의 이러한 성질은 특이값분해(SVD), 주성분분석(PCA) 등에서 가장 기본이 되는 성질로 활용된다.


모든 정방행렬이 고유값 분해가 가능한 것은 아니지만 대칭행렬은 항상 고유값 분해가 가능하며 더구나 직교행렬로 대각화가 가능함을 기억하자.



※ 직교(orthogonal)와 정규직교(orthonormal), 그리고 직교행렬(orthogonal matrix)


orthogonal과 orthonormal이 서로 용어가 혼동되기 쉬운데 두 용어의 차이를 명확히 할 필요가 있다. 


먼저, 벡터에 대해 얘기를 해 보면 두 벡터 v1, v2가 서로 수직이면(즉, v1·v2 = 0) 두 벡터 v1, v2는 서로 orthogonal 하다고 한다. 그리고 v' = v/∥v∥와 같이 어떤 벡터를 크기가 1인 단위벡터로 만드는 것을 정규화(normalization)라고 한다. orthonormal이라는 말은 orthogonal과 normal이 합쳐진 말로서 두 벡터 v1, v2가 모두 단위벡터(unit vector)이면서 서로 수직이면 두 벡터 v1, v2는 orthonormal(정규직교)하다고 한다.

  • orthogonal: v1·v2 = 0

  • orthonormal: v1·v2 = 0  &  ∥v1∥ = 1, ∥v2∥ = 1


즉, orthogonal, orthonormal은 벡터들 사이의 관계를 나타내는 말인데, 이게 행렬로 넘어가면 조금 의미가 달라진다.


먼저, 행렬에서는 직교행렬(orthogonal matrix)이라는 말은 있어도 정규직교행렬(orthonomal matrix)이라는 말은 없다. 흔히 orthonomal matrix라는 표현을 쓰는데 이는 잘못된 것이며 orthogonal matrix (직교행렬)가 올바른 용어이다.


직교행렬(orthogonal matrix)의 수학적 정의는 자신의 전치행렬(transpose)를 역행렬로 갖는 정방행렬이다.



--- (25)


이와 같이 직교행렬(orthogonal matrix)은 transpose를 시키면(행렬의 열과 행 원소들을 서로 바꾸면) 자신의 역행렬이 되기 때문에 다양한 선형대수학 계산에서 매우 편리한 성질을 가진 행렬이다.


그런데, 직교행렬의 열벡터들은 서로 orthonomal(정규직교)한 성질을 가지고 있다. 즉, 직교 행렬를 구성하는 열벡터들을 v1, v2, ..., vn이라 했을 때 이들은 모두 단위벡터(unit vector)이면서 또한 서로 서로 수직인 성질을 갖는다. 이는 식 (25)로부터 쉽게 도출될 수 있다.


 --- (26)


이러한 성질은 열벡터가 아닌 행벡터들에 대해서도 동일하게 성립한다 (즉, 행벡터들도 서로 orthonormal 하다).


즉, 직교행렬(orthogonal matrix)은 그 행렬을 구성하는 열벡터(행벡터)들이 서로 수직(orthogonal)이면서 크기가 1인 (normal한) 행렬로도 정의될 수 있다.


이상의 내용을 정리하면 다음과 같다.

  • 벡터들이 orthogonal하다: 서로 수직이다
  • 벡터들이 orthonormal하다: 서로 수직이면서 크기가 1인 단위벡터이다
  • 행렬이 orthogonal하다: AAT=E 이다 (행렬을 구성하는 열벡터, 또는 행벡터들이 orthonomal하다)



[선형대수학 #1] 주요용어 및 기본공식

[선형대수학 #2] 역행렬과 행렬식(determinant)

[선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector)

[선형대수학 #4] 특이값 분해(Singular Value Decomposition, SVD)의 활용

[선형대수학 #5] 선형연립방정식 풀이

[선형대수학 #6] 주성분분석(PCA)의 이해와 활용


by 다크 프로그래머


  • 이전 댓글 더보기
  • 김진국 2017.01.16 21:48 신고 ADDR 수정/삭제 답글

    헷갈리던 내용을 이 글 한번에 모두 이해하고 갑니다. 정말 감사드립니다!!

  • ctw 2017.01.26 02:07 신고 ADDR 수정/삭제 답글

    먼저, 이렇게나 쉽게 설명해주셔서 감사합니다 ^^

    쉽고 직관적인 설명해신 부분이, 고유값, 고유벡터를 더 직관적으로 이해하게 싶게 만드네요 ㅎㅎ


    고유값, 고유벡터에 대해 수학적인 정의도 알고 계시고, 기하학적 해석도 하실 수 있으며,
    어디에 사용하시는지도 아시는 분께서… 글 서두에 이런 내용을 남기셔서…
    도대체 무엇이 궁금하신 것일까 계속 고민해 봤습니다.

    “선형대수학에서 고유값(eigenvalue)과 고유벡터(eigenvector)가 중요하다고 하는데 왜 그런 것인지 개인적으로도 참 궁금합니다.”


    많이 배워가면서 뭐하나 남겨 드리고 가야하는데 …
    오늘에서야 고유값, 고유벡터가 무엇인지를 알게되어서…
    궁금증을 해소 시켜드릴 수 있을지는 모르겠네요.


    외국 사이트를 많이 돌아다녀봤는데, 아래 사이트가 가장 인상 깊었습니다.
    http://math.stackexchange.com/questions/243533/how-to-intuitively-understand-eigenvalue-and-eigenvector


    그리고 가장 직관적으로 마음에 와닿는 문구는 아래 문구입니다.

    1. Consider the eigenvector corresponding to the maximum (absolute) eigenvalue. If we take a vector along this eigenvector, then the action of the matrix is maximum.
    No other vector when acted by this matrix will get stretched as much as this eigenvector.

    2. Euler studied the rotational motion of a rigid body and discovered the importance of the principal axes. Lagrange realized that the principal axes are the eigenvectors of the inertia matrix. [1]


    고유값과 고유벡터라는 문자를 사용해 선형성을 전개하고 방정식을 푸는 방법은 이미 이 블로그에 너무 많이 나와있는 관계로… 선형대수학에서의 의미는 충분히 있다고 보여집니다.

    개인적으로 생각해본 직관적인 내용을 아래에 정리해봤습니다.

    1. 한 행렬을 선형 변환함에 있어서, 해당 행렬의 고유벡터가 기저(base)를 이루는 주축(Principal axe)가 된다는 것(선형 사상을 표현하는데 매우 유용)
    2. 회전이 허용되는 강체 변환 행렬(선형 변환의 일종)에 있어서, 최대 고유값에 대응하는 고유벡터가 이 강체 변환 행렬이 움직일 수 있는 최대 범위를 제한한다는 것.
    3. 고유값 분해가 가능하면 선형적으로 독립적인(linearly independent) 고유벡터들이 존재하고, 그 고유벡터들의 미적분을 이용할 수 있다는 것
    (다변수 분석 또는 대수학으로의 확장, 오일러/라그랑지 방정식? )


    마지막으로… 좋은 글 다시 한번 감사 드립니다.

    • BlogIcon 다크pgmr 2017.01.26 10:03 신고 수정/삭제

      좋은 댓글 감사합니다. 오전 내내 적어주신 내용과 링크해 주신 내용에 빠져 있었습니다. 아직 모르는 부분도 많지만 색을 덧칠해 가면서 그림이 완성되어 가듯이 조금씩 이해가 깊어지는 것 같습니다. 그리고 저는 개인적으로 링크해 주신 stackexchange 글의 EuYu라는 분의 코멘트가 인상깊었습니다. 깊은 이해와 그 표현력에 절로 감탄을 하게 됩니다. 감사합니다.

  • ctw 2017.01.26 12:29 신고 ADDR 수정/삭제 답글

    아직 PCA를 스터디해보지는 않았는데, Unsupervised 머신 러닝을 좀 더 깊게이해하기 위해서 나중에 꼭 깊게 공부해볼 생각입니다.
    나중에 PCA 공부할 때 EuYu님의 해당 코멘트도 잘 느껴보겠습니다.

    좋은 댓글이라구 말씀해주셔서 감사하구요...
    앞으로도 종종 공부하러 들리겠습니다.

  • ㅇㅇ 2017.03.22 21:37 신고 ADDR 수정/삭제 답글

    A가 가역이여야 분해 가능하다고요? 아직 공부를 많이 못 하신 모양이네요.

  • 굳굳! 2017.05.15 09:33 신고 ADDR 수정/삭제 답글

    좋은 글이네요 하지만 제 개인적인 생각으로는
    대각화를 바라볼 때에는 적어도 matrix와 linear map의 isomorphism의 관점에서 보는게 가장 명확하다고 생각합니다!

    아래 정리는 행렬과 선형변환의 관계를 이용하면 간단히 유도할수 있습니다.
    theorem
    1.A~C이다.
    2.[La](B->B)=C인 basis B가 존재한다.
    이 정리는 동치인데
    La:F^n->F^n이라하고 F^n의 basis B를
    basis B={x1,x2,x3,x4.....,xn}이라고 가정하겠습니다.

    이 정리의 행렬 C를 diagonal matrix로 보면
    A~C인 것과 .[La](B->B)=C와 동치고
    .[La](B->B)=C과 La(x1)=e1x1..La(xi)=eixi와 동치이므로 결국 A가 대각화 가능하기위한 조건은 너무나 자명하게 eigen vector 로 이루어진 F^n의 basis가 존재하는 것임을 보일수 있습니다.

    • BlogIcon 다크pgmr 2017.05.15 16:38 신고 수정/삭제

      비전공자도 이해할 수 있도록 좀더 쉬운 용어와 직관적인 설명이 있으면 좋을 것 같습니다. 감사합니다.

  • sketch 2017.06.05 07:47 신고 ADDR 수정/삭제 답글

    와...이렇게나 쉽게 설명해주시는 글은 처음이에요! 정말 감사합니다!!!

  • 크라메르 2017.07.31 21:18 신고 ADDR 수정/삭제 답글

    안녕하세요

    읽다가...

    " 그런데, 식 (14)를 잘 보면 (A-λE)의 역행렬이 존재한다면 v는 항상 v = (A-λE)-10 = 0 만을 해로 갖게 된다. "

    이문장이 이해가 안되네요 ㅠㅠ

    30분째 보고있음;; 조금만더 설명해주실수 있나요?

    • BlogIcon 다크pgmr 2017.08.03 15:07 신고 수정/삭제

      예를 들어 행렬 A와 벡터 x에 대해 Ax = 0이라는 식이 있다면, A의 역행렬이 존재할 경우 양변에 A의 역행렬(A^-1)을 곱하면 A^-1 * Ax = A^-1 * 0이 됩니다. 그러면 x = 0이 된다는 의미입니다.
      한편으로 A의 역행렬이 존재하지 않을 경우가 궁금할 수 있는데요, 그러한 경우에는 x = 0 외에도 다른 해가 무수히 존재할 수 있습니다. 예를 들어, A = 0인 경우에는 임의의 x가 해가 될 수 있습니다.

    • 크라메르 2017.08.04 10:41 신고 수정/삭제

      아하 양변에 (역행렬이 존재할경우)역행렬을 곱하면 x는 0밖에 될수가 없겠네요. 그래서 A는 역행렬이 존재해서는 안되는거.... ㄳㄳ

  • sean 2017.08.12 10:42 신고 ADDR 수정/삭제 답글

    안녕하세요? :)
    좋은 글 재미있게 잘 읽고 있습니다!
    두 가지 질문이 있는데요.
    01
    식 11번에서 전개가 이해가 되지 않아서요.
    전체에 역행렬을 취했는데 왜 P에는 적용이 안 되는 것인지 궁금합니다.

    02
    식 18에서 이중근이라는 것을 어떻게 알 수 있나요?

    감사합니다!

    • BlogIcon 다크pgmr 2017.08.12 11:17 신고 수정/삭제

      ABC의 역행렬은 A-1B-1C-1가 아니라 C-1B-1A-1임에 유의해야 합니다. 역행렬의 정의는 자신과 곱해서 항등행렬(I)이 나오는 행렬입니다. ABC * C-1B-1A-1 = I가 됨은 쉽게 확인할 수 있습니다. 즉, ABC의 역행렬은 C-1B-1A-1입니다. 수학은 정의에서 시작합니다. 그 정의를 정확히 알고 있다면 많은 식들을 이해할 수 있습니다.

    • BlogIcon 다크pgmr 2017.08.12 11:26 신고 수정/삭제

      식 18과 같이 방정식을 인수분해했을 때, 제곱이 되는 인수에 대응되는 해를 이중근이라고 부릅니다.

  • 돌맹이 2017.08.22 17:47 신고 ADDR 수정/삭제 답글

    좋은 글 잘 보고 갑니다 많은 도움이 되었습니다.

  • 낙하 2017.10.08 19:33 신고 ADDR 수정/삭제 답글

    unit vector로 검색했더니 이 블로그에 또 들어왔네요!
    좋은 포스팅 감사합니다 !!

  • 감사해요 2017.10.24 10:43 신고 ADDR 수정/삭제 답글

    깔끔하고 직관적인 이해를 도와주는 글 정말 잘 봤습니다.

    저는 예전에 부분을 공부할 때 이런걸 어디다 써먹는지 왜 배우는지 고민을 많이 하다 나름대로 현실에 비유해서 이해했었습니다.
    하나의 행렬의 정체성을 나타내는 것이라 생각해서
    [행렬 = 고유값 * 고유벡터]를
    [행렬 = 집단 내 비중 * 소속 집단]이라 비유적으로 이해했던게 생각나네요
    한 사람도 그런식의 구분이 가능하듯이
    학생 * 학교, 아들 * 가정, 회장 * 동호회 처럼요.

    처음에 개념이 생소해서 이런식으로 억지로 비유해서 접근하면 조금 친숙하고 고유값문제에서 비롯되는 많은 특성들도 친근하게 느껴질 수 있더라구요.
    역행렬이 구하기 쉬운건 이런 특성들을 필요한것만 끌어다 쓸 수 있어서다 라는 식의 납득으로요.
    여하튼 좋은 글을 보니 제가 갖고있던 소소한 비유들도 같이 공유하고싶어지네요 그럼 다른 글들도 재밌고 흥미롭게 보겠습니다~ 감사합니다.

  • 감사합니다! 2017.11.20 13:55 신고 ADDR 수정/삭제 답글

    n x n symmetric인 실수 행렬인 경우 항상 n개의 orthogonal한, real eigenvalue를 가지는, eigenvector를 가진다는 내용의 증명 링크 해준신 걸 보고 있는데요,
    여기서 property 5과 6번으로 orthgonal한 것과 real eigenvalue를 가짐은 증명이 되는 것이 이해가 됩니다.
    그런데, n개의 eigen vector를 가지는 부분에 대해서는 어떻게 이해를 해야할까요?? ㅠ.ㅠ 혹시 조금만 설명을 좀 부탁드려도 될까요ㅠ.ㅠ
    뒷장의 마지막 proof에 그 내용이 있을 것이라 생각하는데, 저는 도무지 이해가 되지 않습니다ㅠㅠ
    감사합니다아아아 !!!

    • BlogIcon 다크pgmr 2017.11.21 09:01 신고 수정/삭제

      인터넷에서 그냥 그럴듯해 보이는 증명 링크를 찾아서 적은 것인데, 질문을 받고 내용을 읽어보니 저도 이해가 어렵습니다. 그래서 좀더 이해가 쉬운 증명 링크로 수정했습니다.
      어쨌든 증명의 핵심은 다음과 같습니다.
      1. n x n real symmetric matrix A의 eigenvalue는 real number이다. -> 이것이 증명되면 A가 n개의 eigenvalue를 가짐이 증명됩니다 (값이 모두 다를 필요는 없음). A의 특성방정식은 n차 방정식이므로 실수, 허수 모두 포함하면 항상 n개의 해를 갖습니다. 그런데, 그 해가 모두 실수이므로 즉, 실제 eigenvalue가 n개 존재하는 셈입니다. 물론 이중근, 삼중근과 같은 중첩된 해를 가질수도 있습니다.
      2. symmetric matrix A에 대해 서로 다른 값의 eigenvalue에 대응하는 eigenvector들은 서로 수직이다.
      3. 이중근, 삼중근인 경우 대응되는 eigenvector들이 이루는 부분공간에 대해서 항상 직교기저를 얻을 수 있다 (그람 슈미트)
      4. 따라서, 서로 다른 값을 갖는 eigenvalue들에 대응되는 고유공간(고유벡터들로 생성되는 부분공간)들은 서로 수직이고 이들의 전체 dimension 합은 n이므로 결국 n x n real symmetric matrix A는 n개의 서로 수직인 eigenvector를 가짐이 증명

  • 감사합니다! 2017.11.21 13:13 신고 ADDR 수정/삭제 답글

    와 넵넵 잘 정리가 되었어요!! 새로 올려주신 링크도 따라가 보겠습니당~~ 감사합니다!!

  • 감사합니다! 2018.03.12 01:10 신고 ADDR 수정/삭제 답글

    깔끔하게 정리해주신 글 잘봤습니다! 다만 연습을 조금 하다가 궁금한 점이 생겨 이렇게 댓글 남깁니다...

    모든 n x n 행렬에 대한 고유값의 곱이 행렬식이 된다고 말할 수 있냐요?

    제가
    2 4 1
    1 0 3
    2 0 1 을 가지고 고유값 구하는 연습을 해보았는데 값이 하나밖에 나오지 않고 이 값으로 행렬식을 구할 수 가 없네용.. ㅠㅠ

    • BlogIcon 다크pgmr 2018.03.12 09:03 신고 수정/삭제

      해당 행렬은 제가 돌려보니 실수 범위 내에서는 고유분해가 가능하지 않습니다. 이 경우 특성방정식의 허근까지 모두 포함해서 곱해보면 행렬식 20이 나옵니다.

    • 감사합니다!! 2018.03.19 12:13 신고 수정/삭제

      친절한 답변 너무 감사드립니다! 좋은 하루 보내시고 건강하세요! :)

  • palmarium 2018.03.23 18:29 신고 ADDR 수정/삭제 답글

    감사합니다 이해하기 쉽고 좋은 글이네요~
    그런데 한가지 질문이 있습니다
    "5. 고유값, 고유벡터의 계산" 에서
    첫번째 lamda가 2일때, 고유벡터 Vx = Vy 가 같다면 이에 해당하는 components도 굉장히
    많을텐데 왜 Vx=Vy=1로 규정하는건가요?

    • BlogIcon 다크pgmr 2018.03.24 00:21 신고 수정/삭제

      네, 고유벡터는 다양하게 잡을 수 있으니 vx=vy=2로 잡아도 됩니다. 글의 표현을 수정했습니다 ^^ ('lambda=2에 대응하는 고유벡터는 [1,1,0]이다' --> 'lambda=2에 대응하는 고유벡터는 [1,1,0]로 잡을 수 있다')

  • palmarium 2018.03.25 23:22 신고 ADDR 수정/삭제 답글

    감사합니다ㅎㅎㅎ

  • 초보자 2018.04.30 17:26 신고 ADDR 수정/삭제 답글

    다크님... 선형대수 책 추천 부탁드립니다. SVD나 PCA는 제가 검색한 책들에는 없던데... 다크님이 선형대수 관련 작성하신 글들과 같이 볼만한 선형대수 책 추천해주실수 있나요?

    • BlogIcon 다크pgmr 2018.04.30 18:00 신고 수정/삭제

      글쎄요.. 저도 추천할 만한 책은 모르겠습니다. 따로 책을 본 것은 아니라서요.. 제 생각에도 pca, svd 등은 일반적인 선형대수학 책에 나오는 내용은 아닌 것 같습니다. 무슨 책을 봐야 그런 내용이 나오는지는 저도 잘 모르겠습니다. 응용 선형대수학? 뭐 그런 비슷한 제목의 책에 나올 것 같기도 하구요..

    • 초보자 2018.04.30 19:56 신고 수정/삭제

      그럼 다크님꺼로 반복 학습 해야겠네요! 감사합니다!!

  • 초심자 2018.05.09 02:07 신고 ADDR 수정/삭제 답글

    한가지 질문드릴게 있어서 또 찾아뵙네요 ㅠㅠ
    100*100의 이미지가20장 (20장의 object들의 회전정도와 크기가 살짝씩다름) 있을때 이것들을 고유값분해하여 m*m의크기로 키워주면 이미지상의 object들의 크기와 회전정도가 어느정도 보상된다고 PCA관련된 외국 논문에서 언뜻 봤는데 이게 가능한것인지 궁금합니다.
    그리고 고유값 분해할때 PΛQ (Q=P의역행렬 )로 되는것은 알겠는데 Λ=100*m일때 고유값분해 하면 이미지를 100*m이나 m*100으로 만들수는 있겠는데 m*m으로 어떻게 만드는지 궁금합니다.

    • BlogIcon 다크pgmr 2018.05.09 10:59 신고 수정/삭제

      안녕하세요. 일단 질문하신 내용 중 몇 가지가 이해가 안가는데요, (1) 100*100 이미지를 고유값 분해한다는 의미가 무엇인가요? 이미지 각각을 고유분해 한다는 의미안가요? 혹시 PCA를 잘못 아신것 아닌지요? (2) 이미지를 고유분해해서 크기를 키워준다는 의미가 무엇인가요? 고유분해로 이미지의 크기를 키워준다는 것은 저도 처음 듣는 것이라서 어떻게 하는 것인지 모르겠네요. m>100이 되도록 이미지 사이즈를 키우는 것인가요? (3) A = 100*m은 행렬의 크기가 100 x m 행렬이란 의미인가요? (4) 고유분해는 square 행렬에서만 가능하기 때문에 100 x m 행렬은 고유분해가 안됩니다.. 그런데, A를 고유분해해서 100*m 이미지로 만든다는 건 어떤 식으로 가능한 것인가요?

    • 초심자 2018.05.09 16:52 신고 수정/삭제

      (1) 100*100의 행렬을 이루고있는 이미지를 특이값 분해할때처럼 분해하는데 특이값분해는 정방행렬이 아닌 행렬을 분해할때 쓰는 방법이고 행렬의크기가100*100으로 정방행렬이기 때문에 고유값분해로 분해하여야하는데
      P는 고유벡터들을 열백터로하는이라고 하셨고Λ는 고유치의대각행렬이고 Q는 P의 역행렬이며 PΛQ이런식으로 분해되는데 Λ의크기로 m*100의크기로 분해한다는 의미였습니다Λ의크기를m*100의 크기로 할것이기에
      P의크기와Q행렬의크기가 어떻게 되야A=PΛQ의 크기로m*m의 크기로 만들수있는지가 궁금한거였습니다
      제가 pca를 잘못 이해했을수도 있습니다
      저내용을 pca관련 해외 논문에서 본것이기에.........

    • BlogIcon 다크pgmr 2018.05.09 17:43 신고 수정/삭제

      네.. 질문하신 내용이 조금은 이해가 되었습니다. 하지만, 어떤 행렬을 분해해서 minor한(0에 가까운 값을 갖는) 특성값들을 제거할 수는 있지만 그렇다고 해서 원래 행렬의 차원이 변하지는 않습니다. 즉, Λ=100*m를 아무리 변경시켜도 A는 여전히 100*100으로 변하지 않습니다. 그리고 PCA 관련 논문이라면 PCA는 개별 데이터가 아니라 데이터들 집합 전체에 대해 이루어지는 것이기 때문에 (데이터들로부터 공분산 행렬을 구하고, 공분산 행렬을 고유분해), 이미지를 고유분해 한다는 것이 조금 이상합니다.
      제 생각에는 아무래도 해당 논문을 다시 한번 천천히 읽어보시면 좋을 것 같습니다. 말씀하신 내용만으로는 어떤 문제인지 짐작이 어렵습니다. 그런데, m은 100보다 큰수인가요 아니면 작은수인가요?

    • 초심자 2018.05.09 22:50 신고 수정/삭제

      답변해주셔서 감사합니다.
      m이 100보다 큰수인지 작은수인지 아직은 헷갈려서 다음에 다시 질문드리도록 하겠습니다.
      이질문이외에 질문을 하나더 드려도 될까요?ㅜ
      행렬 A의 고유벡터들을 열벡터로 하는 행렬을 P, 고유값들을 대각원소로 하는 대각행렬을 Λ라 하면 다음 식이 성립한다
      A=PΛP의 역행렬 이 성립 한다고 설명해주셔는데
      100*100행렬의 이미지를 A라고 놨을때
      A행렬의 고유벡터는 100*100의 크기로 구해지고, 고유치는100개가 나와서 대각행렬로 만들어서 100*100의 Λ로 만들어주는데 어떻게 100*100의 고유벡터들을 열벡터P로만드는지 궁금합니다
      Λ와 곱셈이 되려면 P는 1*100이 되어야하는게 아닌지.....

    • BlogIcon 다크pgmr 2018.05.10 00:04 신고 수정/삭제

      A의 고유벡터는 100*100의 크기로 구해지지 않고 100*1로 구해집니다.. 그리고 P의 크기는 100*100이 맞습니다.

    • BlogIcon 다크pgmr 2018.05.10 10:41 신고 수정/삭제

      아마도 잘은 모르겠지만 pca에 대한 이해에 계속 문제가 있는 것 같습니다.. 보통 이미지를 직접 고유분해하지는 않습니다. 100x100 이미지라면 보통은 픽셀들을 일렬로 늘려서(연결해서) 10,000 차원 열벡터로 만든 후에, 이렇게 얻어진 10000차원 벡터를 데이터 1개로 보고, 이러한 이미지 데이터들을 모아서 분포 특성을 분석하기 위해 pca를 적용합니다. 일단, 이미지 데이터들로부터 공분산 행렬을 구하면 10000 x 10000 공분산행렬이 얻어지고 이것을 고유분해하면 고유벡터들이 얻어지는데 이 고유벡터들을 주성분 벡터라고 부릅니다. 그리고 이렇게 얻어진 주성분 벡터들을 이용해서 원래의 이미지를 근사하거나 분석하는 것이 일반적인 과정입니다..

  • lazycat 2018.08.01 13:52 신고 ADDR 수정/삭제 답글

    안녕하세요!

    일단 글 잘 보고 있습니다. 너무 잘 정리해주셔서 선형대수학 복습교과서 용도로 사용중입니다 ㅎㅎ

    학부에서 배울때는 벡터나 행렬의 기하학적 의미에 대해서 그다지 궁금해하지 않았었는데요,,

    다크님 글을 보니 이해의 범위가 확장되는 느낌입니다.

    이번 글 보면서 궁금한게 생겼는데요..

    대칭행렬에도 특별한 기하학적 의미가 있을까요??

    • BlogIcon 다크pgmr 2018.08.01 15:55 신고 수정/삭제

      대칭행렬에 대한 기하학적 해석은 딱히 없는 것 같습니다.

  • BlogIcon 먹튀 검증 2018.08.05 14:18 신고 ADDR 수정/삭제 답글

    잘보고갑니다~