주성분분석

by Ariel Daley

고유분해를 이용한 차원 축소

주성분 분석(PCA, Principal Component Analysis)은 고차원 데이터에서 주요 정보를 최대한 보존하면서 차원을 축소하는 대표적인 기법이다. 이 기법은 데이터 집합의 공분산 행렬의 고유분해(eigen-decomposition)를 통해 이루어진다. 공분산 행렬은 대칭행렬이므로 실수 고윳값과 정규직교 고유벡터를 가지며, 고윳값이 클수록 해당 고유벡터 방향으로 데이터의 분산이 크다는 사실을 이용하여, 분산이 큰 방향(주성분)을 선택함으로써 데이터의 특성을 효과적으로 요약할 수 있다.

정의 1. (주성분 분석의 기본 개념)

데이터 집합 \(X = \{\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_m\} \subset \mathbb{R}^n\)에 대해, 공분산 행렬 \(S\)를

\[ S = \frac{1}{m-1}\sum_{i=1}^{m} (\mathbf{x}_i - \bar{\mathbf{x}})(\mathbf{x}_i - \bar{\mathbf{x}})^T \]

로 정의한다. \(S\)의 고윳값 분해를 통해 \(S = QDQ^T\) (여기서 \(Q\)는 정규직교 행렬, \(D = \mathrm{diag}(\lambda_1, \lambda_2, \dots, \lambda_n)\))로 나타내면, 고윳값 \(\lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_n \ge 0\)에 대응하는 정규직교고유벡터 \(\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n\)이 얻어진다. 이때, 첫 \(k\)개의 고유벡터 \(\{\mathbf{u}_1, \dots, \mathbf{u}_k\}\)를 선택하여 새로운 좌표계를 구성하면, 데이터는 \(k\)차원 공간으로 투영되어 표현된다. 이를 차원 축소라고 부른다.

정리 1. (분산 최대화 성질)

\(S\)의 고윳값 \(\lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_n \ge 0\)과 정규직교 고유벡터 \(\mathbf{u}_1, \dots, \mathbf{u}_n\)에 대해, 단위벡터 \(\mathbf{v}\)가 \(S\)에 의한 분산 \(\mathbf{v}^T S \mathbf{v}\)를 최대화하는 방향은 바로 \(\mathbf{u}_1\)이다. 즉, 임의의 단위벡터 \(\mathbf{v}\)에 대해 \[ \mathbf{v}^T S \mathbf{v} \le \lambda_1 \] 이 성립하며, 등호는 \(\mathbf{v} = \mathbf{u}_1\)일 때 성립한다.

증명 스케치 \(S\)가 정규직교 행렬 \(Q\)에 의해 대각화되어 \(S = QDQ^T\)라고 할 때, 임의의 단위벡터 \(\mathbf{v}\)를 \(Q\)의 기저에 대해 표현하면 \(\mathbf{v} = Q\mathbf{y}\) (단, \(\|\mathbf{y}\|=1\))이다. 그러면 \[\mathbf{v}^T S \mathbf{v} = \mathbf{y}^T D \mathbf{y} = \sum_{i=1}^{n} \lambda_i y_i^2.\] 최대값은 \(\lambda_1\)일 때 달성되며, 이는 \(\mathbf{y} = (1,0,\dots,0)^T\) 즉, \(\mathbf{v}=Q(1,0,\dots,0)^T = \mathbf{u}_1\)일 때이다.

정리 2. (차원 축소를 통한 분산 보존)

데이터 집합 \(X \subset \mathbb{R}^n\)의 공분산 행렬 \(S\)에 대해, 주성분 \(\{\mathbf{u}_1, \dots, \mathbf{u}_k\}\)에 데이터를 투영하면, 투영된 데이터의 총 분산은 원 데이터의 분산 중 최대 \(\sum_{i=1}^{k}\lambda_i\)를 보존한다.

보기 1.

\(\mathbb{R}^2\)의 데이터 집합의 공분산 행렬이 다음과 같이 주어졌다고 하자.

\[ S = \begin{pmatrix} 4 & 1 \\ 1 & 2 \end{pmatrix}. \]

이 행렬의 고윳값을 구하면, 특성다항식 \(\det(S-\lambda I) = (4-\lambda)(2-\lambda)-1= \lambda^2-6\lambda+7 = 0\)에서 고윳값 \(\lambda_1 \approx 4.414\), \(\lambda_2 \approx 1.586\)가 얻어진다. 만약 데이터를 1차원으로 축소할 때, 가장 큰 고윳값 \(\lambda_1\)에 대응하는 고유벡터 \(\mathbf{u}_1\) 방향으로 투영하면, 투영된 데이터의 분산은 최대 4.414에 달하게 된다. 이와 같이, 주성분을 선택함으로써 데이터의 주요 정보를 효과적으로 보존할 수 있다.

보기 2.

