PCA(Principal Components Analysis) 란?
대표적인 차원 축소(dimension reduce) 방법 중 하나다. 본인이 가진 데이터를 최대한 보존하면서 compact 한 자료를 만드는 것이 목적이다. 전진 선택법, 후진제거법, 유전 알고리즘 등 변수제거를 하는 방식이 아니라 차원을 축소하는 것이다. 원래 데이터의 분산을 최대한 보존할 수 있는 기저를 찾는 것이다. 각 점

예를 들어 아래와 같이 7이라는 이미지가 있으면 7로 분류하려고 하는데, 7의 차원이 28*28으로 784 차원으로 되어 있다면 여태껏 어느 변수들과는 다른 엄청 큰 feature를 가진 데이터 타입이 되게 됩니다. 그렇기 때문에 PCA로 차원을 2차원 혹은 3차원으로 축소시켜 확인하는 것이다.

데이터의 분산이 더 큰 기저를 선호하겠다라는 뜻이며, 그 기저의 역할은 분산을 가장 많이 보존하는 것이다. 원래의 변수를 X로 표현하고, principal component 를 a라고 하겠다. 이렇게 나온 분산 값을 계산하여 이 분산이 최대가 되는 기저a를 찾아가는 것이다.

첫 번째 기저(basis) 에서 구할 수 있는 분산의 양(

Covariance
Covariance는 PCA를 설명할 때 가장 기본적으로 알고 있어야 되는 개념이라고 할 수 있다.
- X = data set ( m by n, m : # of variables, n : # of records ) column vector (m*n = dimension)
-
-
- Total variance of the data set :
Projection onto a basis

eigen value and eigen vector
하나의 행렬이 주어졌을 때 이 행렬은


A matrix는 역행렬이 존재하는 d by d 행렬이라고 가정하면, A matrix는 d개의 eigenvalue-eigenvector pairs를 가진다. 모든 eigenvector는 서로 직교한다.
A matrix의 diagonal 합 =
해당 부분을 개념적으로 접근하고 싶다면 여기를 참고하고, 역행렬에 대해서 조금더 자세히 알고 싶다면 여기를 참고하자
step 1 평균을 0으로
평균을 0으로 만들어주게 되면
from sklearn.preprocessing import StandardScaler
sds = StandardScaler()
x[iris.feature_names] = sds.fit_transform(x[iris.feature_names])
step 2 최적화

step 3 기저 찾기
주성분을 두가지 선택했을 경우 97%의 설명력을 지닐 수 있다


단점
1. 몇개의 주성분을 사용하여 차원을 축소할 것인가에 대한 명시적인 정답은 없다.
2. 정량적, 정성적인 방법으로 판단할 수 있다. (몇 퍼센트의 값을 가져올 것인가?, 전문가의 견해가 담긴 차원 축소)
- 정량적인 판단에서는 elbow point 를 선택하는 경우가 대부분, 평가기준이 사람마다 다르다.
3. 비선형적인 구조를 가진 데이터에서는 좋은 설명력을 가질 수 없다.
