Machine Learning/Algorithm

PCA (Principal Component Analysis)

고슴군 2019. 8. 16. 22:06

 

변수 선택/추출을 통한 차원 축소

˙ 변수 선택 (selection) : 분석 목적에 부합하는 소수의 예측 변수만을 선택

- 장점 : 선택한 변수 해석 용이

- 단점 : 변수간 상관관계 고려 어려움

 

˙ 변수 추출 (extraction) : 예측 변수의 변환을 통해 새로운 변수 추출

- 장점 : 변수간 상관관계 고려, 일반적으로 변수의 개수를 많이 줄일 수 있음

- 단점 : 추출된 변수의 해석이 어려움

 

 

 

  Feature selection Feature Extraction
Supervised Information gain, Stepwise regression, LASSO, Genetic algorithm,
many more...
Partial Least Squares(PLS)
Unsupervised PCA loading Principal Component Analysis (PCA), Wavelets transforms, Autoencoder

 

 

PCA

- 고차원의 데이터를 효과적으로 분석하기 위한 대표적 분석 기법으로 차원 축소, 시각화, 군집화, 압축 등에 활용

- 요약된 변수는 기존 변수의 선형조합으로 생성됨

- 주요 목적

① 데이터의 차원 축소( n by p -> n by k, where k << p)

② 데이터의 시각화 및 해석

- 원래 데이터의 분산을 최대한 보존하는 새로운 축을 찾고, 그 축에 데이터를 사영(projection)시키는 기법

 

- 선형 결합 수식

 

- 공분산(Covariance) 의 성질

 


- PCA Loading plot

- PCA 알고리즘 - 주성분 추출

 

 

- PCA 알고리즘 요약

 

- PCA 수리적 배경

 

- PCA 예제

 

- PCA 개요

 

PCA의 가정 (한계점)

첫째, 데이터를 나타내는 submanifold는 직선의 basis를 가지고 있습니다. 다시 말해서 우리는 달팽이 모양을 따라 움직이는 basis 따위는 취급하지 않는거죠.

→ 이러한 경우 데이터를 더 좋은 표현 법으로 먼저 평평하게 펴주는 작업을 하던지, 커널 등을 이용해 nonlinear의 경우에도 submanifold를 잘 찾아주는 방법을 이용합니다 (e.g. kernel PCA). 전자를 더 선호하는 이유는 후자의 경우 generality 한계가 발생할 수 있기 때문이다.



둘째, 큰 분산을 갖는 방향이 중요한 정보를 담고있다고 가정합니다. 위의 그림에서 보면 길쭉하게 늘어진 방향을 가장 중요한 방향으로 생각하고 그곳을 축(basis)으로 데이터들을 투영(projection)하게 되죠.

→ 큰 분산을 갖는 방향이 정말로 우리가 찾고자 하는 중요한 방향인지 생각해봐야 함. 



셋째, 우리가 찾은 주축(principal component)들은 서로 직교(orthogonal)한다고 생각합니다. 예를 들어 위의 그림을 다시보면, 첫번 째 주축이 가장 길게 즐어선 대각선방향의 벡터가 된다면, 그 다음 주축은 무조건 이것과 직교하는 축을 찾는다는 것이죠.

 

·  주성분 분석은 단순히 변환된 축이 최대 분산방향과 정렬되도록 좌표회전을 수행함 

- 범주간 구분이 잘 되도록 변환해주는 것은 아님 (Unsupervised)

- 대안 : Partial Least Square (PLS)

 

 

 

- PCA는 매우 넓게 사용된다. 이것은 어떠한 분포적인 가정을 요구하지 않는다.

- 가장 큰 분산의 방향들이 가장 흥미로운 것으로 가정된다.

- PCA는 오직 본래 변수들의 선형 결합을 고려한다. Kernel PCA는 PCA의 확장으로 non-linear mapping에 사용될 수 있다.

- 차원 축소는 오직 본래 변수들이 상관이 있을 때에만 가능하다. 그렇지 않으면 PCA는 아무것도 하지 못한다. 그것들의 분산으로 다시 ordering 하는 것을 제외하면 말이다.

- PCA는 스케일 불변성이 아니다.(즉, 스케일링을 수행하는 것이 좋다)

 

 

PCA를 적용할 때 주의할 점

 

 

- PC의 해석은 종종 어렵다. PC1의 경우 두 아들의 평균의 느낌이고, PC2의 경우에는 두 아들의 머리 사이즈 차이를 의미할 수 있다. 

 

- 주의할 점은 PC loading의 부호는 임의적이라는 것이다 (위의 식을 보면 알 수 있다). 즉, 플러스와 마이너스가 반대로 되도 무방하다. head1에 마이너스가 있는 것이 플러스가 되고, head2에 잇는 것이 마이너스가 될 수 있다. 방향만 같으면 되기 때문이다. 따라서 이에 대한 해석을 하는 것이 매우 어렵다.

 

- 해석이나 추론을 위해서는PCA를 사용하는 것이 좋은 방법인지는 모르겠고, 예측을 위해서 사용하는 것이 좋을 것 같다. 경험적으로 봤을 때, PCA의 부호는 의미가 없지만, loading의 절대값 크기를 이용한 해석은 어느 정도 맞는 것 같다.

 

 

 

 

