devlog.

고유값·고유벡터와 PCA: 선형대수 기초 4장 (완결)

·15분 읽기·

3장에서는 벡터 연산, 선형 변환, 행렬 곱셈, 역행렬을 배웠습니다. 이번 마지막 글에서는 행렬식을 기하학적으로 해석하고, 선형대수의 꽃인 고유값(Eigenvalue)고유벡터(Eigenvector) 를 깊이 파고들며, 이것이 머신러닝의 PCA(주성분 분석) 에 어떻게 연결되는지까지 정리합니다.

이 글은 DeepLearning.AI의 Mathematics for Machine Learning and Data Science 4주차 내용을 기반으로 정리했습니다.

이번 글에서 배우는 것#

  • 행렬식을 넓이(부피) 로 해석하기
  • 곱의 행렬식, 역행렬의 행렬식 공식
  • 기저(Basis)생성(Span) 의 개념
  • 고유값·고유벡터 의 직관과 계산법
  • PCA — 분산·공분산·고유벡터를 이용한 차원 축소
  • 마르코프 행렬 과 이산 동적 시스템

선형 변환의 특이성과 랭크#

선형 변환도 행렬과 마찬가지로 특이/비특이로 분류됩니다.

변환 유형결과랭크
비특이 변환평면 전체를 덮음2 (2D 기준)
특이 변환 (선)한 직선만 덮음1
특이 변환 (점)원점 하나만 남음0

비특이 행렬의 선형 변환은 평면의 모든 점을 커버합니다. 특이 행렬의 변환은 평면을 직선 또는 점으로 압축합니다.


행렬식 = 넓이 (기하학적 해석)#

행렬식은 단순한 숫자가 아닙니다. 선형 변환이 공간을 얼마나 늘리거나 줄이는지를 나타내는 넓이(부피)의 배율입니다.

A=[abcd]A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}

단위 정사각형(면적 = 1)에 이 변환을 적용하면, 결과 평행사변형의 넓이가 det(A)|\det(A)| 입니다.

행렬식 값의미
det=0\det = 0공간이 선/점으로 압축 (넓이 = 0)
det>0\det > 0공간이 늘어남, 방향 유지
det<0\det < 0공간이 늘어남, 방향 반전 (반시계 방향 변환)

핵심: 특이 행렬이 넓이 0으로 압축되기 때문에 det=0\det = 0 이 됩니다.


곱의 행렬식#

det(AB)=det(A)det(B)\det(AB) = \det(A) \cdot \det(B)

두 선형 변환을 합성했을 때의 넓이 배율은, 각 변환의 배율을 곱한 것과 같습니다.

중요한 결론:

A 또는 B 중 하나가 특이det(AB)=0AB 도 특이A \text{ 또는 } B \text{ 중 하나가 특이} \Rightarrow \det(AB) = 0 \Rightarrow AB \text{ 도 특이}

특이 행렬과 비특이 행렬의 곱은 항상 특이입니다.


역행렬의 행렬식#

AA 가 비특이(역행렬 존재)일 때:

det(A1)=1det(A)\det(A^{-1}) = \frac{1}{\det(A)}

직관: AA 가 공간을 5배로 늘렸다면, A1A^{-1}15\frac{1}{5} 배로 줄여서 원래대로 되돌려야 합니다.

예시:

det(M)=0.2det(M1)=5\det(M) = 0.2 \Rightarrow \det(M^{-1}) = 5

det(N)=0.125det(N1)=8\det(N) = 0.125 \Rightarrow \det(N^{-1}) = 8


기저 (Basis)#

기저는 벡터 공간을 정의하는 최소한의 벡터 집합입니다.

e1=[10],e2=[01]\vec{e_1} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}, \quad \vec{e_2} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}

기저의 핵심 성질: 공간의 모든 점을 기저 벡터들의 선형 결합으로 표현할 수 있습니다.

[35]=3e1+5e2\begin{bmatrix} 3 \\ 5 \end{bmatrix} = 3\vec{e_1} + 5\vec{e_2}

기저가 되기 위한 조건:

  • 벡터들이 선형 독립 (어떤 벡터도 나머지의 선형 결합으로 표현 불가)
  • 같은 방향 또는 반대 방향의 벡터는 기저가 될 수 없음

생성 (Span)#

생성(Span) 은 주어진 벡터들의 모든 선형 결합으로 도달할 수 있는 점들의 집합입니다.

벡터 수생성 결과
1개 벡터직선 (1차원)
2개 선형 독립 벡터평면 (2차원)
2개 선형 종속 벡터직선 (1차원만)

기저 = 최소 생성 집합: 공간을 생성하는 데 필요한 최소 개수의 선형 독립 벡터.

