카테고리 없음

10. Principal Component Analysis (,PCA)

Dogun Kim 2024. 6. 19. 13:41

10주차. Principal Component Analysis

 

서울시립대학교 인공지능학과 노영민 교수님의 데이터 마이닝 강의를 정리함을 미리 알립니다.

 

  • cf. 선형대수 기초 지식 

Unit vector : 단위 벡터

Orthogonal vectors : 두 벡터가 직교할 때

Orthonormal vectors : 정규 직교 벡터. 두 벡터가 크기가 1이고 직교할 때.

Orthogonal Matrix : 직교 행렬. 모든 Column이 정규 직교 벡터. + n x n 정방 행렬

$q_1, q_2 ... q_n$은 서로 수직인 단위 벡터. # A가 직교 행렬이다 <-> $A^{-1} = A^T $ **

 

Eigenvalue & Eigenvector : 고유치, 고유 벡터

고유치, 고유 벡터의 정의. 행렬 변환이 상수인 고유치로 치환이 될 때.. 해당하는 X가 고유 벡터.
고유치, 고유 벡터 뽑아내는 예시.

위 풀이를 증명하면 다음과 같다. $Ax = λx$ <-> $Ax - λx = 0$ <-> $(A - λI)x = 0$

만약 고유 벡터가 0벡터라고 하자. 그러면 고유치는 어떤 숫자든 들어올 수 있다. 이는 별 수학적 의미가 없다..

 

우리는 0이 아닌 고유 벡터에 대해 관심이 있다. $(A - λI)x = 0$ 에서 만약 $(A - λI)$ 의 역행렬이 존재한다면...

$(A - λI)x = 0$ <-> $Ix = (A - λI)^{-1} 0$ <-> $x = (A - λI)^{-1} 0$  <-> $x = 0$이 나온다.

0이 아닌 고유 벡터를 관찰하기 위해서는 $(A - λI)$ 행렬은 역행렬이 존재하지 않은 비가역 행렬이어야 한다.

$det(A - λI) = 0$ 이며, 여기서 고유치를 뽑을 수 있다. 뽑은 고유치를 $(A - λI)x = 0$에 대입하여 고유 벡터도 구한다.

고유 벡터는 무수히 많을 수 있다.

 

  • cf. 선형대수 기초 지식 - Eigen decomposition(고유값 분해)

엄밀하게 말하면 A는 직교 대각화가 가능한 대칭 행렬은 아니므로, $A = Q Λ Q^{-1}$ 이 맞다..

A는 아직 n개의 선형 독립 고유 벡터를 갖는 nxn 정방행렬이다. Q를 A의 고유 벡터로 구성하면 위 식이 성립한다.

 

A가 만약 대칭 행렬이라면, 모든 고유 벡터가 직교한다. 즉 Q를 서로 독립인 고유 벡터이자, 크기가 1인 직교 벡터로 구성할 수 있다. 그런 경우 Q는 직교 행렬이 되어 $Q^{-1} = Q^T $  이므로 $A = Q Λ Q^{T}$를 만족한다. 

고윳값 분해 예시

 

이렇게 고유값 분해가 된 행렬은 다음과 같은 성질을 만족한다.

먹승, 역행렬, 행렬식, 대각합

Q. A가 대칭행렬일 때, 대각화가 가능하다. **증명**

 

  • cf. 선형대수 기초 지식 - 특이값 분해 ***

대칭 행렬 A는 특이값 분해가 가능하다. # q는 정규 직교 벡터. 이를 통해 근사가 가능하다.
Geometrical Analysis

대칭행렬 A에대한 X의 행렬 변환(AX)은 특이값 분해를 통해 다음과 같이 전개할 수 있다.

q1, q2, q3는 정규직교 벡터이므로....

해당 행렬 변환은 X벡터를 q1, q2, q3방향 벡터로 분해하고, λ1, λ2, λ3으로 크기를 조정한 의미를 갖는다.

 


 

  • Principal Component Analysis(,PCA) 주성분 분석 # 차원 축소, # 데이터를 표현할 때 가장 중요한 차원 축 찾기

우리는 고차원 데이터를 저차원 데이터로 축소해서 표현하고 싶은 것이다. 다음과 같은 예시를 보자

기존의 데이터셋. 이를 1차원으로 차원 축소하고 싶다.

어떤 축으로 축소할지 결정함에 따라 데이터가 정사영된다.

우리는 데이터 손실을 막기 위해 데이터 차원을 축소해도 데이터가 덜 겹치는 방향을 찾아 정사영을 해야한다.

축소 전, 후의 Error가 가장 작도록 분산이 가장 큰 차원 축을 찾아 정사영 해야한다.

(분산이 크면 넓게 펴지니까 겹치지 않는다. 즉 전, 후 에러가 줄어든다)

 

이를 해결하는 최적화 문제, 라그랑즈 승수법, 라그랑즈 듀얼을 소개하겠다. (SVM을 공부하고 오면 편하다.)

 

i) 벡터의 시점이 0으로 오도록 정규화를 진행한다. = 평균이 0이도록 정규화를 진행한다.

 

ii) 찾고자 하는 분산이 가장 큰 = 축소 전 후error가 가장 작은 축을 w라고 하자. 이는 decision variable이다.

사영 전 벡터와 w축에 사영한 벡터의 차이를 에러라고 보고, 음수/양수 일 수 있으니 제곱하여 평균낸다. 이가 바로 에러의 총합이 될 것이다. 이를 최소로하는 w를 찾으면 된다. w축 방향의 w 벡터는 단위 벡터로 두자.

original problem

위 목적 함수를 전개하면 다음과 같은 결과가 나온다.

S: 표본에 대한 공분산 행렬이다.

 

이를 라그랑즈 승수법 문제로 바꾸고, 듀얼 문제를 풀면 최대 목적함수 값과 w를 구할 수 있다.