기본 콘텐츠로 건너뛰기

라벨이 공분산행렬인 게시물 표시

[matplotlib]quiver()함수

[data analysis] 데이터 행렬의 차원 축소

데이터 행렬의 차원 축소 관련된 내용 고유벡터(Eigenvector)와 고유값(Eigenvalue) 직교행렬과 주성분 주성분 분석(Principal component analysis, PCA)은 데이터 행렬의 차원을 축소시키는 기법으로 그 행렬의 고유값과 고유벡터를 기준으로 새로운 변수 행렬을 생성합니다. 행렬 A에 대해 식 1을 만족하는 벡터 x와 스칼라 λ를 각각 고유벡터와 고유값이라고 합니다. \begin{align}\tag{식 1}Ax &= λx\\ A,\, x,\, \lambda:&\;\text{행렬, 고유벡터, 고유값(스칼라)}\end{align} 식 1의 행렬 A와 벡터 x의 행렬곱은 행렬 A의 선형변환입니다. 즉, x는 행렬 A를 선형적으로 확대, 축소, 또는 회전하기 위한 벡터가 됩니다. 식의 우항인 벡터와 스칼라 곱은 벡터의 크기만 변환하며 방향은 유지 됩니다. 그러므로 식이 만족한다는 것은 행렬 A의 방향을 나타낼 수 있으며 그 방향을 유지하면서 행렬의 변환을 일으킬 수 있는 스칼라가 존재함을 나타냅니다. 이러한 벡터와 스칼라를 고유벡터(eigenvector), 고유값(eigenvalue)이라고 합니다. 고유벡터(eigenvector) : 벡터의 선형변환시 변하지 않는 방향을 나타내는 벡터로 그 변하지 않는 방향을 주축(principal axis) 라고 합니다. 고유값(eigenvalue) : 고유벡터의 크기를 결정하는 값 행렬의 고유값과 고유벡터는 numpy.linalg.eig() 함수로 확인할 수 있습니다. import numpy as np A=np.array([[3,2],[2,4]]) print(A) [[3 2] [2 4]] eval,evec=la.eig(A) print(evec.round(3)) [[-0.788 -0.615] [ 0.615 -0.788]] print(eval.round(3)) [1.438 5.562] 두 객체의 값들을 비교하기 위해 numpy.al...

[data analysis] 다중 공선성(Multicolinearity)

다중 공선성(Multicolinearity) 최소자승법 은 모델에 의해 생성되는 오차를 최소화하도록 설계된 방법입니다. 식 1은 기사 '회귀계수의 추정: 최소제곱법(Least Square method)'의 식 8 을 자세히 나타낸 것입니다. \begin{align} \text{MSE}&=(y-X\beta)^T(y-X\beta)\\ \frac{\partial \text{MSE}}{\partial \beta}&=\frac{\partial }{\partial \beta}(y-X\beta)^T(y-X\beta)=0\\ & \Leftrightarrow \frac{\partial }{\partial \beta}(y^T-X^T\beta^T)(y-X\beta)\\ \tag{식 1}& \Leftrightarrow \frac{\partial }{\partial \beta}\left(y^Ty-y^TX\beta -\beta^TX^Ty+\beta^TX^TX\beta \right) \\ & \Leftrightarrow \frac{\partial }{\partial \beta}\left(y^Ty-y^TX\beta -(y^TX\beta)^T+\beta^TX^TX\beta \right) \\ & \Leftrightarrow -y^TX - X^Ty + 2X^TX\beta =0\\ & \Leftrightarrow X^TX\beta = X^Ty \\ & \Leftrightarrow \beta=(X^TX)^{-1}X^Ty\\ \because&\; X^Ty \leftrightarrow y^TX,\quad b^TX^TXb \leftrightarrow X^2b^2\end{align} 식 1에서 나타낸 것과 같이 회귀계수는 X T X의 역행렬에 의존합니다. 또한 행렬 X T X에 의해 공분산 행렬를 계산할 수 있습니다( 공분산과 상관계수의 식 6 참조 ). 그러므로 이 행렬의 대각요소들을 각 변수의 분산, 대...