- 모든 측정값들이 긍정적으로(+로) 상관관계가 있따면, 첫 번째 PC는 종종 측정값들의 평균의 종류가 된다. 예를 들어, 머리의 사이즈, 정신의학적 증세에 대한 심각성 등.

 

- 그러면, 다른 PC들은 나머지 패턴들에 대한 중요한 정보를 준다. 예를 들어, 머리의 모양, 정신의학적 증세의 패턴 등.

 

 

 

 

- 평균이 0인 원본 변수들에 기초한  PCA는 아래와 같은 단점이 있다. 

① PCA의 결과는 스케일에 의존적이다. 스케일은 변수들이 어떠한 측정값으로, 예를 들어, 센티미터와 인치과 같은 것들이 있다. 

② 만약에 변수의 변화에 있어서 큰 차이가 있다면, 가장 큰 분산의 변수는 첫번째 PC들을 지배하는 경향이 있다. 

 

- PCA는 또한 공분산 행렬 S 대신에 상관 행렬 C를 사용해서 수행할 수도 있다.

 

- 만약 먼저 X를 0이 평균이 되도록 하고, 분산이 1이 되도록 스케일링 했다고 하자, 그러면 스케일된 X의 공분산 행렬은 X의 상관행렬과 같다.

→ 상관 행렬을 사용하는 것은 스케일된 변수들의 공분산 행렬을 사용하는 것과 같다. 

 

 

 

 

스케일을 할 것인가 안할 것인가?

우리는 맨 처음에 스케일을 해야하는가 또는 상관 행렬을 사용해야 하는가?

 

- 일반적으로 만약에 변수들이 매우 다른 스케일에 있을 경우, 스케일 해야한다.

- 주의할 점 : 스케일링 또는 상관행렬을 사용하는 것은 변수들을 동일하게 중요한 것으로 만드는 가능한 임의의 선택과 연관이 있다.

- 스케일된 또는 스케일 되지 않은 PCA의 결과는 많이 다르다. 종종, 하지만 항상은 아니지만, 스케일링(상관 행렬을 사용하는 것)이 선호된다. 

 

 

 

몇 개의 주성분을 사용할 것인가?

- 보편적인 규칙은 존재하지 안혹, 오로지 경험법칙만 있을 뿐이다.

 

- 경험법칙 1 : 설명된 분산의 축정 비율이 적어도 80% 이상이어야 한다.

- 경험법칙 2 : 축적이 아니라, 아에 평균 분산보다 큰 PC를 선택하는 것이다. 만약 상관행렬/스케일된 데이터가 사용되었다면, 이것은 암시하기를: 적어도 한 개의 고유값과 함께 선택해야 한다.

- 경험법칙 3 : scree plot을 보면서, elbow 지점이 존재하면 그 지점 이전까지의 PC들을 선택한다. 

 

 

 

 

 

 

새롭게 추가되는 샘플의 값에 대해서 score를 예측하는 것에 대해 살펴보자.

 

1. 먼저 새로운 관찰값을 얻는다

2. 샘플 평균을 빼줌으로써 centering 시킨다.

3. PC 로딩과 평균을 x를 스칼라 내적을 계산해서 PC 방향의 score 값을 구할 수 있다. 

 

 

 

 

- 강건한 PCA
PCA는 아웃라이어에 민감하다. 이유는 그것은 공분산 S 또는 상관 행렬 R(이것들은 아웃라이어에 민감하다)에 기초해서 만들어지기 때문이다. 

 

강건한 버전의 PCA는 강건한 버전의 S 또는 R을 사용함으로써 얻을 수 있다. R에서는  옵션으로 covmat을 princomp()에서 아용하면 된다. 

 

 

 

- princomp는 공분산 또는 상관 행렬의 spectral decomposition을 사용한다.

- prcomp는 데이터 행렬의 SVD를 사용하도 이것은 수치적으로 더욱 안정적이다. 

 

- PCA 한계

 

 

[참조]

김성범 교수님의 https://www.youtube.com/watch?v=FhQm2Tc8Kic (PCA 개요, 수리적 배경 등)

T-Robotics 블로그 http://t-robotics.blogspot.com/2015/12/pca.html#.XVanvugzaUk (PCA의 한계)

공돌이의 수학정리노트 https://www.youtube.com/watch?v=jNwf-JUGWgg&t=15s (공분산 행렬의 의미)

자연의 원리에 귀를 기울이다  https://m.blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221031465518&proxyReferer=https%3A%2F%2Fwww.google.com%2F (주의할 점)

 

 

반응형

'Machine Learning > Algorithm' 카테고리의 다른 글

Local Outlier Factors (LOF)  (0) 2019.10.07
Random Forest (랜덤 포레스트)  (0) 2019.09.23
Outlier Detection (standard deviation v.s. interquartile range)  (0) 2019.08.21
DBSCAN  (0) 2019.08.18
Singular Value Decomposition (SVD)  (0) 2019.08.18