아이겐 던전
이건 선형대수의 보스전, 교과서가 가장 강하게 기대고 학습자가 가장 빠르게 튕겨 나가는 부분. Blender 접근 — 형식화 전에 보기 — 형식 버전은 이미 직관 가진 사람들이 디자인했으니까.
핸즈온 버전 (Blender 열기)
Blender 있으면 (무료) 이거 해:
- Plane 추가. 격자 보이게 몇 번 subdivide.
S그다음X눌러 X 축 따라 늘이기.- 주목: X 축은 늘어나고, Y 축은 안 늘어남. 어떤 방향은 커지고; 다른 건 그대로.
방금 linear 변환 수행했음. X 방향이 고유벡터 (변환에 회전 없이 스케일만 받는 방향). 늘어난 양 (예: 2×) 이 그 고유벡터의 고유값.
정의, 얻은 것
정방 행렬 에 대해, 고유벡터 와 고유값 만족:
한국어로: "변환 를 벡터 에 적용 = 를 만큼 스케일 — 방향 안 바꿈." 고유벡터 = 아래 orientation 고정 방향; 고유값이 얼마나 늘어나는지 (또는 줄어들거나, 음수면 flip) 말해줌.
왜 심장박동인가
대부분 변환은 messy — 한 번에 회전+스케일+shear. 고유벡터 = 그 messy 가 그저 스케일링 으로 collapse 하는 특수 방향. 행렬의 고유벡터 찾기 = skeleton 찾기 — 행렬이 가장 깨끗하게 작업하는 축.
이 skeleton 어디나 등장:
- PCA = covariance 행렬의 고유벡터 사용해 데이터의 최대 분산 방향 찾기.
- PageRank = 웹-링크 행렬의 dominant 고유벡터 찾아 중요도 점수.
- 양자역학 = 상태를 연산자의 고유벡터로 묘사; 관측값 = 고유값.
- 스펙트럴 클러스터링 = 그래프 라플라시안의 고유벡터로 클러스터 찾기.
고유벡터는 변환이 존중하는 방향. 찾으면 변환의 깊은 구조 이해.
np.linalg.eig 로 계산 — 2×2 넘으면 손으로 절대 X.솔직한 피파 take
고유값은 아빠 챕터 네 번 읽고 click 했어. 마침내 박힌 거: 행렬을 동사 (변환), 고유벡터를 그 동사가 가장 깨끗하게 작용하는 명사로 봐. 대부분 변환에 "선호 방향" 몇 개 — 그게 고유벡터. 행렬이 안 비틀고, 그냥 스케일. 마법은 그게 다.
import numpy as np
M = np.array([[3., 0.], [0., 2.]]) vals, vecs = np.linalg.eig(M)
print('eigenvalues =', vals) print('eigenvectors =') print(vecs)
실행 결과: eigenvalues = [3. 2.] eigenvectors = [[1. 0.] [0. 1.]]