주성분 분석, 즉 PCA는 여러 개의 수치형 변수를 가능한 한 많은 변동성을 보존하는 더 적은 수의 새로운 변수로 바꾸는 방법입니다. "PCA가 뭐예요?"라고 검색했다면, 짧게 말해 데이터를 새로운 축으로 회전시킨 뒤 퍼짐을 가장 잘 설명하는 축만 남기는 방법이라고 보면 됩니다.

이 새로운 축들을 주성분이라고 합니다. 표준적인 PCA에서는 첫 번째 주성분이 가능한 한 가장 큰 분산을 담고, 두 번째 주성분은 첫 번째와 직교하면서 남아 있는 분산을 최대한 많이 담습니다. 그 뒤의 성분들도 같은 방식으로 이어집니다.

PCA가 찾으려는 것

고차원 공간에 점들이 구름처럼 퍼져 있다고 생각해 봅시다. PCA는 그 점구름이 가장 크게 퍼지는 방향을 찾습니다.

퍼짐의 대부분이 한두 방향에서 일어난다면, 원래의 모든 변수를 쓰지 않고도 한두 개의 주성분으로 데이터를 잘 요약할 수 있습니다. 그래서 PCA는 차원 축소, 시각화, 압축, 전처리에 널리 쓰입니다.

중심화된 데이터에 대해 첫 번째 주성분은 다음 문제의 해입니다.

maximize Var(Xw)subject to w=1,\text{maximize } \mathrm{Var}(Xw) \quad \text{subject to } \|w\| = 1,

여기서 XX는 중심화된 데이터 행렬이고, ww는 방향 벡터입니다.

중심화 조건은 중요합니다. 중심화를 하지 않으면 선택된 방향이 평균 주변의 변동이 아니라 변수들의 평균 수준에 의해 결정될 수 있습니다.

PCA 계산 방법

표준적인 절차는 짧습니다.

  1. 관측값은 행에, 변수는 열에 둡니다.
  2. 각 변수에서 평균을 빼 중심화합니다.
  3. 변수들의 단위가 매우 다르고 스케일이 결과를 지배하면 안 된다면 표준화도 합니다.
  4. 중심화된 데이터의 공분산 행렬을 계산합니다.
  5. 그 고유벡터와 고유값을 구합니다.

고유벡터는 주된 방향을 알려 줍니다. 고유값은 각 방향이 얼마나 많은 분산을 설명하는지 알려 줍니다.

PCA를 특이값 분해, 즉 SVD로 계산하는 경우도 자주 봅니다. 중심화된 데이터에서는 같은 주성분 부분공간을 얻을 수 있고, 실제 계산에서는 이 방법이 더 선호되는 경우가 많습니다.

2차원에서 보는 PCA 예제

다음과 같은 2차원 관측값 세 개를 생각해 봅시다.

(1,1),(2,2),(3,3).(1,1), \quad (2,2), \quad (3,3).

이 점들은 정확히 직선 y=xy=x 위에 있으므로, 이미 하나의 지배적인 방향이 있을 것이라고 예상할 수 있습니다.

먼저 평균 (2,2)(2,2)를 빼서 데이터를 중심화합니다.

(1,1),(0,0),(1,1).(-1,-1), \quad (0,0), \quad (1,1).

이 중심화된 데이터셋의 공분산 행렬은 다음 행렬에 비례합니다.

(1111).\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}.

이 행렬의 서로 직교하는 두 고유벡터 방향은 다음과 같습니다.

12(1,1)and12(1,1).\frac{1}{\sqrt{2}}(1,1) \quad \text{and} \quad \frac{1}{\sqrt{2}}(1,-1).

첫 번째 방향은 데이터가 실제로 변하는 직선을 따라갑니다. 두 번째 방향은 그 직선을 가로지르는 방향입니다.

중심화된 점들을 첫 번째 방향에 투영해 봅시다.

(1,1)2,(0,0)0,(1,1)2.(-1,-1) \mapsto -\sqrt{2}, \quad (0,0) \mapsto 0, \quad (1,1) \mapsto \sqrt{2}.

이제 두 번째 방향에 투영해 봅시다.

(1,1)0,(0,0)0,(1,1)0.(-1,-1) \mapsto 0, \quad (0,0) \mapsto 0, \quad (1,1) \mapsto 0.