공간의 차원보다 많은 벡터가 있으면 항상 선형 종속이 발생합니다.


고유기저 (Eigenbasis)#

선형 변환 AA 를 적용할 때, 대부분의 벡터는 방향이 바뀝니다. 하지만 방향은 유지하고 크기(스케일)만 변하는 특별한 벡터가 있습니다. 이것이 고유벡터(Eigenvector) 입니다.

Av=λvA\vec{v} = \lambda\vec{v}

  • v\vec{v}: 고유벡터 (방향 유지)
  • λ\lambda: 고유값 (스케일 배율)

직관: 고유벡터 방향으로 데이터를 보면, 행렬 곱(복잡한 연산)이 단순한 스칼라 곱으로 바뀝니다.


고유값과 고유벡터 계산#

핵심 공식#

Av=λvA\vec{v} = \lambda\vec{v} AvλIv=0A\vec{v} - \lambda I\vec{v} = \vec{0} (AλI)v=0(A - \lambda I)\vec{v} = \vec{0}

v0\vec{v} \neq \vec{0} 이 되려면 (AλI)(A - \lambda I)특이 행렬 이어야 합니다:

det(AλI)=0(특성 다항식)\det(A - \lambda I) = 0 \quad \text{(특성 다항식)}

2×2 행렬 예시#

A=[5133]A = \begin{bmatrix} 5 & 1 \\ 3 & 3 \end{bmatrix}

1단계 — 특성 다항식:

det(AλI)=det[5λ133λ]=0\det(A - \lambda I) = \det\begin{bmatrix} 5-\lambda & 1 \\ 3 & 3-\lambda \end{bmatrix} = 0

(5λ)(3λ)3=0(5-\lambda)(3-\lambda) - 3 = 0

λ28λ+12=0\lambda^2 - 8\lambda + 12 = 0

(λ6)(λ2)=0(\lambda - 6)(\lambda - 2) = 0

고유값: λ1=6,λ2=2\lambda_1 = 6,\quad \lambda_2 = 2

2단계 — 고유벡터 (λ1=6\lambda_1 = 6):

(A6I)v=0(A - 6I)\vec{v} = \vec{0}

[1133]v=0\begin{bmatrix} -1 & 1 \\ 3 & -3 \end{bmatrix}\vec{v} = \vec{0}

v1+v2=0v1=v2v1=[11]-v_1 + v_2 = 0 \Rightarrow v_1 = v_2 \Rightarrow \vec{v_1} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}

고유벡터 (λ2=2\lambda_2 = 2):

[3131]v=0\begin{bmatrix} 3 & 1 \\ 3 & 1 \end{bmatrix}\vec{v} = \vec{0}

3v1+v2=0v2=[13]3v_1 + v_2 = 0 \Rightarrow \vec{v_2} = \begin{bmatrix} 1 \\ -3 \end{bmatrix}

고유값과 고유벡터는 항상 쌍으로 존재합니다.

고유벡터의 개수#

행렬 크기고유값 특성고유벡터 수
2×2서로 다른 고유값 2개항상 2개
2×2같은 고유값 2개1개 또는 2개
3×3서로 다른 고유값 3개항상 3개
3×3고유값 1개 중복2개 또는 3개
3×3고유값 1개 3중1~3개

주의: 고유값·고유벡터는 정방행렬(square matrix) 에서만 계산 가능합니다.


차원 축소와 투영 (Projection)#

고차원 데이터를 저차원으로 줄이면서 최대한 많은 정보를 보존하는 것이 차원 축소의 목표입니다.

투영의 수식#

데이터 포인트 x\vec{x} 를 단위 벡터 u^\hat{u} 위로 투영:

투영=(xu^)\text{투영} = (\vec{x} \cdot \hat{u})

  • xu^\vec{x} \cdot \hat{u}: 점곱으로 투영값 계산
  • u^\hat{u} 를 단위 벡터 (u^=1\|\hat{u}\| = 1)로 정규화 → 스트레칭 없음

어떤 벡터(방향)로 투영하느냐에 따라 보존되는 정보량이 달라집니다. 분산(퍼짐)이 최대인 방향을 선택해야 정보 손실이 최소화됩니다.


분산과 공분산#

PCA를 이해하려면 두 가지 통계 개념이 필요합니다.

분산 (Variance)#

데이터가 평균에서 얼마나 퍼져 있는지를 나타냅니다.

Var(X)=1ni=1n(xixˉ)2\text{Var}(X) = \frac{1}{n}\sum_{i=1}^n (x_i - \bar{x})^2

공분산 (Covariance)#

