관리 메뉴

귀퉁이 서재

머신러닝 - 19. 고유값(eigenvalue), 고유벡터(eigenvector), 고유값 분해(eigen decomposition) 본문

머신러닝

머신러닝 - 19. 고유값(eigenvalue), 고유벡터(eigenvector), 고유값 분해(eigen decomposition)

데이터 파수꾼 Baek Kyun Shin 2020. 2. 24. 20:03

이번 시간에는 고유값과 고유 벡터, 그리고 고유값 분해에 대해 알아보겠습니다. 참고로 고유값, 고유 벡터를 이해하기 위해서는 행렬의 몇 가지 종류에 대해 알고 있어야 합니다. 본 글의 맨 아래에 부록으로 행렬의 종류에 대해서도 설명해놨으니, 행렬의 종류에 대해 까먹으신 분들은 참고하시면 되겠습니다.

이번 장은 다크 프로그래머스 블로그공돌이의 수학정리노트 유튜브를 참고해 작성했습니다.

고유값(eigenvalue)과 고유 벡터(eigenvector)

정방 행렬 A를 선형 변환으로 봤을 때, 선형 변환 A에 의한 변환 결과가 자기 자신의 상수 배가 되는 0이 아닌 벡터를 고유벡터(eigenvector)라고 하고, 이 상수배 값을 고유값(eigenvalue)이라고 합니다. 고유값, 고유 벡터는 정방 행렬에 대해서만 정의됩니다. 다시 말해, 정방 행렬 A에 대해서 Av = λv를 만족하는 0이 아닌 열벡터 v를 고유 벡터, 상수 λ를 고유값이라고 합니다.

고유값, 고유 벡터를 처음 접하시는 분들은 위 설명이 무슨 말인지 하나도 이해가 안 갈 겁니다. 저도 그랬습니다. 이제 차근차근 설명해보겠습니다.

"행렬 A를 선형 변환으로 봤을 때"부터 보겠습니다. 선형 변환은 쉽게 말해서 벡터에 사칙연산을 해주는 개념으로 보시면 됩니다. 위 식을 예로 들면, 열 벡터 v에 행렬 A를 곱하는 것을 '열 벡터 v에 선형 변환 A를 해주었다.'라고 말할 수 있습니다. 

그럼 Av라는 것은 v라는 열 벡터에 선형 변환 A를 해주었다는 뜻입니다. v라는 열 벡터에 선형 변환 A를 해준 결과가 열 벡터 v의 상수 배(λ)와 동일하다면, '선형 변환 A에 대하여 v는 고유 벡터, λ는 고유값이다'라고 한다는 뜻입니다.

그래도 이해가 잘 가지 않을 겁니다. 

Av = λv이 만족한다는 것은 벡터 v에 대해 선형 변환 A를 해주었을 때, 벡터 v의 방향은 변하지 않고 크기만 변했다는 뜻입니다. 보통 어떤 벡터에 선형 변환을 하면 방향이 바뀝니다. 하지만 선형 변환을 했음에도 어떤 벡터 v의 방향이 바뀌지 않고 크기만 변했다면, 그리고 변한 크기가 원래 벡터 크기의 λ배라면 그 λ를 고유값이라고 하고 v는 고유 벡터라고 합니다.

'다시 말해, 어떠한 선형 변환 A를 했을 때, 그 크기만 변하고 방향이 변하지 않는 벡터가 있나요?'라고 묻는 질문에 '네! 있습니다!'라고 대답한다면 고유값과 고유벡터가 존재하는 겁니다.

아래 그림을 보겠습니다.

그림1 (출처: 공돌이의 수학정리노트 유튜브)

 

그림2 (출처: 공돌이의 수학정리노트 유튜브)

 

그림2는 그림 1을 선형 변환한 겁니다. 벡터의 색상은 파란색, 분홍색, 빨간색 이렇게 총 3가지입니다. 먼저 빨간색 벡터를 봅시다. 그림 1의 빨간색 벡터에 선형 변환을 해주니 방향과 크기가 모두 변했습니다. 고유값, 고유벡터는 방향은 변하지 않고 크기만 변했을 때 정의할 수 있다고 했습니다. 따라서 빨간색 벡터는 고유 벡터가 아닙니다. 이제 파란색 벡터를 보겠습니다. 파란색 벡터는 선형 변환 후에도 방향은 변함없습니다. 다만 크기만 변했습니다. 이때 해당 선형 변환에 대하여 파란색 벡터는 고유 벡터이며, 고유값은 (그림 2의 파란색 벡터 크기 / 그림 1의 파란색 벡터 크기)만큼 입니다. 즉, 증가한 벡터 크기 비율만큼이 고유값입니다. 마지막으로 분홍색 벡터를 봅시다. 분홍색 벡터는 선형 변환 후 크기도 방향도 유지되었습니다. 따라서 분홍색 벡터도 고유 벡터이며, 고유값은 1입니다.

고유값과 고유 벡터 구하기

고유값과 고유 벡터를 실제 구해보겠습니다. 아래의 두 사진은 제가 직접 쓴 걸 사진 찍어 올린 겁니다.

