차원 축소와 주성분분석
주성분분석의 원리와 성분 수 선택·해석 기준을 익힌다.
핵심 요약
주성분분석(PCA)은 중심화된 수치형 변수를 서로 직교하는 선형결합 축으로 바꾸는 비지도 차원 축소 방법이다. 첫 번째 주성분은 표본 분산을 가장 크게 설명하고, 다음 성분은 앞선 축과 직교하면서 남은 분산을 최대화한다. 분산이 큰 방향이 목표 예측에 중요한 방향과 항상 같지는 않다.
PCA의 결과는 고유값, 고유벡터, 주성분 점수, 적재량을 구분해 읽어야 한다. 단위와 분산 차이가 크면 표준화를 검토하고, 결측 처리·평균·표준편차·주성분 방향·성분 수는 훈련 데이터 안에서만 학습한다.
학습 목표
- PCA와 변수 선택의 차이, 직교와 독립의 차이를 설명한다.
- 공분산행렬 PCA와 상관행렬 PCA의 선택 조건을 판정한다.
- 고유값·고유벡터·점수·적재량을 구분한다.
- 분산 설명률, 누적 설명률, 폐기 분산을 계산한다.
- 0분산 변수와 고차원 자료의 성분 수 경계를 설명한다.
- 교차검증에서 전처리·PCA·성분 수 선택의 누수를 방지한다.
1. 차원 축소의 목적과 범위
변수 수가 많고 서로 강하게 상관되면 시각화와 계산이 어렵고 회귀계수의 다중공선성이 커질 수 있다. PCA는 중복된 변동을 적은 수의 성분으로 요약해 압축, 시각화, 잡음 완화, 후속 모형의 입력에 사용할 수 있다.
PCA는 원래 변수 중 일부를 남기는 변수 선택이 아니라, 원변수의 선형결합으로 새 변수를 만드는 변수 추출이다. 성분을 줄이면 원변수 공간의 일부 정보는 손실되며, 낮은 분산 방향에 목표 예측 정보가 있으면 예측 성능도 나빠질 수 있다.
PCA의 주성분 방향은 서로 직교하고, 같은 학습 자료에서 얻은 서로 다른 주성분 점수의 공분산은 0이다. 그러나 무상관은 일반적으로 통계적 독립을 뜻하지 않는다. 정규성 같은 추가 조건이 없으면 주성분들이 비선형 의존을 가질 수 있다.
2. 중심화와 스케일 선택
변수 $j$의 중심화와 표준화는 다음과 같다.
평균 $\bar{x}_j$와 표준편차 $s_j$는 훈련 데이터에서만 계산한다. $s_j=0$인 상수 변수는 표준화할 수 없고 분산 정보도 없으므로 원인을 확인한 뒤 PCA 입력에서 제외하는 것이 일반적이다. 이상값은 평균·표준편차와 공분산을 크게 바꿀 수 있으므로 원천 확인과 강건한 전처리를 먼저 검토한다.
| 기준 | 공분산행렬 PCA | 상관행렬 PCA |
|---|---|---|
| 입력 | 중심화한 원래 척도 | 보통 평균 0·표준편차 1로 표준화 |
| 적합 상황 | 단위가 같고 분산 크기 자체가 의미 있음 | 단위·분산 차이가 커 직접 비교가 어려움 |
| 주의점 | 큰 분산 변수가 성분을 지배할 수 있음 | 모든 변수를 같은 분산으로 맞추는 판단이 필요 |
| 고유값 합 | 원변수 총분산 | 표준화한 변수 수 $p$와 같음 |
표준화가 항상 정답은 아니다. 같은 단위에서 변동 폭 자체가 중요하면 공분산행렬이 목적에 더 맞을 수 있다. 반대로 원, 회, 초처럼 단위가 다른 변수를 그대로 넣으면 단위 선택이 결과를 지배할 수 있다.
3. PCA 계산 원리
중심화된 데이터 행렬을 $\mathbf{X}_c\in\mathbb{R}^{n\times p}$라 하면 표본 공분산행렬과 고유값 문제는 다음과 같다.
- 고유벡터 $\mathbf{v}_k$: $k$번째 주성분의 방향이며 보통 길이가 1이고 서로 직교한다.
- 고유값 $\lambda_k$: 해당 주성분 점수의 표본 분산이다. 공분산행렬은 양의 준정부호이므로 고유값은 0 이상이다.
- 주성분 점수 $t_{ik}$: 관측치 $i$를 $k$번째 방향에 투영한 좌표다.
적재량 용어의 주의
교재와 소프트웨어에 따라 적재량(loadings)이라는 용어가 다르게 쓰일 수 있다.
| 구분 | 의미 | 크기·단위 |
|---|---|---|
| 고유벡터 계수 | 성분을 만드는 변수별 가중치 $v_{jk}$ | 보통 한 고유벡터의 제곱합이 1 |
| 상관 적재량 | 원변수와 주성분 점수의 상관 | -1에서 1 사이 |
| 주성분 점수 | 관측치별 성분 좌표 $t_{ik}$ | 관측치마다 다름 |
표준화 변수의 상관행렬 PCA에서는 원변수와 $k$번째 점수의 상관 적재량을 흔히 $\sqrt{\lambda_k}v_{jk}$로 계산한다. 일부 구현은 고유벡터 계수 자체를 적재량이라고 부르므로 출력 정의를 확인해야 한다. 적재량과 점수는 각각 변수 해석과 관측치 좌표라는 점에서 다르다.
고유벡터의 부호는 뒤집어도 같은 축을 나타낸다. 따라서 실행마다 성분 전체의 부호가 바뀌어도 오류가 아니다. 같은 고유값이 반복되거나 매우 가까우면 해당 부분공간 안에서 축이 회전할 수 있어 개별 적재량의 안정성이 낮아질 수 있다.
4. 분산 설명률과 재구성
고유값을 $\lambda_1\ge\lambda_2\ge\cdots\ge\lambda_p\ge0$로 정렬하면 다음과 같다.
$q$개 성분으로 중심화 자료를 근사 복원하면 다음과 같다.
선택하지 않은 성분의 고유값 합은 중심화 자료의 총 폐기 분산과 연결된다. 고유값이 4, 1.5, 0.5이면 전체 분산은 6이다.
- 첫 성분 설명률: $4/6=66.67%$
- 앞 두 성분 누적 설명률: $(4+1.5)/6=91.67%$
- 세 번째 성분을 버릴 때 폐기 분산 비율: $0.5/6=8.33%$
설명률은 입력 변수의 분산을 보존한 정도이지 목표 예측력, 군집 타당성, 인과적 중요도를 보장하지 않는다.
5. 성분 수 선택과 경계조건
| 기준 | 판단 방법 | 한계 |
|---|---|---|
| 누적 설명률 | 80%·90% 등 목적별 목표와 비교 | 고정 절대 기준이 아님 |
| 스크리 도표 | 고유값 감소가 완만해지는 꺾임 확인 | 꺾임이 모호할 수 있음 |
| Kaiser 기준 | 상관행렬 PCA에서 고유값 1 초과 성분 검토 | 변수 수·표본 특성에 민감한 경험칙 |
| 재구성 오차 | 원자료 근사 손실 비교 | 업무상 중요한 저분산 정보 반영 필요 |
| 후속 분석 성능 | 군집 안정성·예측 성능을 검증 자료에서 비교 | 선택 과정 전체를 검증 안에 넣어야 함 |
상관행렬 PCA에서 각 표준화 변수의 분산이 1이므로 고유값 합은 변수 수 $p$다. 이때 고유값 1은 표준화 변수 하나가 가진 분산과 비교하는 기준이다. 공분산행렬 PCA의 서로 다른 원척도 고유값에 Kaiser 기준을 기계적으로 적용하지 않는다.
중심화 때문에 데이터 행렬의 계수는 최대 $n-1$이다. 따라서 양의 고유값을 갖는 주성분 수는 최대 $\min(p,n-1)$이다. 예를 들어 관측치가 5개이고 변수가 10개면 양의 분산을 가진 주성분은 최대 4개다. 나머지 성분의 고유값은 이론적으로 0이며 수치 계산에서는 매우 작은 값으로 나타날 수 있다.
6. 해석과 한계
| 장점 | 한계·주의점 |
|---|---|
| 상관된 변수를 직교 성분으로 요약 | 직교가 통계적 독립을 보장하지 않음 |
| 시각화와 계산량 감소 | 선형 구조만 반영 |
| 다중공선성 완화 | 성분이 혼합 변수라 업무 해석이 어려울 수 있음 |
| 잡음·저분산 성분 제거 가능 | 낮은 분산 방향의 목표 정보가 손실될 수 있음 |
| 원자료 근사 복원 가능 | 이상값·스케일·표본 변화에 민감 |
범주형 값을 임의의 정수 코드로 바꾸어 연속형처럼 넣으면 코드 사이 거리가 실제 의미로 해석된다. 원-핫 변수도 희소성, 희귀 범주의 가중 영향, 범주 묶음의 구조를 확인해야 한다. 범주형 중심 자료에는 목적에 맞는 다른 차원 축소 방법을 검토할 수 있다.
7. 누수 없는 학습·평가 절차
PCA는 목표변수를 사용하지 않아도 검증·시험 데이터의 분포 정보를 이용하면 누수가 생긴다. 교차검증에서는 다음 전체 절차를 각 훈련 폴드 안에서 다시 학습한다.
- 훈련 폴드에서 결측 처리 기준을 학습한다.
- 훈련 폴드에서 평균·표준편차를 계산한다.
- 훈련 폴드에서 공분산·상관 구조와 주성분 방향을 구한다.
- 누적 설명률이나 후속 성능으로 성분 수를 선택한다.
- 고정된 전처리와 PCA를 검증 폴드에 적용한다.
성분 수를 후속 예측 성능으로 튜닝한다면 바깥 검증 폴드는 최종 평가에만 사용하고, 바깥 훈련 폴드 내부의 안쪽 검증에서 성분 수를 고른다. 시계열은 시간 순서를 지키며 미래 구간으로 평균·성분 방향을 학습하지 않는다.
새 관측치에도 훈련 평균을 빼고, 선택했다면 훈련 표준편차로 나눈 뒤, 훈련에서 얻은 고유벡터에 투영한다. 검증·운영 데이터에서 평균이나 축을 다시 맞추면 학습 시 정의한 성분과 달라진다.
8. 사례 적용
상황: 고객 행동 분석에 방문 횟수, 체류시간, 조회 수, 구매 횟수, 매출액 등 상관된 수치형 변수 30개가 있다. 매출액 단위가 다른 변수보다 크고 고객 군집 전 압축과 시각화가 목적이다.
판단 과정:
- 결측·상수 변수·이상값과 단위 의미를 확인한다.
- 단위 차이가 분석을 지배하지 않도록 훈련 데이터에서 표준화한다.
- 훈련 데이터에 PCA를 적합하고 누적 설명률·폐기 분산·적재량을 확인한다.
- 첫 두 성분은 시각화에 사용하되, 군집에는 성분 수별 군집 안정성과 업무 해석을 비교한다.
- 검증 데이터는 훈련 평균·표준편차·주성분 방향으로만 변환한다.
결론: 2차원 그림이 편리하다는 이유로 두 성분만 고정하지 않는다. 정보 보존, 군집 품질, 해석 가능성을 목적별로 함께 판단한다.
PCA는 중심화한 데이터의 분산이 가장 큰 방향을 PC1로, 그와 직교하면서 남은 분산이 가장 큰 방향을 PC2로 선택한다. 각 주성분은 원변수 하나가 아니라 선형결합이므로 적재량을 보고 해석한다.
예시에서는 PC1~PC3의 누적 설명분산이 85%다. 이 비율은 정보 보존의 한 기준일 뿐이며 최종 차원 수는 검증 성능·해석 가능성·계산비용을 함께 고려한다.
| 판단 | 확인 자료 | 오답 함정 |
|---|---|---|
| 축 방향 | 고유벡터·적재량 | PC1을 원변수 1로 해석 |
| 보존 정보 | 개별·누적 설명분산 | 임계치만으로 자동 결정 |
| 누수 방지 | 학습 폴드에서 중심·축 적합 | 전체 데이터로 PCA 후 검증 |
시험 판단 포인트
- PCA는 목표변수를 사용하지 않는 비지도 선형 변수 추출이다.
- 주성분 방향의 직교와 주성분 점수의 무상관은 통계적 독립과 다르다.
- 고유벡터는 방향, 고유값은 점수 분산, 점수는 관측치 좌표다.
- 적재량은 구현에 따라 고유벡터 계수 또는 원변수-점수 상관을 가리킬 수 있어 정의를 확인한다.
- 상관행렬 PCA의 고유값 합은 표준화 변수 수 $p$다.
- 양의 분산을 갖는 성분 수는 최대 $\min(p,n-1)$이다.
- 성분 수와 전처리 기준은 훈련 폴드 안에서 선택한다.
자주 틀리는 부분
- PCA를 원래 변수 일부를 남기는 변수 선택으로 보지 않는다.
- 직교·무상관을 항상 독립이라고 해석하지 않는다.
- 적재량과 관측치별 점수를 같은 값으로 혼동하지 않는다.
- 분산 설명률이 높으면 목표 예측 성능도 반드시 높다고 보지 않는다.
- 공분산행렬 PCA에 고유값 1 기준을 기계적으로 적용하지 않는다.
- 전체 데이터로 표준화·PCA·성분 수 선택을 한 뒤 교차검증하지 않는다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01PCA의 직교성과 독립성에 관해 올바르게 설명하시오.
주성분 방향은 직교하고 학습 점수는 무상관이지만, 추가 조건 없이는 독립을 보장하지 않는다.
PCA의 고유벡터 방향은 직교하고 같은 학습 자료에서 얻은 서로 다른 주성분 점수의 공분산은 0이다. 그러나 무상관만으로 일반적인 통계적 독립까지 보장되지는 않는다.
02PCA 출력을 구분하여 설명하시오.
주성분 점수는 관측치별 좌표이고, 고유벡터 계수는 성분 방향의 변수별 가중치다.
주성분 점수는 각 관측치를 성분 축에 투영한 좌표다. 고유벡터 계수는 성분 방향을 구성하는 변수별 가중치다.
03고유값이 4, 1.5, 0.5일 때 앞 두 성분을 선택한 결과를 올바르게 제시하시오.
누적 설명률은 약 91.67%이고 폐기 분산 비율은 약 8.33%다.
전체 고유값 합은 $4+1.5+0.5=6$이고 앞 두 성분의 합은 5.5다. 따라서 누적 설명률은 $5.5/6=91.666\ldots%$, 폐기 분산 비율은 $0.5/6=8.333\ldots%$다.
04PCA 성분 수를 후속 예측 성능으로 선택할 때 누수를 막는 절차를 서술하시오.
바깥 훈련 폴드 내부에서 전처리·PCA·성분 수를 선택하고 바깥 검증 폴드는 최종 평가에만 사용한다.
바깥 검증 폴드는 최종 성능 평가에만 사용하고, 결측 처리·표준화·PCA 적합·성분 수 선택은 바깥 훈련 폴드 내부에서 수행해야 한다.