두 변수가 같은 방향으로 함께 변하는지 를 나타냅니다.

Cov(X,Y)=1ni=1n(xixˉ)(yiyˉ)\text{Cov}(X, Y) = \frac{1}{n}\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})

공분산 값의미
양수XX 가 크면 YY 도 큰 경향 (같은 방향)
0두 변수 사이에 선형 관계 없음
음수XX 가 크면 YY 는 작은 경향 (반대 방향)

평균과 분산이 같더라도 공분산이 다르면 데이터의 패턴은 전혀 다릅니다.


공분산 행렬 (Covariance Matrix)#

여러 변수들 간의 공분산과 분산을 모두 담은 행렬입니다.

Σ=[Var(X)Cov(X,Y)Cov(Y,X)Var(Y)]\Sigma = \begin{bmatrix} \text{Var}(X) & \text{Cov}(X,Y) \\ \text{Cov}(Y,X) & \text{Var}(Y) \end{bmatrix}

  • 대각 원소: 각 변수의 분산
  • 비대각 원소: 변수 쌍의 공분산
  • 대칭 행렬: Cov(X,Y)=Cov(Y,X)\text{Cov}(X,Y) = \text{Cov}(Y,X)

행렬 표기법:

Σ=1n(Xμ)T(Xμ)\Sigma = \frac{1}{n}(X - \mu)^T(X - \mu)

여기서 XμX - \mu 는 평균을 뺀(중심화된) 데이터 행렬입니다.


PCA — 주성분 분석#

PCA는 투영 + 고유값·고유벡터 + 공분산 행렬을 결합해, 정보를 최대한 보존하며 차원을 줄이는 알고리즘입니다.

핵심 아이디어#

공분산 행렬의 고유벡터 = 데이터가 가장 많이 퍼지는 방향

가장 큰 고유값에 대응하는 고유벡터 = 정보가 가장 많이 담긴 방향 (제1주성분)

PCA 단계별 절차#

1단계 — 데이터 중심화

각 열의 평균을 빼서 평균이 0이 되도록 합니다.

Xcentered=XμX_{\text{centered}} = X - \mu

2단계 — 공분산 행렬 계산

Σ=1nXcenteredTXcentered\Sigma = \frac{1}{n}X_{\text{centered}}^T X_{\text{centered}}

3단계 — 고유값·고유벡터 계산

Σv=λv\Sigma \vec{v} = \lambda \vec{v}

고유값을 내림차순으로 정렬합니다. (λ1λ2\lambda_1 \geq \lambda_2 \geq \cdots)

4단계 — 투영 행렬 생성

원하는 차원 수만큼 고유벡터를 선택해 투영 행렬 VV 를 만듭니다. (각 고유벡터를 단위 벡터로 정규화)

5단계 — 데이터 투영

XPCA=XcenteredVX_{\text{PCA}} = X_{\text{centered}} \cdot V

왜 작동하는가?#

공분산 행렬은 데이터의 퍼짐 방향과 크기를 나타냅니다. 이것을 선형 변환으로 보면, 고유벡터는 변환이 회전 없이 늘리기만 하는 방향이고, 고유값은 얼마나 늘리는지를 나타냅니다.

가장 큰 고유값의 고유벡터 방향으로 투영하면 → 데이터의 분산(정보)이 최대 보존됩니다.

실무에서는? scikit-learn의 PCA(n_components=2) 가 이 과정을 자동으로 수행합니다. 얼굴 인식, 노이즈 제거, 시각화에 널리 사용됩니다.

from sklearn.decomposition import PCA
import numpy as np

X = np.array([[2.5, 2.4], [0.5, 0.7], [2.2, 2.9],
              [1.9, 2.2], [3.1, 3.0], [2.3, 2.7]])

pca = PCA(n_components=1)
X_pca = pca.fit_transform(X)

print("고유값:", pca.explained_variance_)
print("고유벡터:", pca.components_)
print("변환된 데이터:", X_pca)

마르코프 행렬과 이산 동적 시스템#

고유벡터의 실용적인 응용 중 하나가 마르코프 행렬입니다.

마르코프 행렬 (Markov Matrix)#

  • 각 원소가 0 이상
  • 열(column)의 합이 1 — 상태 전이 확률을 나타냄

M=[0.90.20.10.8]M = \begin{bmatrix} 0.9 & 0.2 \\ 0.1 & 0.8 \end{bmatrix}

(예: 맑은 날 → 맑을 확률 90%, 맑은 날 → 흐릴 확률 10%)

상태 벡터 업데이트#

현재 상태 st\vec{s}_t 에서 다음 상태:

st+1=Mst\vec{s}_{t+1} = M \cdot \vec{s}_t

