임의의 두 벡터를 더하거나 스칼라 값을 곱하는 것, 즉 데이터를 변환한다.
matrix를 곱하는 것을 통해 벡터(데이터)를 다른 위치로 옮긴다.
어떠한 기준을 가지고 선형변환을 해야할지 결정해야한다.
데이터의 형태에 따라서 변하는 정도가 다르다.
transformation에 영향을 받지않는 벡터를 고유벡터라 한다.
고유벡터에 대해서 변화하는 크기 (스칼라 값)
Eigenvector와 Eigenvalue는 항상 쌍을 이루고 있다.
고유값을 배우는 이유? : 데이터의 선형변환 가짓수 중에서 하나를 선택하는 기준을 만들어준다.
feature의 수가 많아서 생기는 문제점을 의미
시각화에 대한 의미가 사라지기 때문에
fair plot의 형태로 해결이 가능, but, 동일한 변수조합에 대한 불필요한 plot 존재, 너무 많은 plot 형성
데이터의 일부를 제한하더라도 의미파악에 차이가 없다면 feature를 더 사용하는 것은 비효율적인것이 됨
정해진 기준이 있는 것은 아니지만 feature의 수를 P, sample의 수를 N이라 할 때 P>=N의 경우 overfitting 이슈가 생긴다.
빅데이터 처리를 위한 차원축소 기술
차원축소 방법 : Feature Selection, Feature Extraction
Feature Selection : feature 중 중요한 것을 제외하고 제거
1) 장점 : 선택된 feature 해석이 쉬움
2) 단점 : feature들간의 연관성을 고려해야함
Feature Extraction : feature를 조합해서 사용 (PCA가 여기 속함)
1) 장점 : feature들간의 연관성이 고려됨, feature 많이 줄일 수 있음
2) 단점 : feature 해석이 어려움
낮은 차원으로 차원 축소함으로써 효과적인 분석가능
clustering으로 이어질 수 있다.
정보를 최대한으로 유지하는 방향으로 이용
feature중에서 분산이 큰 feature를 사용해야한다.
데이터를 준비
각 열에 대해서 평균을 빼고, 표준편차로 나누어서 Normalize
분산-공분산 매트릭스 계산
분산-공분산 매트릭스의 고유벡터와 고유값 계산
데이터를 고유벡터에 projection 시킴 (matmul)
만들어진 feature중 선택해서 사용
sklearn에서 이용가능
StandardScaler(), fit_transform() : Standardized Data를 만드는 과정
PCA() : 축소할 차원의 개수 지정
components_ : Eigenvectors 확인
explainedvariance : Eigenvalues 확인
standardized data가 손으로 계산한 것과 다른이유 : 자유도(ddof)가 1이나 0이냐를 통해서 생긴 차이 (critical하진 않다)
데이터에 대해 독립적인 축을 찾을 수 있다.
분포가 정규성을 띄지 않는 경우 적용이 어렵다. (이 경우 커널 PCA 이용)
분류/예측 문제에서는 데이터 라벨 고려하지 않으므로 효과적 분리 어려움 (이 경우 PLS 이용)