PCA란 무엇인가 | 공분산 행렬과 고유벡터로 이해하는 차원 축소

PCA(Principal Component Analysis)는 데이터를 더 적은 차원으로 압축하면서도, 원래 데이터의 중요한 정보를 최대한 유지하려는 차원 축소 기법이다. 핵심은 단순히 컬럼 개수를 줄이는 것이 아니라, 데이터가 가장 많이 퍼져 있는 방향을 새로운 축으로 다시 표현하는 것이다.


PCA를 왜 사용하는가

머신러닝에서는 feature 수가 많아질수록 문제가 생길 수 있다.

  • 계산량 증가
  • feature 간 중복 정보 증가
  • 시각화 어려움
  • overfitting 가능성 증가

예를 들어 키와 몸무게처럼 거의 비슷하게 움직이는 feature 두 개가 있다면, 두 feature를 모두 사용하는 대신 “사람의 체격” 같은 하나의 축으로 줄여서 표현할 수도 있다.

PCA는 이런 식으로:

원래 feature 공간
→ 정보 손실을 최소화하면서
→ 더 적은 축으로 표현

하는 과정이다.


PCA는 평균 중심화부터 시작한다

PCA에서 가장 먼저 하는 작업은 평균 중심화(mean centering)다.

즉, 각 feature에서 평균을 빼준다.

x_new = x - mean(x)

왜 이렇게 하냐면, PCA는 데이터의 “흩어진 방향”을 찾는 알고리즘이기 때문이다.

데이터 중심이 제각각이면 실제 분산 방향을 제대로 보기 어렵다.

자료에서도 PCA 전에 각 feature를 평균 기준으로 shift해서 원점 중심으로 이동시키는 과정이 먼저 필요하다고 설명된다.


공분산 행렬이 왜 필요한가

평균 중심화를 한 뒤에는 공분산 행렬(covariance matrix)을 계산한다.

공분산 행렬은 변수들이 함께 어떻게 움직이는지를 담고 있는 행렬이다.

예를 들어:

\begin{bmatrix}Var(X_1) & Cov(X_1, X_2) \\Cov(X_2, X_1) & Var(X_2)\end{bmatrix}

  • 대각선 → 각 변수의 분산
  • 비대각선 → 변수 간 공분산

공분산이 크다는 것은 두 변수 방향이 비슷하게 움직인다는 뜻이다.

자료에서도 공분산 행렬은 변수와 변수 사이의 상관 구조를 표현하기 위한 행렬이라고 설명된다.


PCA는 “분산이 큰 방향”을 찾는다

PCA의 핵심은 이것이다.

데이터가 가장 많이 퍼진 방향 찾기

왜냐하면 데이터가 많이 퍼져 있다는 것은 그 방향이 데이터를 설명하는 정보량이 크다는 의미이기 때문이다.

예를 들어 데이터가 대각선 방향으로 길게 퍼져 있다면:

  • x축, y축 기준보다
  • 대각선 방향 기준이

데이터를 더 잘 설명할 수 있다.

자료에서도 PCA는 기존 좌표계 대신 새로운 basis를 도입해서 데이터를 바라보는 과정으로 설명된다.


고유값과 고유벡터가 등장하는 이유

공분산 행렬에서 분산이 가장 큰 방향을 찾기 위해 고유값 분해(eigendecomposition)를 사용한다.

Ax = \lambda x

여기서:

  • x → 고유벡터
  • \lambda → 고유값

PCA에서는:

  • 고유벡터 → 새로운 축 방향
  • 고유값 → 해당 방향의 분산 크기

를 의미한다.

즉:

고유값이 큰 고유벡터
→ 데이터가 많이 퍼진 방향
→ 중요한 주성분

이 된다.

자료에서도 PCA는 공분산 행렬의 고유값과 고유벡터를 구한 뒤, 큰 고유값에 해당하는 축을 선택하는 과정으로 설명된다.


PCA를 basis 변경으로 이해하기

PCA를 가장 직관적으로 이해하는 방법은:

basis를 바꾸는 과정

으로 보는 것이다.

기존에는:

x축, y축 기준

으로 데이터를 표현했다면,

PCA 이후에는:

데이터가 실제로 많이 퍼진 방향 기준

으로 데이터를 다시 표현한다.

즉, feature를 삭제하는 느낌보다는:

기존 좌표계
→ 데이터에 더 적합한 좌표계

로 바꾸는 과정에 가깝다.

자료에서도 PCA는 새로운 basis system을 도입해 데이터를 projection하는 관점으로 설명된다.


PCA 전체 흐름

원본 데이터
→ 평균 중심화
→ 공분산 행렬 계산
→ 고유값 / 고유벡터 계산
→ 큰 고유값의 고유벡터 선택
→ 새로운 축으로 데이터 변환

실전에서 PCA를 쓸 때 주의할 점

1. 스케일 차이가 크면 결과가 왜곡될 수 있다

키(cm)와 연봉(원)을 같이 PCA하면 연봉 feature가 분산을 거의 지배할 수 있다.

그래서 보통 PCA 전에는 StandardScaler 같은 정규화를 먼저 한다.


2. PCA는 feature 의미가 흐려질 수 있다

PCA 이후 feature는:

PC1, PC2 ...

같은 새로운 축으로 바뀐다.

즉, 기존 컬럼 의미가 직접적으로 유지되지 않을 수 있다.


3. 분산이 크다고 항상 중요한 건 아니다

PCA는 “분산이 큰 방향”을 중요하다고 가정한다.

하지만 실제 문제에서는 작은 분산 feature가 더 중요한 경우도 존재할 수 있다.


PCA는 공분산 행렬에서 분산이 가장 큰 방향을 고유벡터로 찾아, 데이터를 더 적은 차원에서 표현하는 차원 축소 기법이다.