이 과정을 반복하면 상태 벡터가 수렴(평형) 합니다.

s=평형 벡터 (equilibrium vector)\vec{s}_\infty = \text{평형 벡터 (equilibrium vector)}

평형 벡터 = 고유값 1에 대응하는 고유벡터

마르코프 행렬은 항상 고유값 1을 가지므로, 장기 균형 상태를 고유벡터로 구할 수 있습니다.

실무에서는? Google의 PageRank 알고리즘이 마르코프 행렬을 사용해 웹페이지 순위를 계산합니다.


전체 핵심 정리#

개념설명
행렬식 = 넓이선형 변환이 단위 정사각형을 얼마나 늘리는지
det(AB)=det(A)det(B)\det(AB) = \det(A)\det(B)곱의 행렬식 = 행렬식의 곱
det(A1)=1/det(A)\det(A^{-1}) = 1/\det(A)역행렬의 행렬식 = 역수
기저공간을 생성하는 최소 선형 독립 벡터 집합
생성(Span)벡터들의 모든 선형 결합으로 도달 가능한 점 집합
고유벡터변환 후 방향이 바뀌지 않는 벡터
고유값고유벡터의 스케일 배율
특성 다항식det(AλI)=0\det(A - \lambda I) = 0 으로 고유값 계산
공분산 행렬변수 간 분산/공분산을 담은 대칭 행렬
PCA공분산 행렬의 고유벡터로 정보 최대 보존 차원 축소
마르코프 행렬상태 전이 확률 행렬, 평형 = 고유벡터

퀴즈#

Q1. det(A)=4\det(A) = 4, det(B)=3\det(B) = -3 일 때, det(AB)\det(AB)det(A1)\det(A^{-1}) 를 구하세요.

정답 보기

det(AB)=det(A)det(B)=4×(3)=12\det(AB) = \det(A) \cdot \det(B) = 4 \times (-3) = -12

det(A1)=1det(A)=14=0.25\det(A^{-1}) = \frac{1}{\det(A)} = \frac{1}{4} = 0.25

det(AB)<0\det(AB) < 0 이므로 이 변환은 공간을 반전시킵니다.


Q2. 집합 {(1,2), (4,8)}\{(1, 2),\ (4, 8)\}R2\mathbb{R}^2 의 기저가 될 수 있나요?

정답 보기

(4,8)=4(1,2)(4, 8) = 4 \cdot (1, 2) 이므로 두 벡터는 선형 종속입니다.

같은 방향의 벡터는 직선만 생성하므로 R2\mathbb{R}^2 의 기저가 될 수 없습니다.


Q3. 다음 행렬의 고유값을 구하세요.

A=[3102]A = \begin{bmatrix} 3 & 1 \\ 0 & 2 \end{bmatrix}

정답 보기

det(AλI)=det[3λ102λ]=(3λ)(2λ)=0\det(A - \lambda I) = \det\begin{bmatrix} 3-\lambda & 1 \\ 0 & 2-\lambda \end{bmatrix} = (3-\lambda)(2-\lambda) = 0

고유값: λ1=3,λ2=2\lambda_1 = 3,\quad \lambda_2 = 2

(삼각 행렬의 고유값은 대각 원소입니다.)


Q4. PCA에서 가장 큰 고유값에 해당하는 고유벡터를 선택하는 이유는?

정답 보기

고유값은 해당 방향으로 데이터가 얼마나 퍼지는지(분산) 를 나타냅니다.

가장 큰 고유값 = 데이터의 분산이 최대인 방향 = 정보가 가장 많이 보존되는 방향.

따라서 차원을 줄일 때 정보 손실을 최소화하려면 가장 큰 고유값의 고유벡터 방향을 선택해야 합니다.


Q5. 마르코프 행렬 MM 의 평형 벡터는 무엇의 고유벡터인가요?

정답 보기

마르코프 행렬의 고유값 1 에 대응하는 고유벡터입니다.

Ms=1s=sM\vec{s} = 1 \cdot \vec{s} = \vec{s}

즉, 상태 벡터를 아무리 업데이트해도 더 이상 변하지 않는 고정점(fixed point) 이 평형 벡터이며, 이것이 고유값 1의 고유벡터입니다.


이것으로 선형대수 기초 시리즈를 마칩니다. 1장부터 4장까지의 여정을 요약하면:

핵심 주제
1장방정식 시스템, 특이성, 행렬식
2장소거법, 행 사다리꼴, 랭크, 가우스 소거법
3장벡터, 선형 변환, 행렬 곱셈, 역행렬, 퍼셉트론
4장고유값·고유벡터, PCA, 마르코프 행렬

관련 포스트