1. 개요[편집]
| 주성분 분석 Principal Component Analysis | |
|---|---|
| 약칭 | PCA |
| 목적 | 선형 차원 축소 · 분산 최대 방향 추출 |
| 핵심 도구 | 특이값 분해, 고유값 문제 |
| 제안 | Pearson(1901) · Hotelling(1933) |
| 공학계 별칭 | 고유직교분해(POD), 카루넨-뢰브 전개 |
100차원 데이터를 던져주면 통계학자는 묻는다. “그래서, 진짜로는 몇 차원인데?”
주성분 분석(Principal Component Analysis, PCA)은 고차원 데이터의 분산이 가장 큰 방향들을 차례로 찾아, 그 방향들이 이루는 저차원 부분공간으로 데이터를 사영하는 선형 차원 축소 기법이다. 찾아낸 직교 방향 벡터들을 주성분(principal component)이라 부르며, 첫 번째 주성분은 데이터의 분산을 가장 많이 설명하는 방향, 두 번째는 그에 직교하면서 남은 분산을 가장 많이 설명하는 방향, 이런 식으로 이어진다.
같은 수학이 분야마다 다른 이름으로 불린다는 점이 재밌다. 통계학에서 PCA, 유체·구조 해석에서 고유직교분해(POD, Proper Orthogonal Decomposition), 신호처리에서 카루넨-뢰브 전개, 기계 진단에서 주좌표 해석. 축소차수모델 문서에서 다루는 POD가 바로 이 문서의 PCA와 동일한 알고리즘이다.
2. 수학적 정의[편집]
관측 개, 변수 개인 데이터 행렬 를 두고, 각 열의 평균을 빼 중심화했다고 하자. 표본 공분산 행렬은
이다. PCA는 이 대칭 양반정치 행렬의 고유값 문제를 푸는 것과 동치다.
고유벡터 가 번째 주성분 방향(로딩), 고유값 가 그 방향으로의 분산이다. 원 데이터를 사영한 를 주성분 점수(score)라 한다. 가 대칭이므로 고유벡터들은 서로 직교하며, 결과적으로 상관되어 있던 원 변수들이 무상관 좌표계로 회전된다.
이 정의는 최적화 문제로도 유도된다. 제약 하에 를 최대화하는 문제에 라그랑주 승수법을 적용하면 곧바로 가 튀어나온다. “분산 최대화”와 “고유값 문제”가 같은 것임을 보여주는 두 줄짜리 증명이다.
3. SVD로 계산하는 이유[편집]
실무에서 를 직접 만들어 고유분해하는 일은 드물다. 특이값 분해를 데이터 행렬에 직접 적용한다.
이때 의 열이 주성분 방향이고, 특이값과 고유값은 의 관계를 가진다. 굳이 SVD를 쓰는 이유는 순전히 수치적이다. 를 만드는 순간 조건수가 제곱되기 때문이다. 원래 조건수가 이던 문제가 이 되면 배정밀도로도 정보가 통째로 날아간다.1
데이터가 거대하면 전체 SVD도 부담이므로, 상위 몇 개 성분만 뽑는 절단 SVD를 쓴다. 랑초스(Lanczos) 계열의 크리로프 부분공간법이나 무작위 사영(randomized SVD)이 이때 등장한다.
관측 수가 변수 수보다 훨씬 적을 때()는 스냅샷 기법을 쓴다. 대신 행렬의 고유분해로 같은 결과를 얻는 요령이며, 유동장 스냅샷 수백 장에서 POD 모드를 뽑을 때 필수적인 트릭이다.
4. 성분 개수 정하기[편집]
몇 개의 주성분을 남길 것인가가 실무의 유일한 진짜 결정이다. 기준은 대체로 세 가지다.
- 누적 설명 분산: 가 목표치(관행적으로 90~99%)를 넘는 최소 . 유동 POD에서는 에너지 비율이라 부른다.
- 스크리 도표(scree plot): 고유값을 크기순으로 찍었을 때 급락이 멈추고 완만해지는 팔꿈치 지점에서 자른다. 눈대중이지만 의외로 잘 먹힌다.
- 카이저 기준: 상관행렬 기반 PCA에서 인 성분만 남긴다. 표준화된 변수 하나만큼도 설명 못 하는 성분은 버린다는 논리.
여기서 중요한 전처리 규칙 하나. 변수들의 단위가 다르면 반드시 표준화해야 한다. 압력을 Pa로, 길이를 m로 넣으면 압력의 분산이 수십 자릿수 크게 잡혀 첫 주성분이 그냥 “압력 축”이 되어버린다. PCA는 분산의 절대 크기에 반응하지 물리적 중요도에 반응하지 않는다. 단위를 바꿨더니 결과가 바뀌었다면, 그건 버그가 아니라 표준화를 안 한 것이다.
5. 시뮬레이션 분야에서의 활용[편집]
축소차수모델 이 가장 대표적이다. 전산유체역학 해석에서 시간에 따른 유동장 스냅샷을 모아 POD를 돌리면, 수백만 자유도의 유동이 수십 개의 공간 모드 조합으로 근사된다. 이 모드들을 기저로 갤러킨 방법 사영을 하면 지배방정식이 몇십 개짜리 상미분방정식계로 줄어든다. 실시간 제어나 설계 탐색에서 전 차수 해석을 대신하는 대리 모델의 뼈대가 된다.
유체에서 POD 모드는 물리적으로도 읽힌다. 원통 후류의 스냅샷에 POD를 걸면 상위 두 모드가 카르만 와열의 주기적 와류 방출 쌍으로 정확히 나온다. 데이터가 지배 구조를 스스로 실토하는 셈이다.2
분자동역학 에서는 원자 좌표 궤적의 공분산을 분해하는 필수 동역학 해석(essential dynamics)으로 쓰인다. 상위 몇 개 모드가 단백질의 도메인 개폐 같은 대규모 집단 운동을 담고, 나머지는 열적 요동이다. 자유에너지 섭동 계산의 반응 좌표를 고를 때도 이 모드가 후보가 된다.
불확실성 정량화 에서는 상관된 확률 입력장을 무상관 확률변수 몇 개로 줄이는 카루넨-뢰브 전개로 등장한다. 입력 차원이 줄어야 몬테카를로 방법이나 소볼 지수 계산의 표본 수가 감당 가능해진다.
그 밖에도 실험계획법 결과에서 설계변수 간 상관 구조를 보거나, 진동 계측 데이터에서 모드 해석 결과와 대조하거나, 계측 채널 수를 줄이는 데도 쓰인다.
6. 한계[편집]
PCA는 선형 기법이다. 데이터가 곡면 위에 놓여 있으면 그 곡면을 펴지 못하고 감싸는 평면만 찾는다. 나선형 데이터에 PCA를 걸면 정보 대부분이 살아남지 못한다. 이런 경우 커널 PCA, 오토인코더, 다양체 학습 계열로 넘어가야 한다.
이동하는 불연속면에도 약하다. 위치가 변하는 충격파나 화염면은 선형 모드 조합으로 표현하려면 모드가 무한히 필요해진다. 압축성 유동 문제에서 POD 기반 ROM이 자주 배신하는 이유다.
분산이 큰 방향이 반드시 중요한 방향은 아니다는 점도 기억해야 한다. PCA는 비지도 기법이라 출력이나 목표변수를 모른다. 분류나 회귀가 목적이면 목표를 고려하는 판별 분석이나 PLS가 더 나을 수 있다. 또 주성분은 원 변수들의 선형 결합이라 물리적 해석이 흐려지기 쉽다. “제1주성분이 0.34×온도 − 0.51×압력 + …”을 보고서에 어떻게 쓸 것인가는 늘 골칫거리다.
이상치에도 취약하다. 분산 기반이니 극단값 하나가 주성분 방향을 통째로 끌고 갈 수 있다. 데이터를 보기 전에 PCA를 돌리면 안 된다.3
7. 관련 문서[편집]
- 수치해석 · 특이값 분해 · 고유값 문제
- 축소차수모델 · 대리 모델
- 최소자승법 · 조건수 · 라그랑주 승수법
- 크리로프 부분공간법 · 갤러킨 방법
- 불확실성 정량화 · 소볼 지수 · 몬테카를로 방법
- 분자동역학 · 모드 해석 · 카르만 와열
8. Footnotes[편집]
-
공분산 행렬을 명시적으로 만들어 고유분해하는 코드가 여전히 교과서와 블로그에 널려 있다. 잘 조건화된 장난감 데이터에서는 잘 돌기 때문이다. 실제 계측 데이터에서 결과가 이상하면 이걸 먼저 의심하자. ↩
-
그래서 POD 결과를 처음 본 사람들이 “격자가 다 한 게 아니라 데이터가 다 했다”고 감탄한다. 다만 모드에 물리적 이름을 붙이는 건 어디까지나 사후 해석이지, POD가 물리를 알고 뽑아준 것은 아니다. ↩
-
통계 실무의 오래된 격언 그대로다. 산점도부터 그려라. 그 다음에 알고리즘을 돌려라. 순서를 바꾸면 알고리즘이 이상치의 성실한 대변인이 된다. ↩