비지도 학습 - PCA(주성분분석)
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
행렬의 고유값과 고유벡터
참고 1. 행렬의 고유값과 고유벡터란? 고유벡터(eigen vector) : $n\times n$ 정방행렬(고유값, 고유벡터는 정방 행렬에 대해서만 정의됨) A에 대해서 $\mathbf{Av=\lambda v}$를 만족하는 0이 아닌 벡터 고유값(
velog.io