Search
Duplicate

PCA(Principal Component Analysis): 주성분 분석이란?

한 줄 요약 PCA는 고차원의 데이터를 낮은 차원의 데이터로 변경하기 위해 사용하는 기법이다.

1. PCA (주성분 분석)

PCA는 대표적인 dimensionality reduction (차원 축소)에 쓰이는 기법
머신러닝, 데이터마이닝, 통계 분석, 노이즈 제거 등 다양한 분야에서 쓰임
PCA 목적: 고차원의 데이터를 낮은 차원의 데이터로 변경
“어떻게 차원을 잘 낮추느냐”
[그림 1] 2차원 데이터와 1차원 데이터
[그림 1]과 같이 왼쪽에 있는 2차원 데이터를 1차원 데이터로 바꾼다고 생각해보자.
아무리 잘 바꾼다고 하더라도, 2차원의 데이터의 특징을 모두 살리면서 1차원의 데이터로 바꾸기는 불가능
그렇다면 차선책으로, 모든 특징을 살릴 수는 없을지라도 최대한 특징을 살리며 차원을 낮춰주는 방법을 고안하기 시작했고, 그 중 하나가 바로 PCA 이다.

2. PCA 알고리즘의 직관적인 해석

설명에 사용되는 예시는 2차원 데이터를 1차원으로 낮춰주는 상황으로 가정
PCA 알고리즘을 통해 2차원 데이터를 1차원으로 낮춰보자.
[그림 2] 예시 데이터와 2차원 시각화

STEP 1) 각 축에 대한 평균값을 구한 뒤, 해당 점이 원점이 되도록 shift 해준다.

[그림 3] 평균값이 원점이 되도록 데이터 shift

STEP 2) 데이터에서 원점을 지나는 직선에 수선의 발을 내려, 해당 길이가 최대가 되는 직선을 찾는다.

[그림 4] 수선의 발과 원점 사이의 거리
위 그림처럼 모든 데이터에서 원점을 지나는 직선에 수선을 발을 내린다.
빨간 직선. [그림 4]에서는 한 점에대한 길이만 구했지만, 실제로는 모든 점에 대한 길이를 구해야 한다.
원점을 지나는 직선의 기울기가 변함에 따라, 이 빨간선들의 길이 또한 변하게 된다.
PCA 에서는 이 빨간선들의 길이 제곱들의 합이 최대가 되는 직선을 찾는다.
앞으로 빨간선들의 길이합을 SS(Sum of Squares) 라고 부를 것이다.
[그림 5] 길이 합이 최대가 되는 최적의 직선
길이 합이 최대가 되는 최적의 직선을 찾다보면, 얼추 [그림 5] 처럼 초록색 직선이 선택될 것이다.

STEP 3) 찾은 직선을 PC1으로 설정하고, loading score 구한다.

[그림 6] Eigenvector 와 Loading Score
이때 PC1과 방향이 같은 벡터를 "PC1의 Singular vector" 혹은 "PC1의 Eigenvector" 라고 한다.
PC1은 데이터의 분산이 가장 큰 방향을 나타내는 벡터
또한, PC1의 Singular vector의 x 축 길이와 y 축 길이의 비율을 Loading score 라고 한다.
[그림 6]에서는 0.97, 0.242 만큼의 비율이 바로 Loading score

 STEP 4) PC1에 직교하는 직선을 PC2로 잡는다.

[그림 7] PC1과 PC2
[그림 7] 과 같이 PC1에 직교하는 직선을 PC2로 잡는다.
위의 예시의 경우 2차원이므로 PC1에 직교하는 직선이 유일하다.
만약 3차원의 경우라면, PC1에 직교하는 직선이 평면으로 나올 것이다.
이 경우에는, PC1에 직교하는 평면 중에서, STEP 2)의 과정을 다시 거쳐 수선의 발까지의 거리합이 최대가 되는 직선을 선택해주면 된다.
N차원 데이터에는 N개의 PC 직선이 나오게 된다.

STEP 5) PC1과 PC2를 축으로 하여 회전시킨 뒤, scree plot 생성한다.

[그림 8] PC1과 PC2를 x축, y축으로 설정
앞서 구한 PC1과 PC2 직선을 각각 x축y축이 되도록 데이터를 회전한다.
이제 각 PC 축이 전체 데이터를 얼마나 잘 표현하고 있는지를 나타내주는 scree plot을 그려보자.
scree plot 을 생성하기 위해, PC1과 PC2의 SS 비율을 구해야 한다.
만약 PC1과 PC2의 SS 비율이 8.9 : 1.1 이라고 하면, [그림 9]와 같이 scree plot을 그려줄 수 있다.
[그림 9] Scree plot
해당 그래프의 의미는 PC1 축이 전체 데이터 특징의 89% 정도를 나타내고 있으며, PC2 축이 전체 데이터 특징의 11% 정도를 나타내고 있다는 뜻이다.
여기서 PCA의 목표를 이룰 수 있게 된다. PCA는 "어떻게 차원을 잘 낮추느냐" 라는 물음에서부터 시작되었다.
만약 89% 정도의 특징만으로도 해당 데이터를 잘 나타낼 수 있을 것이라고 판단되면, PC2 축을 제거하고, PC1 축만을 가지고 1차원으로 나타낼 수 있다.
[그림 10] PCA 원리
다른 예를 들어, 3차원 데이터가 있는데, PCA를 통해 PC1 PC2 PC3 3개의 축을 잡았고, scree plot 을 그려본 결과 PC1이 73%, PC2가 17%, PC3가 10% 를 차지한다고 해보자. 이러면 개발자에게는 차원을 줄이는 두가지 선택권이 있는 것이다.
1.
데이터 특징의 90% 를 살리며 3차원에서 2차원으로 차원을 축소하는 선택권 (PC1, PC2 선택)
2.
데이터 특징의 73% 를 살리며 3차원에서 1차원으로 차원을 축소하는 선택권 (PC1만 선택)
무엇을 선택할지는 현재 시스템의 리소스 상황을 고려하며 선택하면 된다.