즉, 모든 변동은 12(1,1)\frac{1}{\sqrt{2}}(1,1) 방향에 있고, 12(1,1)\frac{1}{\sqrt{2}}(1,-1) 방향에는 전혀 없습니다. 이 특별한 경우에는 주성분 하나만으로도 각 점을 하나의 숫자로 표현하면서 전체 변동 패턴을 그대로 유지할 수 있습니다.

이것이 가장 단순한 형태의 PCA입니다. 좌표계를 데이터에 맞게 회전시킨 뒤, 회전된 좌표 중 어떤 것을 남길 가치가 있는지 판단하는 것입니다.

주성분의 의미

각 주성분은 원래 변수들의 선형결합입니다.

예를 들어 첫 번째 성분이 다음과 같다면

z1=0.7x1+0.7x2,z_1 = 0.7x_1 + 0.7x_2,

주된 변동 방향이 처음 두 변수의 거의 같은 가중치 조합이라는 뜻입니다. 정확한 해석은 변수의 의미와 데이터가 중심화만 되었는지, 표준화까지 되었는지에 따라 달라집니다.

점수(score)는 각 관측값을 주성분 방향으로 투영한 뒤의 좌표입니다. 적재값(loadings)은 각 원래 변수가 한 성분에 얼마나 강하게 기여하는지를 나타냅니다.

PCA에서 흔한 실수

중심화를 건너뛰기

표준적인 PCA는 보통 중심화된 데이터에 적용합니다. 중심화를 하지 않으면, 결과가 실제로 관심 있는 변동보다 변수들의 평균 수준을 더 많이 반영할 수 있습니다.

스케일 무시하기

한 변수는 달러 단위이고 다른 변수는 밀리미터 단위라면, 더 큰 스케일의 변수가 분산 계산을 지배할 수 있습니다. 단위가 다르고 상대적 스케일이 답을 결정하면 안 되는 경우에는 표준화가 적절한 경우가 많습니다.

PCA가 가장 의미 있는 특징을 찾는다고 생각하기

PCA는 분산이 큰 방향을 찾는 것이지, 반드시 인과적으로 가장 의미 있는 방향이나 클래스 구분이 가장 잘 되는 방향을 찾는 것은 아닙니다. 분산이 크다고 해서 항상 더 유용한 것은 아닙니다.

저차원 투영을 정보 손실이 없다고 보기

앞의 몇 개 성분만 남기는 것은 근사입니다. 매우 좋은 근사가 될 수는 있지만, 남겨 두지 않은 성분들의 분산이 정확히 0이 아닌 이상 일부 정보는 버려집니다.

PCA가 유용한 경우

PCA는 변수들 사이의 상관이 있고, 데이터를 더 단순하게 표현하고 싶을 때 자주 사용됩니다.

대표적인 활용 예는 다음과 같습니다.

  • 모델링 전에 입력 특성 수 줄이기
  • 고차원 데이터를 2차원이나 3차원으로 시각화하기
  • 대부분의 분산을 유지하면서 측정값 압축하기
  • 금융, 생물학, 이미지 분석, 신호 처리에서 지배적인 패턴 찾기

이 방법은 분산 기반 구조가 문제를 요약하는 데 적절할 때 가장 유용합니다.

비슷한 문제 직접 해보기

(1,2)(1,2), (2,3)(2,3), (3,4)(3,4), (4,5)(4,5)를 그래프로 그려 보세요. 중심화한 뒤, 방향 (1,1)(1,1)(1,1)(1,-1)을 따라 퍼짐을 비교해 보세요. 이 작은 연습만으로도 왜 PCA가 한 방향은 중요하다고 보고 다른 방향은 대부분 중복된다고 판단하는지 분명해집니다.

한 걸음 더 나아가고 싶다면, 점들이 완전히 한 직선 위에 있지 않은 경우를 직접 만들어 보세요. 그리고 첫 번째 성분이 설명하는 분산과 두 번째 성분이 설명하는 분산을 비교해 보세요.

문제 풀이가 필요하신가요?

문제를 올리면 검증된 단계별 풀이를 몇 초 만에 받을 수 있습니다.

GPAI Solver 열기 →