한 줄 요약
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만 선택)
•
무엇을 선택할지는 현재 시스템의 리소스 상황을 고려하며 선택하면 된다.