선형변환
임의의 두 벡터 덧셈 or 스칼라 곱
matrix를 곱하는 것을 통해, 벡터(데이터)를 다른 위치로 옮긴다
Linear projection도 일종의 vector transformation
Eigenvector (고유벡터)
주어진 transformation에 대해서 크기만 변하고 방향은 변화 하지 않는 벡터
Eigenvalue (고유값)
변화하는 크기 = 스칼라 = 고유값
피쳐의 수가 많은 (100 혹은 1000개 이상의) 데이터셋을 모델링하거나 분석할때에 생기는 여러 문제점들
변수들의 가능한 조합에 대해서 scatter plot
동일한 변수 조합에 대해서는 histogram
대각선을 기준으로 그래프가 대칭 -> 상당히 많은 양의 불필요한 scatterplot
유의미한 Feature을 선별할 필요성 -> Dimension Reduction
feature의 수가 sample 수보다 같거나 많을 때, overfitting 문제 발생
Feacture Selection
데이터셋에서 덜 중요한 feature를 제거
Feature Extraction (Feature engineering과 유사)
기존에 있는 Feature 혹은 그들을 바탕으로 조합된 Feature를 사용
PCA도 Feature Extraction의 한 종류
장점 : 선택된 feature 해석이 쉽다.
단점 : feature들간의 연관성을 고려해야함.
예시 : LASSO, Genetic algorithm 등
장점 : feature 들간의 연관성 고려됨. feature수 많이 줄일 수 있음
단점 : feature 해석이 어려움.
예시 : PCA, Auto-encoder 등
고차원 데이터를 효과적으로 시각화 + clustering
원래 고차원 데이터의 정보(분산)를 최대한 유지하는 벡터를 찾고
해당 벡터에 대해 데이터를 (Linear) Projection
데이터의 흩어진 정도를 가장 크게 하는 벡터 축(분산이 가장 큰 축)에
데이터를 (Linear) Projection
다차원 데이터를 2차원으로 축소
제일 정보 손실이 적은 2차원 고르기
PCA는 고차원의 데이터를 분산을 유지하는 축 (PC)을 기반으로 데이터를 변환
-> PC 들중 일부를 사용하는 것으로 차원 축소 가능
실제로는 sklearn 라이브러리 사용
from sklearn.preprocessing import StandardScaler, Normalizer
from sklearn.decomposition import PCA
# Normalize
scaler = StandardScaler()
# Standardized Data
Z = scaler.fit_transform(X)
# 차원결정 (2차원)
pca = PCA(2)
pca.fit(X)
# Projected Data
B = pca.transform(X)