\(\mathbb{R}^3\)의 데이터 집합에서, 공분산 행렬 \(S\)의 고윳값이 \(\lambda_1 = 5\), \(\lambda_2 = 3\), \(\lambda_3 = 1\)로 주어졌다고 하자. 만약 2차원으로 차원 축소를 진행하면, 투영된 데이터의 분산의 합은 최대 \(\lambda_1 + \lambda_2 = 8\)이 된다. 이는 전체 분산 \(5+3+1=9\) 중 대부분을 보존하는 결과로, 데이터의 주요 특성이 잘 유지됨을 의미한다.

이와 같이, 고유분해를 통한 차원 축소는 데이터의 분산을 최대한 보존하면서 원래의 고차원 공간에서 저차원 공간으로 효율적으로 사영하는 기법이다. 이 과정은 통계, 신호처리, 기계학습 등 다양한 분야에서 데이터 분석의 핵심 도구로 활용된다.

공학·데이터분석에서의 활용

PCA(주성분분석)는 고유분해를 이용하여 데이터 집합의 공분산 행렬을 대각화하고, 주요 분산 방향(주성분)을 추출함으로써 고차원 데이터를 저차원으로 축소하는 강력한 기법이다. 이 과정은 데이터의 노이즈를 제거하고, 정보의 핵심 구조를 보존하며, 후속 분석(예, 분류, 클러스터링, 시각화 등)에 유리한 저차원 표현을 얻기 위해 널리 활용된다.

공학 및 데이터분석 분야에서는 PCA를 통해 다음과 같은 응용이 이루어진다.

  • 데이터 압축 및 차원 축소: 고차원 데이터의 불필요한 변수(노이즈)를 제거하고, 가장 큰 분산을 보존하는 소수의 주성분을 선택하여 데이터의 차원을 축소함으로써 계산 복잡도를 낮춘다.
  • 특성 추출 및 시각화: 데이터의 주성분을 이용하여 주요 특징을 추출하고, 이를 저차원 공간에 표현함으로써 데이터의 구조를 시각적으로 분석할 수 있다.
  • 노이즈 제거: 분산이 작은 주성분은 노이즈에 해당하는 경우가 많으므로, 이를 제거하여 데이터의 신호 대 잡음비(signal-to-noise ratio)를 개선할 수 있다.
  • 모델 단순화: 차원 축소를 통해 피처의 수를 줄이면, 머신러닝 모델에서 과적합(overfitting) 위험을 줄이고, 학습 속도를 향상시키며, 모델의 해석력을 높일 수 있다.

정리 3. (PCA를 통한 분산 보존)

데이터 집합 \(X \subset \mathbb{R}^n\)의 공분산 행렬 \(S\)를 고유분해하여 고윳값 \(\lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_n \ge 0\)와 이에 대응하는 정규직교 고유벡터 \(\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n\)를 얻는다면, \(k\)차원 주성분 공간 \(W = \mathrm{span}\{\mathbf{u}_1,\dots,\mathbf{u}_k\}\)로 데이터를 투영할 때, 투영된 데이터의 총 분산은 최대 \(\sum_{i=1}^{k}\lambda_i\)를 보존한다.

보기 3.

\(\mathbb{R}^3\)의 데이터 집합에서 공분산 행렬의 고윳값이 \(\lambda_1 = 6\), \(\lambda_2 = 2\), \(\lambda_3 = 1\)로 주어진다고 하자. 만약 데이터를 2차원으로 축소하여 주성분 공간 \(W = \mathrm{span}\{\mathbf{u}_1, \mathbf{u}_2\}\)에 투영하면, 투영된 데이터의 분산의 합은 최대 \(6+2=8\)이 된다. 이는 전체 분산 \(6+2+1=9\) 중 대부분을 보존하는 결과로, 데이터의 핵심 구조가 효과적으로 유지됨을 보여준다.

보기 4.

공학 분야에서는 센서 데이터와 같이 고차원 데이터를 다룰 때, PCA를 통해 차원 축소 및 노이즈 제거를 수행한다. 예를 들어, 다수의 센서에서 수집된 데이터를 공분산 행렬 \(S\)로 표현하고, \(S\)의 고유분해를 통해 주성분을 추출한다. 가장 큰 고윳값에 대응하는 고유벡터는 데이터가 가장 크게 분산하는 방향을 나타내며, 이 방향으로 데이터를 투영하면 데이터의 주요 특징을 보존하면서 차원을 줄일 수 있다. 이를 통해 후속 분석이나 제어 시스템 설계, 패턴 인식 등의 응용에서 계산 효율성을 크게 향상시킬 수 있다.

요약하면, PCA는 고유분해를 기반으로 데이터의 분산을 최대한 보존하는 주성분을 찾아내고, 이를 이용해 고차원 데이터를 저차원으로 축소하는 기법이다. 이 방법은 공학 및 데이터분석 분야에서 데이터의 특성을 추출하고, 노이즈를 제거하며, 복잡한 데이터를 단순화하는 데 매우 효과적이다.