100개의 변수가 있는 데이터셋을 받았다고 가정해 봅니다. 변수가 많으니 정보가 풍부할 것 같지만 실제로는 반대인 경우가 많습니다. 변수들 사이에 중복되는 정보가 많아서 오히려 모델이 혼란을 겪고, 학습 속도는 느려지고, 시각화는 불가능해집니다. 이게 차원의 저주입니다.
저도 처음 수십 개의 변수를 가진 데이터를 다룰 때 어디서부터 시작해야 할지 몰랐습니다. PCA를 처음 써봤을 때 100개 변수를 2개로 줄였는데도 데이터의 패턴이 그대로 살아있는 걸 보고 진짜 놀랐습니다. 오늘은 그 원리가 어떻게 작동하는지, 실제로 어떻게 쓰는지 따라가 보겠습니다.

차원의 저주 — 변수가 많을수록 왜 어려워지는가
변수가 1개면 데이터는 직선 위에 있습니다. 2개면 2D 평면, 3개면 3D 공간입니다. 변수가 100개면 100차원 공간이 됩니다. 문제는 차원이 높아질수록 데이터가 공간 전체에 희박하게 퍼진다는 겁니다. 같은 1000개 데이터라도 100차원 공간에서는 서로 너무 멀리 떨어져서 패턴을 찾기가 어려워집니다.
그런데 현실의 고차원 데이터는 대부분 변수들 사이에 상관관계가 있습니다. 키와 몸무게, 나이와 경력, 광고비와 매출 같은 것들이죠. 이 상관관계를 이용하면 100개의 변수를 훨씬 적은 수의 새로운 변수로 요약할 수 있습니다. PCA가 하는 일이 바로 이겁니다.
PCA의 핵심 — 분산이 곧 정보량이다
PCA를 관통하는 핵심 아이디어는 하나입니다. "데이터가 가장 넓게 퍼진 방향이 가장 많은 정보를 담고 있다." 분산이 크다는 건 데이터들 사이의 차이가 크다는 뜻이고, 이 차이가 분석에서 의미 있는 정보입니다.
반대로 분산이 0에 가까운 방향은 모든 데이터가 거의 같은 값을 가진다는 뜻입니다. 이 방향에서는 데이터들을 구분할 수 없으니 정보가 없는 겁니다. PCA는 분산이 최대인 방향을 첫 번째 주성분(PC1)으로 잡고, 그다음으로 분산이 큰 방향을 PC2로 잡는 방식으로 작동합니다.
PC2: PC1과 수직이면서 분산이 두 번째로 큰 방향
PC3: PC1, PC2와 수직이면서 분산이 세 번째로 큰 방향
...
→ 각 PC는 서로 수직(직교)이고 독립적
공분산 행렬과 고유값 분해의 연결
분산이 최대인 방향을 어떻게 찾을까요. 여기서 공분산 행렬이 등장합니다. 공분산 행렬은 변수들 사이가 얼마나 같이 움직이는지를 담은 행렬입니다. 변수 A가 커질 때 변수 B도 커지면 공분산이 양수, 반대 방향이면 음수입니다.
변수가 3개(x1, x2, x3)라면:
C = | Var(x1) Cov(x1,x2) Cov(x1,x3) |
| Cov(x2,x1) Var(x2) Cov(x2,x3) |
| Cov(x3,x1) Cov(x3,x2) Var(x3) |
→ 이 행렬을 고유값 분해하면 주성분이 나온다
공분산 행렬을 고유값 분해하면 고유벡터와 고윳값이 나옵니다. 고유벡터가 주성분의 방향이고, 고윳값이 그 방향으로의 분산 크기입니다. 고윳값이 클수록 그 방향이 더 많은 정보를 담고 있다는 뜻입니다.
실제 숫자로 PCA 과정 따라가기
키(cm)와 몸무게(kg) 두 변수로 간단한 예시를 들어보겠습니다.
키: [170, 165, 180, 175] → [-0.5, -1.2, 1.2, 0.5]
몸무게: [65, 60, 75, 70] → [-0.5, -1.2, 1.2, 0.5]
② 공분산 행렬 계산
키와 몸무게가 같이 움직이므로 공분산이 높음
③ 고유값 분해
고유값: λ1=1.9, λ2=0.1
고유벡터: v1=[0.71, 0.71], v2=[-0.71, 0.71]
④ 차원 선택
PC1이 전체 분산의 95% 설명 → PC1 하나만 선택
⑤ 데이터 투영
2차원 데이터 → 1차원으로 축소 완료
몇 개의 주성분을 선택할까
주성분을 몇 개 선택할지는 누적 설명 분산량(Explained Variance Ratio)을 보고 결정합니다. 각 주성분이 전체 분산의 몇 퍼센트를 설명하는지를 누적해서 보는 방법입니다.
PC2: 분산의 25% 설명 → 누적 70%
PC3: 분산의 15% 설명 → 누적 85% ← 여기서 선택
PC4: 분산의 8% 설명 → 누적 93%
...
통상적으로 누적 분산이 80~90%를 넘는 지점까지 선택
스크리 플롯(Scree Plot)은 고윳값을 크기 순으로 그린 그래프입니다. 기울기가 급격히 완만해지는 지점(엘보우 포인트)이 주성분 선택의 기준이 됩니다. 이 지점 이후의 주성분들은 추가되는 정보가 크지 않습니다.
PCA 실무 단계를 정리하면 이렇습니다.
| 단계 | 작업 | 주의사항 |
|---|---|---|
| 1. 표준화 | StandardScaler 적용 | 단위가 다르면 큰 값이 주성분을 왜곡한다 |
| 2. 공분산 행렬 | 변수 간 상관관계 계산 | 데이터가 선형적인지 먼저 확인 |
| 3. 고유값 분해 | 고유벡터와 고유값 계산 | 고유값이 클수록 그 축의 정보량이 크다 |
| 4. 차원 선택 | 스크리 플롯, 누적 분산 확인 | 누적 분산 80% 이상 지점 권장 |
| 5. 데이터 투영 | 원본 데이터 변환 | 축소 후 모델 성능 반드시 검증 |
스케일링과 해석의 함정
PCA를 쓸 때 가장 많이 하는 실수가 표준화를 건너뛰는 겁니다. PCA는 분산을 기준으로 축을 찾기 때문에 단위가 큰 변수가 무조건 중요한 것처럼 보일 수 있습니다. 연봉(수백만 단위)과 나이(수십 단위)를 그냥 넣으면 연봉이 주성분을 지배합니다. 표준화가 필수인 이유입니다.
또 하나의 함정은 해석입니다. PCA로 만들어진 PC1, PC2는 원래 변수들의 선형 조합이라 직관적인 의미가 사라집니다. PC1이 "고객 충성도"인지 "구매력"인지는 분석가가 각 변수의 가중치를 보고 판단해야 합니다. 차원만 줄이고 해석을 포기하면 절반짜리 분석입니다.
실무에서 PCA가 쓰이는 방식
PCA의 실무 활용은 크게 세 가지입니다. 첫째는 머신러닝 전처리입니다. 변수가 너무 많아서 과적합이 걱정될 때 PCA로 차원을 줄이면 모델이 더 일반화됩니다. 둘째는 노이즈 제거입니다. 작은 고윳값에 해당하는 차원들은 대부분 잡음이라 버리면 데이터가 깨끗해집니다.
셋째는 시각화입니다. 수백 차원의 데이터를 2D나 3D로 줄이면 눈으로 데이터의 분포를 볼 수 있습니다. 비슷한 데이터끼리 모이는 군집이 보이거나, 이상치가 한눈에 들어오는 경우가 많습니다. 수만 개의 변수를 두 개 축으로 요약해도 전체 흐름이 살아있는 걸 처음 봤을 때의 신기함은 직접 써봐야 압니다.
PCA는 데이터를 삭제하는 게 아닙니다. 중복되고 덜 중요한 정보를 걷어내고, 가장 핵심적인 패턴만 남기는 요약의 기술입니다. 이 연재에서 다룬 행렬, 고윳값, 공분산이 여기서 모두 만납니다.
'데이터 과학 수학' 카테고리의 다른 글
| 딥러닝의 심장, 역전파(Backpropagation)와 연쇄 법칙의 마법 (0) | 2026.04.09 |
|---|---|
| 머신러닝의 엔진, 행렬 연산과 선형대수학이 필수적인 이유 (0) | 2026.04.08 |
| 공간의 변하지 않는 축, 고윳값과 고유벡터의 기하학적 의미 (0) | 2026.04.06 |
| 데이터의 그릇, 벡터와 행렬의 본질과 머신러닝 연산 (0) | 2026.04.05 |
| 정보의 측정, 엔트로피와 딥러닝 손실 함수의 수학적 배경 (0) | 2026.04.05 |