참고로, A가 정방 행렬일 때만 고유값과 고유 벡터를 구할 수 있습니다. (하지만 정방 행렬이라고 모두 고유값, 고유 벡터가 존재하는 건 아닙니다.)

고유값 정의에 의해서 (A - λ I) v = 0입니다. (A - λ I)의 역행렬이 존재하면 v = 0이 됩니다. 하지만 정의에서 열 벡터 v는 0이 아니라고 했기 때문에 (A - λ I)는 역행렬이 존재하지 않습니다. (A - λ I)의 역행렬이 존재하지 않으려면, det(A - λ I) = 0이어야 합니다.

따라서 det(A - λ I) = 0을 구하면 고유값과 고유 벡터를 구할 수 있습니다. det는 행렬식인데 이는 간단한 개념이니 모르시는 분은 구글링을 하시면 됩니다.

이제 예제를 통해 고유값과 고유벡터를 구해보도록 하겠습니다. 

람다가 1일때,

2v₁ + v₂ = v

v₁ + 2v₂ = v

를 풀면 v₁ = -v₂입니다.

열 벡터 v = (v₁, v₂) = (1, -1), (2, -2), (3, -3) 등 수많은 해가 있을 수 있습니다. 하지만 고유 벡터를 구할 때는 일반적으로 정규화(Normalized)된 벡터로 정합니다. 따라서 람다(고유값)가 1일 때, 고유 벡터는 (1, -1)인 겁니다. 마찬가지로 람다(고유값)가 3일 때 고유 벡터는 (1, 1)인 것입니다.

고유값 분해 (eigen decomposition)

행렬 A의 고유값을 λi, 고유벡터를 vi,  i = 1, 2,..., n이라고 합시다.

출처: 다크 프로그래머스

위 식을 한 번에 정리하면 아래와 같습니다.

출처: 다크 프로그래머스

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

출처: 다크 프로그래머스

이를 행렬 A에 대한 고유값 분해라고 합니다. 다시 반복하면, P는 고유 벡터들을 열벡터로 하는 행렬이며, Λ는 고유값을 대각원소로 가지는 대각 행렬입니다. 즉, 행렬 A를 고유 벡터와 고유값으로 분해한 것입니다.

이제, 예제를 통해 고유값 분해를 해보겠습니다. 아래 고유값 분해에 대한 식 전체는 위키피디아에서 그대로 캡처를 해왔음을 밝힙니다.

출처: 위키피디아 (고유값 분해)

한 가지 특징을 언급하자면, 대칭 행렬은 모두 고유값 분해가 가능하며, 더군다나 직교 행렬로 분해할 수 있습니다. 이는 다음 장에서 배워볼 특이값 분해를 이해하는데 필요하니 기억해두시면 좋습니다.

지금까지 고유값, 고유 벡터, 그리고 고유값 분해에 대해 알아봤습니다. 고유값 분해는 다음장에서 배워볼 특이값 분해(SVD)를 하기 위해 선행적으로 알아야 되는 개념이라 자세히 알아봤습니다. 또한, 앞서 말씀드렸듯이 행렬 종류에 대해 까먹으신 분들은 아래 부록을 참고해주시기 바랍니다.

부록: 행렬의 종류

전치 행렬(Transposed Matrix)

원래의 행렬에서 행과 열을 서로 맞바꾼 행렬을 전치 행렬이라고 합니다. 

Truth in Engineering

전치 행렬은 다음과 같은 특징을 가집니다.

Truth in Engineering

단위 행렬(Identity Matrix)

주대각선의 성분이 모두 1이며 나머지 성분은 모두 0인 정사각행렬을 단위행렬이라고 합니다.

Truth in Engineering

단위행렬은 아래와 같은 특징이 있습니다.

Truth in Engineering

역행렬(Inverse Matrix)

A와 어떤 행렬을 곱했을 때 결과가 단위행렬이라면, 이때 어떤 행렬을 A의 역행렬이라고 합니다.

Truth in Engineering

 

직교 행렬(Orthogonal Matrix)

행렬 A와 A의 전치 행렬을 곱했을 때 단위 행렬이 된다면, A를 직교 행렬이라고 합니다.

출처: towardsdatascience

대각 행렬(Diagonal Matrix)

대각 성분 이외의 모든 성분이 0인 행렬을 대각 행렬이라고 합니다. 아래는 대각 행렬의 예시입니다. 

출처: 위키백과

정방 행렬(Square Matrix)

열과 행의 개수가 동일한 행렬을 정방 행렬이라고 합니다. n차 정방 행렬은 열과 행의 개수가 각각 n개인 행렬을 뜻합니다.

출처: rfriend.tistory

대칭 행렬(Symmetric Matrix)

정사각행렬 A와 A의 전치 행렬이 서로 같다면, A를 대칭 행렬이라고 합니다.

출처: rfriend.tistory

 

references

reference1: 다크 프로그래머스([선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector))

reference2: 공돌이의 수학정리노트 (고유값과 고유벡터의 기하학적 의미)

reference3: Truth in Engineering

reference4: 위키피디아 (고유값 분해)

0 Comments
댓글쓰기 폼