차원이 커질수록 데이터 포인트들간 거리가 크게 늘어남
데이터가 희소화 됨
수백~수천개 이상의 피처로 구성된 포인트들간 거리에 기반한 ML알고리즘이 무력화됨
피처가 많을경우 개별 피처간에 상관관계가 높아 선형 회귀와 같은 모델에서는 다중 공선성 문제로 모델의 예측 성능이 저하될 가능성이 높다.
그런 피처들을 학습 데이터 크기를 줄여서 학습 시간 절약.
모델 성능 향상에 기여
시각적으로 쉽게 데이터 패턴 인지
어떻게 하면 원본 데이터의 정보를 최대한으로 유지한채 축소할 것인가?
피처선택 : 종속성이 강한 불필요한 피처는 아예 제거, 데이터 특징만 나타내는 주요 피처 선택
피처추출 : 기존 피처를 요약해서 새롭게 피처를 만들어 내는것 -> 차원축소에 적합
단순 압축이 아닌, 피처를 함축적으로 더 잘 설명할수 있는 또 다른 공간으로 매핑해 추출하는것
(추천엔진, 이미지 분류및 변환, 문서토픽 모델링)에 사용
PCA :
고차원의 원본 데이터를 저차원의 부분공간으로 투영하여 데이터를 축소하는 기법
EX) 10차원의 데이터를 2차원의 부분공간으로 투영하여 데이터를 축소
원본 데이터가 가지는 데이터 변동성을 가장 중요한 정보로 간주하여 이 변동성에 기반한 원본 데이터 투영으로 차원 축소를 수행. 변동성이 가장 큰 반향으로 순차적으로 축들을 생성하고, 데이터를 투영하는 방식
두번째로 변동성이 큰 축은 첫번째 축의 직각이 되는 방향성.
매우 작은 주성분으로 원본 데이터의 총 변동성을 대부분 설명할 수 있는 분석법이다.
PCA를 선형대수 관점에서 해석해 보면, 입력데이터의 공분산 행렬을 구하고 고유값 분해하고, 이렇게 구한 고유벡터에 입력 데이터를 선형 변환하는 것입니다. 원본 데이터를 고유벡터로 선형 변환.
고유벡터는 PCA의 주성분 벡터로서 입력 데이터의 분산이 큰 방향을 나타냅니다.
고유값은 이 고유벡터의 크기를 나타내며. 동시에 입력데이터의 분산을 나타낸다.
공분산 행렬은 여러 변수와 관련된 공분산을 포함하는 정방형 행렬이며 대칭 행렬입니다.ㅜ
선형 변환은 특정 벡터에 행렬 A를 곱해 새로운 벡터로 변환하는것을 의미합니다. 이를 특정 벡터를 하나의 공간에서 다른 공간으로 투영하는 개념으로도 볼 수 있으며. 이 경우 이 행렬을 바로 공간으로 가정하는 것입니다.
고유벡터는 행렬 A를 곱하더라도 방향이 변하지 않고 그 크기만 변하는 벡터를 지칭합니다. Ax = ax( A는 행렬, x는 고유벡터, a는 고유값). 정방 행렬은 최대 그 차원 수만큼의 고유벡터를 가질수 있습니다. 고유벡터는 행렬이 작용하는 힘의 방향과 관계가 있어서 행렬을 분해하는 데 사용됩니다.
입력 데이터 세트가 공분산 행렬을 생성한다.
공분산 행렬의 고유벡터와 고유값을 계산한다.
고유값이 가장 큰 순으로 K개 만큼 고유벡터를 추출합니다.
고유값이 가장 큰 순으로 출된 고유벡터를 이용해 새롭게 인력 데이터를 변환합니다.
대칭 정방행렬인 공분산행렬은 고유벡터 * 고유값 대각 행렬 * 고유벡터의 전치행렬로 나타낼 수 있다.
V 는 고유벡터. ∧는 고유값 대각행렬. VT 는 전치행렬이다.
이때 v1은 분산이 가장 큰 벡터. v2는 그다음으로 큰 벡터이다.
고유벡터들은 우리가 정사영시킬 분산이 가장 큰 화살표(벡터)들이다.
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver='auto', tol=0.0, random_state=None)
PCA를 적용하기 전에 입력 데이터의 개별 피처들을 스케일링해야 한다. PAC는 피처들의 값을 연산하므로 피처들의 스케일에 영향을 받는다. 따라서 피처들의 값을 동일한 스케일로 변환하는것이 필요하다. 일반적으로 평균이 0, 분산이 1인 표준 정규 분포로 변환한다.
fit_transform 적용
pca 객체는 전체 변동성에서 개별 pca 컴포넌트별로 차지하는 변동성 비율을 explained_variance_ratio 속성으로 제공합니다.
https://angeloyeo.github.io/2019/07/27/PCA.html
참고하면서 공부하였음. 선형대수학에서 고유치, 대각행렬, 정방행렬 등에 관한 의미를 다시 알아 볼것
https://darkpgmr.tistory.com/106
특이값 분해 공부를 위해 나중에 다시 볼것
'머신러닝 > 인프런' 카테고리의 다른 글
특이값 분해 - SVD (0) | 2021.07.20 |
---|---|
LDA (0) | 2021.07.16 |
회귀 트리 (0) | 2021.05.16 |
로지스틱 회귀 (0) | 2021.05.16 |
선형 회귀 모델을 위한 데이터 변환 (0) | 2021.05.15 |