AI/model

비지도 학습 - PCA(주성분분석)

bitpoint 2024. 4. 27. 16:10

PCA(Principal Component Analysis) 란?

주성분분석은 특성들을 압축할 수 있는 비지도 학습이다. target값은 사용되지 않으며 특성데이터만으로 주성분을 찾는다. F 를 특성백터라고 하면 F에 대해  transpose 한 행렬을 곱해주는 간단한 연산을 통해, 공분산행렬 A을 만들 수 있다. 공분산행렬 A에 대해 Ax = lamda(상수)*x을 만족시켜주는 고유백터 x를  det(A- lamda * I) =0 (특성 방정식/characteristic equation)을 통해 찾는다. 역행렬이 존재하면 x=0 이 되므로 det = 0 이어야 한다.

 

PCA의 의미

의미적으로 공분산행렬의 고유백터를 찾는 과정은 선형변환이 이루어질 때, 여전히 그 방향을 유지하는 벡터들을 찾는 것이다. 고유값의 크기에 따라 차등하여 일부만 사용하면, 특성의 수보다 작은 데이터로 전체를 표현할 수 있다는 점에서 '압축'의 역할을 한다고 볼 수도 있다.

 

고유백터(PC1,PC2..)는 특성수만큼 있다.

찾은 고유백터 중(여러개이며, full rank의 경우 특성의 수) 고유값이 가장 큰 값이 해당 F의 특징을 가장 잘 반영할 것이므로 해당백터를 주축으로 선택한다. 그 이후는 고유값이 큰 순서대로 다음 주성분이 된다. 각각의 고유백터들은 서로 직교하는 기저백터(평면에서 x,y축 같은)다.

 

※공분산행렬과 고유백터의 기본전제

공분산행렬은 positive definite이므로, 공분산행렬의 고유값은 음수가 아니다. 또한 고유백터들은 서로 직교한다. 그 이유는 대칭행렬인 공분산행렬의 특성에 따른 것이다. 고유백터끼리의 내적값이 0임을 통해 이를 증명할 수 있다.

 

압축이 사실이라면 복원도 가능해야 한다

Av(공분산행렬*고유백터)들을 옆으로 쭉 나열하여 붙인 AP는 고유값*고유백터를 나열한 것과 동일하므로,  AP = P* (고유치의 대각선행렬) 형태로 나타낼 수 있다. P의 역행렬을 통해 A는 다시 복원될 수 있다(전체 주성분이 아니면 일부 복원된다)

 

https://nyamin9-data.tistory.com/77

 

🚩 데이터마이닝 16. Reduction - 주성분분석(PCA)

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!! 이번 포스팅에서는 Dimensionality Reduction 중의 Principal Component Analysis, 주성분분석에 대

nyamin9-data.tistory.com

 

https://velog.io/@lighthouse97/%ED%96%89%EB%A0%AC%EC%9D%98-%EA%B3%A0%EC%9C%A0%EA%B0%92%EA%B3%BC-%EA%B3%A0%EC%9C%A0%EB%B2%A1%ED%84%B0

 

행렬의 고유값과 고유벡터

참고 1. 행렬의 고유값과 고유벡터란? 고유벡터(eigen vector) : $n\times n$ 정방행렬(고유값, 고유벡터는 정방 행렬에 대해서만 정의됨) A에 대해서 $\mathbf{Av=\lambda v}$를 만족하는 0이 아닌 벡터 고유값(

velog.io