[data analysis] 공분산과 상관계수

공분산과 상관계수 연속변수일 경우 $\chi^2$ 검정 의 대상이 되는 교차표를 작성할 수 없습니다. 대신에 상관분석을 적용할 수 있습니다. 상관분석 은 두 개 혹은 그 이상의 연속변수들 사이의 관계를 측정하는 분석 방법입니다. 두 변수의 상관성을 시각적으로 나타내기 위해 산포도를 사용합니다. 그림 1의 (a)는 x와 y의 정비례 관계가 명확합니다. 반면에 (b)의 경우는 반비례관계를 보이며 (c)의 경우는 x와 y 사이에 어떠한 비례 관계를 특정할 수 없습니다. 이러한 관계는 상관계수라는 통계량을 사용하여 정량적으로 나타낼 수 있으며 이는 두 변수의 공분산과 각각의 표준편차와 관계됩니다. 그림 1. 두 변수의 (a) 정상관계 (b)역상관계 (c)상관성없음. plt.figure(figsize=(9, 4)) col=["blue","red","green"] lab=["a) direct","b) inverse", "c) no"] yT=[y, y1, y2] for i in range(3): plt.subplot(1,3,i+1) plt.scatter(x, yT[i], s=15, color=col[i]) plt.title(f"{lab[i]} proportion", fontsize=15) plt.xticks([]) plt.yticks([]) plt.xlabel("x") if i==0: plt.ylabel("y") plt.show() 그림 1(a)에서 각 변수의 평균들 μ x , μ y 와 임의의 점 x, y 사이에 각각의 편차를 x - μ x , y - μ y 를 측정합니다(식 1). 이 경우 x의 증가와 함께 y의 증가가 관찰되므로 두 편차의 곱 (x - μ x )(y -μ y )는 각각의 편차보다 증가하며 양수가 될 것입니다. 같은 ...

[data analysis] 직교행렬과 주성분

직교행렬과 주성분(Principal Component) 식 1의 행렬 X를 평균-편차 형태 로 가정합니다. $$\tag{식 1}X=\left[\begin{matrix} x_1 & x_2 & \cdots &x_n \end{matrix}\right]$$ 주성분분석의 목적은 식 2와 같이 X=PY 형태로 변환가능한 p×p차원의 직교 행렬 P를 발견하는 것입니다. \begin{align}\tag{식 2} \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_p \end{bmatrix} & = \begin{bmatrix}u_1 & u_2 & \cdots & u_p \end{bmatrix}\begin{bmatrix}y_1 \\ y_2 \\ \vdots \\ y_p \end{bmatrix}\\ P&=\begin{bmatrix} u_1 & u_2 & \cdots & u_p \end{bmatrix} \end{align} 식 2에서 새로운 변수 $y_1, y_2, \cdots, y_p$는 상관성이 없고 내림차순으로 정렬된 형태입니다. Y는 P에 대해 X의 좌표벡터 가 됩니다. P가 직교행렬이므로 식 3이 성립합니다( 정규직교의 특징 참조 ). $$\tag{식 3}P^{-1}PY=P^TPY=P^TX \rightarrow Y=P^TX$$ 식 3으로 부터 새로운 변수인 Y 역시 평균-편차 형태이므로 Y의 공분산 행렬을 유도 할 수 있습니다(식 4). $$\tag{식 4}YY^T=(P^TX)(P^TX)^T=P^TXX^TP=P^TSP$$ S는 변수 X에 대한 공분산 행렬로서 대칭행렬입니다. 식 4에서 $YY^T=A$라 하고 S에 대해 정리하면 식 5와 같습니다. $$\tag{식 5}S=PAP^T$$ S가 대칭행렬이고 P가 직교행렬이므로 위 식은 스펙트럴 분해 와 동일한 형태가 됩니다. 그러므로 행렬 $A=YY^T$는 행렬 S의 고유값들을 내림차순으로 정렬한 값들을 대각...