기본 콘텐츠로 건너뛰기

라벨이 비정방행렬인 게시물 표시

[matplotlib]quiver()함수

[Linear Analysis] 특이값(Singular Value)

특이값분해(Singular Value Decomposition) 내용 비정방행렬의 고유값분해 특이값 비정방행렬의 고유값분해 고유 분해 , 스펙트럴 분해 등은 가역적인 정방 행렬 을 대상으로 합니다. 이에 반해 특이값을 이용하는 특이값 분해(Singular Value Decomposition) 는 비정방 행렬 을 정방행렬로 변형하여 분해할 수 있는 방법으로 선형 대수의 계산에서 가장 유용하게 사용되고 있습니다. 비정방행렬은 행렬에 그 행렬의 전치행렬과의 행렬곱으로 정방행렬로 만들 수 있습니다. import numpy as np import numpy.linalg as la from sympy import * np.random.seed(1) X=np.random.randint(0, 11, (3, 4)) print(X) [[5 8 9 5] [0 0 1 7] [6 9 2 4]] XTX=np.dot(X.T, X) print(XTX) [[ 61 94 57 49] [ 94 145 90 76] [ 57 90 86 60] [ 49 76 60 90]] 위 결과와 같이 전치행렬과의 행렬곱으로 생성한 정방행렬은 대칭행렬이 됩니다. 이 대칭행렬의 고유행렬은 다음과 같이 전치행렬과 역행렬이 같으므로 정규직교(Orthonormal)행렬 이 됩니다. 이 결과는 정방행렬이면서 대칭행렬이므로 행렬의 대각화에 기반을 둔 분해(decomposition)가 가능합니다. d, P=la.eig(XTX) np.allclose(P.T, la.inv(P)) True 정방행렬 A의 고유값과 고유벡터의 관계와 고유벡터는 단위벡터인 점을 적용하면 식 1이 성립합니다. 즉, 행렬 A와 고유벡터(v)와의 내적의 크기는 고유벡터에 대응하는 고유값의 크기와 같아집니다. \begin{align}Av_1& =\lambda_1v_1, \Vert{v_1}\Vert=1\\\tag{식 1} \Vert{Av_1}\Vert...