Skip to content
PART 5 · 29장

주성분 분석 (PCA)

차원을 줄이는 마법

10개 변수를 2개로 줄여도 정보의 90%를 보존할 수 있다면?

설문조사 문항이 50개인데, 응답 패턴을 보니 사실상 3~4개의 큰 흐름으로 설명됩니다. 경제 지표가 20개인데, GDP와 실업률 두 축만으로 대부분의 변동을 설명할 수 있습니다. 이런 상황에서 주성분 분석(PCA)이 빛을 발합니다.

PCA는 고차원 데이터에서 분산이 가장 큰 방향을 찾아내고, 그 방향으로 데이터를 투영하여 차원을 줄입니다. 시각화, 노이즈 제거, 전처리 등 다양한 곳에 활용됩니다.

비유: 3D 물체의 그림자를 벽에 비추는 것과 같습니다. 어떤 각도로 빛을 비추느냐에 따라 그림자의 모양이 달라집니다. PCA는 가장 많은 정보(분산)를 보존하는 각도를 자동으로 찾아줍니다. 첫 번째 그림자가 PC1, 두 번째 직교 그림자가 PC2입니다.

PCA의 핵심 아이디어

쉽게 말하면 -- 그림자로 이해하기: 3D 물체에 손전등을 비추면 벽에 2D 그림자가 생깁니다. 어떤 각도로 비추느냐에 따라 그림자의 모양이 달라지는데, 어떤 각도에서는 물체의 특징이 잘 드러나고, 어떤 각도에서는 납작한 선으로만 보입니다. PCA는 가장 정보를 많이 담는 각도를 자동으로 찾아, 고차원 데이터의 "최적의 그림자"를 만들어줍니다. 이 그림자가 바로 주성분(PC)입니다.

PCA는 데이터의 공분산 행렬에서 고유벡터(eigenvector)를 구합니다. 고유벡터가 주성분의 방향이고, 대응하는 고유값(eigenvalue)이 그 방향의 분산량입니다.

공분산 행렬: C = (1/n) * X^T * X (표준화 후)
고유값 분해: C * v = lambda * v
PC1: 가장 큰 고유값의 고유벡터 방향
설명된 분산 비율 = lambda_k / sum(lambda)
주성분은 "데이터가 가장 많이 퍼진 방향"입니다: 교실에 학생들이 서 있다고 상상해보세요. PC1은 학생들이 가장 넓게 퍼져 있는 방향입니다. 만약 학생들이 좌우로 길게 서 있다면 PC1은 가로 방향이 됩니다. PC2는 PC1에 수직이면서 그 다음으로 퍼진 방향입니다. 설명 분산은 "이 방향이 전체 정보의 몇 %를 담고 있는가"를 뜻합니다. PC1이 80%를 설명한다면, 그 한 방향만으로도 데이터의 대부분을 파악할 수 있다는 의미입니다.

PCA가 하는 일

  • 데이터를 표준화 (평균 0, 분산 1)
  • 분산이 최대인 방향(PC1)을 찾음
  • PC1에 직교하면서 분산이 최대인 방향(PC2)을 찾음
  • 원하는 만큼 반복
  • 데이터를 새 축(주성분)으로 변환

PCA가 아닌 것

  • 변수 선택(feature selection)이 아님 -- 새로운 축을 만드는 것
  • 비선형 관계는 잡지 못함
  • 해석이 항상 쉽지는 않음
  • 클래스 정보를 사용하지 않음 (비지도)

실습 1: 2D에서 1D로 -- 주성분 축 회전

2D 산점도에서 PC1 축(빨간 선)을 마우스로 회전시킬 수 있습니다. 점들이 축에 투영될 때 설명된 분산이 어떻게 변하는지 관찰하세요. 마우스를 놓으면 최적 PC1 위치로 자동 이동합니다.

해보기: (1) 빨간 축을 드래그하여 회전시키세요. 설명 분산이 실시간으로 변합니다. (2) 마우스를 놓으면 최적 위치로 스냅됩니다. (3) "새 데이터"로 상관관계 강도를 바꿔보세요.
PC1 설명 분산
-
PC2 설명 분산
-
현재 각도
-
최적 각도
-
핵심 관찰: 상관관계가 강할수록 PC1이 설명하는 분산 비율이 높아집니다. 상관관계가 0에 가까우면 PC1과 PC2가 거의 같은 분산을 설명합니다. 이 경우 차원 축소의 이점이 적습니다.

실습 2: 스크리 플롯 -- 몇 개의 PC를 유지할까?

다변량 데이터에 PCA를 적용하면, 각 주성분이 설명하는 분산을 내림차순으로 그린 것이 스크리 플롯(scree plot)입니다. 누적 설명 분산이 80~90%가 되는 지점에서 잘라내는 것이 일반적입니다.

해보기: (1) "PCA 실행"을 눌러 10개 변수에 대한 PCA를 수행하세요. (2) 스크리 플롯에서 "팔꿈치"를 찾으세요. (3) 누적 90%에 도달하는 PC 수를 확인하세요.
설명 분산 (스크리 플롯)
누적 설명 분산

실습 3: 바이플롯 -- 한국 경제 데이터

한국 경제 지표(GDP 성장률, 실업률, 물가 상승률, 수출 증가율 등) 30년 데이터에 PCA를 적용합니다. PC1 vs PC2 평면에 연도별 점과 변수 화살표를 함께 그린 것이 바이플롯(biplot)입니다.

해보기: (1) "바이플롯 생성"을 누르세요. (2) 위기 연도(1998, 2008, 2020)가 어디에 위치하는지 확인하세요. (3) 화살표 방향이 비슷한 변수들은 서로 상관관계가 높습니다.

실습 4: 이미지 압축

그레이스케일 이미지의 각 행을 벡터로 보고 PCA를 적용합니다. 주성분 수를 줄이면 이미지가 흐려지지만, 파일 크기는 극적으로 줄어듭니다. 몇 개의 PC로 원본을 충분히 인식할 수 있을까요?

해보기: (1) 이미지 패턴을 선택하고 "생성"을 누르세요. (2) 슬라이더로 주성분 수를 조절하며 화질 변화를 관찰하세요. (3) 압축률과 화질 사이의 균형점을 찾아보세요.
16 / 32
원본
PCA 복원
원본 정보량
-
사용 PC
-
압축률
-
복원 오차 (MSE)
-

PCA 실무 가이드

반드시 표준화하세요! PCA는 분산을 기반으로 합니다. 스케일이 큰 변수(예: 소득 수천만원)가 스케일이 작은 변수(예: 나이 0-100)를 압도합니다. 분석 전 모든 변수를 표준화(평균 0, 표준편차 1)하는 것이 필수입니다.
활용 사례: (1) 시각화: 고차원 데이터를 2D로 축소하여 패턴 파악. (2) 노이즈 제거: 작은 PC를 제거하면 노이즈가 줄어듦. (3) 다중공선성 해결: 상관된 변수들을 독립 PC로 변환. (4) 전처리: 머신러닝 모델 투입 전 차원 축소.
이 장의 핵심
  • PCA는 데이터의 분산이 최대인 방향(주성분)을 찾아 차원을 줄인다.
  • 스크리 플롯과 누적 분산으로 유지할 PC 수를 결정한다.
  • 바이플롯으로 변수 관계와 관측치 패턴을 동시에 시각화한다.
  • 이미지 압축처럼 실용적인 차원 축소에도 활용된다.
  • 분석 전 반드시 데이터를 표준화해야 한다.

다음 장 예고: '이 상품을 산 고객은 이것도 샀습니다' -- 연관 규칙과 추천 시스템을 배웁니다.