식각 장비 한 대에는 압력, 온도, 가스 유량, RF 전력, 반사 전력 같은 센서가 수십 개 붙어 있고, 웨이퍼 한 장마다 이 모든 값이 기록됩니다. 숫자는 넘쳐나지만 사람이 한눈에 볼 수 있는 축은 두세 개뿐입니다. 다행히 센서들은 제각각 움직이지 않습니다. 몇 개의 숨은 원인이 여러 센서를 함께 흔들기 때문입니다. 주성분 분석(PCA)은 그 "함께 흔들리는 방향"을 찾아 데이터를 몇 개의 점수로 요약하는 방법이고, 그 정체는 놀랍게도 지금까지 배운 것 그대로입니다. 공분산 행렬이라는 대칭 행렬의 고유벡터, 그리고 데이터 행렬의 특이값 분해입니다. 이 장에서는 점구름 위에서 축을 직접 돌려 보며 "분산이 가장 큰 방향"과 "재구성 오차가 가장 작은 방향"이 같은 방향임을 확인하고, 센서 10개를 점수 2개로 줄이는 데까지 갑니다.
데이터를 n×d 행렬로 쓰고, 평균을 빼는 중심화가 왜 PCA의 첫 단계인지 설명한다.
표본 공분산 행렬 C=n−11XcTXc가 대칭이고 양의 준정부호임을 증명하고, uTCu를 "u 방향으로 사영한 분산"으로 읽는다.
레일리 몫의 최댓값이 가장 큰 고유값임을 보이고, 주성분 = C의 고유벡터 = Xc의 오른쪽 특이벡터임을 유도한다.
분산 최대화와 재구성 오차 최소화가 같은 문제라는 피타고라스 항등식을 쓰고, 설명 분산 비율과 스크리 그림으로 남길 성분 수 k를 고른다.
단위가 다른 변수에서 공분산 PCA와 상관 PCA의 차이를 계산하고, 화이트닝 변환 Λ−1/2VT으로 공분산을 단위 행렬로 만든다.
PCA가 놓치는 구조(곡선, 이상값, 분산이 작은 중요한 방향)를 알고, 공정 모니터링·센서 압축·추천 시스템에서의 쓰임을 안다.
이 수식이 없었다면수십 개 센서를 한 화면에서 보는 공정 모니터링
장비 센서가 40개라면, 센서마다 관리도를 하나씩 그려 40개의 화면을 지켜봐야 합니다. 더 큰 문제는 개별 센서가 모두 정상 범위 안에 있어도 조합이 이상할 수 있다는 점입니다. 압력이 조금 높고 유량이 조금 낮은 것은 각각은 흔하지만, 둘이 동시에 일어나는 일은 평소에 없던 일일 수 있습니다. 센서 쌍만 해도 780개, 셋씩 묶으면 9,880개라서 조합을 하나하나 감시할 수는 없습니다.
해법은 센서들이 "함께 움직이는 방향"을 데이터에서 찾아 좌표축을 바꾸는 것입니다. 1901년 칼 피어슨(Karl Pearson)은 점들에 "가장 가깝게 맞는 직선과 평면"을 구하는 문제로, 1933년 해럴드 호텔링(Harold Hotelling)은 "분산을 가장 많이 담는 성분"을 구하는 문제로 같은 답에 도달했습니다. 그 답이 공분산 행렬의 고유벡터, 곧 주성분입니다. 오늘날 반도체 공정의 다변량 이상 감지에서 PCA 점수와 호텔링 T2 통계량은 표준 도구로 쓰입니다.
센서 40개의 관리도→조합 이상은 못 봄→공분산의 고유벡터 = 새 좌표축→점수 몇 개 + T² 하나
데이터 행렬과 중심화
웨이퍼 300장, 센서 10개: 이것은 어떤 행렬인가
웨이퍼 한 장을 처리할 때마다 센서 10개의 평균값을 한 줄로 기록한다고 합시다. 300장이면 300줄 × 10칸의 표가 됩니다. 이 표에서 "웨이퍼들이 주로 어느 방향으로 흩어져 있나"를 묻고 싶은데, 그 전에 먼저 정할 것이 있습니다. 표의 숫자를 원점에서 잰 위치로 볼 것인가, 평균에서 벗어난 정도로 볼 것인가?
표 하나를 행렬로 읽는 약속부터 정합니다. 이 장에서는 통계와 머신러닝의 관례대로 행이 표본, 열이 변수입니다. 표본 하나는 Rd의 벡터이고, 데이터 전체는 Rd에 찍힌 n개의 점, 곧 점구름입니다.
정의 15.1 (데이터 행렬, 평균 벡터, 중심화) 표본 x1,…,xn∈Rd을 행으로 쌓은 n×d 행렬 X를 데이터 행렬(data matrix)이라 한다. 평균 벡터는 μ=n1∑ixi이고, 각 행에서 μT를 뺀
Xc=X−1μT,1=(1,…,1)T∈Rn
를 중심화(centering)된 데이터 행렬이라 한다. Xc의 각 열의 합은 0이다.
그림 15-1. 데이터 행렬은 행마다 표본 하나, 열마다 변수 하나다. 각 열에서 그 열의 평균을 빼면(중심화) 점구름의 무게중심이 원점에 온다. 중심화하지 않으면 "가장 긴 방향"을 물었을 때 원점에서 평균까지의 방향(그림의 점선)이 답으로 나와 버린다. 그것은 데이터의 흩어짐이 아니라 데이터의 위치다.
중심화가 왜 필요한지는 그림이 말해 줍니다. 원점을 지나는 직선 가운데 점들에 가장 가까운 것을 찾으면, 점구름이 원점에서 멀리 있을 때 답은 거의 "원점에서 평균을 가리키는 직선"입니다. 웨이퍼들의 평균 온도가 60 °C라는 사실은 흩어짐과 아무 관계가 없습니다. 그래서 PCA는 언제나 평균을 뺀 데이터에서 출발합니다. 다음 절의 시뮬레이터에서 "평균을 빼지 않기"를 켜 보면 이 실수가 어떤 축을 만드는지 직접 볼 수 있습니다.
열 하나 = 변수 하나 = 벡터 하나 중심화한 열 aj는 Rn의 벡터입니다. 1장의 말로 하면 두 변수의 공분산은 이 두 벡터의 내적을 n−1로 나눈 값이고, 상관 계수는 두 벡터 사이 각의 코사인입니다(1장 코사인 유사도). 다음 절의 공분산 행렬은 이 내적들을 한 표에 모은 것입니다.
공분산 행렬: 모든 방향의 분산을 담은 표
45° 방향의 분산은 어떻게 구하나
압력 축으로 본 분산, 온도 축으로 본 분산은 열마다 계산하면 됩니다. 그런데 "압력과 온도를 반씩 섞은 방향"의 분산은? 방향은 무한히 많습니다. 방향마다 데이터 전체를 다시 훑어야 할까요?
C는 d×d 행렬. 대각 원소 Cjj는 변수 j의 분산, 비대각 원소 Cjk는 변수 j,k의 공분산이다. n−1로 나누는 이유(불편 추정)는 확률과 통계의 점추정 장을 보라.
이 표 하나가 문제의 답을 모두 갖고 있습니다. 단위 벡터 u 방향으로 점들을 사영하면 i번째 점의 그림자 좌표는 ti=u⋅(xi−μ), 묶어서 쓰면 t=Xcu입니다. 그 분산은
정리 15.1 (사영 분산) 단위 벡터 u에 대해 사영 좌표 ti=u⋅(xi−μ)의 표본 분산은
Var(t)=n−11∥Xcu∥2=n−11uTXcTXcu=uTCu
증명.Xc의 열 합이 0이므로 ∑iti=1TXcu=0, 즉 t의 평균은 0이다. 따라서 분산은 n−11∑ti2=n−11tTt이고 t=Xcu를 대입하면 된다. ∎
방향마다 데이터를 다시 훑을 필요가 없습니다. d×d 표 C를 한 번 만들어 두면, 어떤 방향의 분산도 uTCu라는 곱셈 몇 번으로 나옵니다. 예를 들어 u=(1,1)/2이면 uTCu=21(C11+2C12+C22)입니다. 두 변수가 양의 상관(C12>0)이면 대각선 방향의 분산이 두 축의 평균보다 크다는 것이 식에서 바로 보입니다.
정리 15.2 (공분산 행렬의 성질)C는 대칭이고 양의 준정부호(positive semidefinite)다. 즉 모든 u에 대해 uTCu≥0. 따라서 C의 고유값은 모두 0 이상의 실수이고, 서로 수직인 단위 고유벡터로 이루어진 정규직교 기저가 있다.
증명.CT=n−11(XcTXc)T=n−11XcTXc=C. 또 uTCu=n−11∥Xcu∥2≥0. 고유값과 고유벡터에 관한 결론은 대칭 행렬의 스펙트럼 정리(13장 대칭 행렬과 양의 정부호)에서 나온다. Cv=λv, ∥v∥=1이면 λ=vTCv≥0이다. ∎
예제 15.1 (작은 데이터의 공분산) 이미 중심화된 네 점 (3,1),(1,3),(−1,−3),(−3,−1)을 보자.
XcTXc의 (1,1) 칸은 첫 열의 제곱합 9+1+1+9=20, (2,2) 칸도 20, (1,2) 칸은 3⋅1+1⋅3+(−1)(−3)+(−3)(−1)=12.
n−1=3으로 나누면 C=[20/34420/3]≈[6.67446.67].
방향별 분산: x축 6.67, 대각선 (1,1)/2 방향 21(6.67+8+6.67)=10.67, 반대 대각선 (1,−1)/2 방향 21(6.67−8+6.67)=2.67.
점들은 대각선을 따라 길게 늘어서 있고, 그 방향의 분산이 축 방향보다 큽니다. 다음 절에서 이 두 대각선이 정확히 C의 고유벡터라는 것을 봅니다.
주성분: 분산이 가장 큰 방향
축 하나만 남긴다면 어느 방향인가
점구름을 직선 하나 위로 눌러 요약해야 한다면, 그림자들이 가장 넓게 퍼지는(정보를 가장 많이 남기는) 방향을 고르고 싶습니다. 그 방향은 uTCu를 최대로 만드는 단위 벡터입니다. 무한히 많은 방향 가운데 어떻게 찾을까요?
분모로 길이를 나눈 R(u)=uTuuTCu를 레일리 몫(Rayleigh quotient)이라 합니다. 방향만 보고 길이는 신경 쓰지 않는 "방향별 분산"입니다. 이것을 최대로 만드는 방향은 고유벡터라는 것이 이 장의 핵심 정리입니다.
정리 15.3 (레일리 몫의 최대·최소) 대칭 행렬 C의 고유값을 λ1≥λ2≥⋯≥λd, 대응하는 정규직교 고유벡터를 v1,…,vd라 하자. 모든 u=0에 대해
λd≤R(u)=uTuuTCu≤λ1
이고, 최댓값은 u=v1에서, 최솟값은 u=vd에서 얻는다. 더 나아가 v1,…,vj−1에 모두 수직인 u 가운데 R의 최댓값은 λj이고 vj에서 얻는다.
증명. 단위 벡터 u를 고유벡터 기저로 u=∑icivi, ∑ci2=1로 쓰면 Cu=∑iλicivi이고 정규직교성에 의해
uTCu=∑iλici2이다. 이것은 고유값들의 가중 평균(가중치 ci2, 합 1)이므로 λd와 λ1 사이에 있고, 가중치를 모두 λ1에 몰아 준 c1=1일 때 최대다. v1,…,vj−1에 수직이라는 조건은 c1=⋯=cj−1=0이라는 뜻이므로 같은 논리로 최댓값은 λj다. ∎
정의 15.3 (주성분) 공분산 행렬 C의 단위 고유벡터 v1,v2,…(고유값 내림차순)를 주성분(principal components) 방향 또는 적재 벡터(loading vector)라 하고, 표본 xi의 j번째 주성분 점수(score)를 tij=vj⋅(xi−μ)로 정한다. 점수 t⋅j의 분산은 λj이고, 서로 다른 주성분의 점수는 상관이 0이다.
마지막 문장도 한 줄로 확인됩니다. 점수 열 Xcvj와 Xcvk의 공분산은 n−11vjTXcTXcvk=vjTCvk=λkvj⋅vk이고, 이는 j=k이면 0입니다. 즉 주성분 좌표계로 옮기면 공분산 행렬이 대각 행렬Λ=diag(λ1,…,λd)이 됩니다. 서로 얽혀 있던 변수들을 얽히지 않은 새 변수들로 바꾼 것입니다.
SIMULATOR
축을 돌려 분산이 가장 큰 방향 찾기
보라 점 u를 끌어 축을 돌려 보세요
사영 분산 uᵀCu—
잔차 제곱 평균—
합 (총분산)—
PC1과의 각—
후보 축 uPC1, PC2 (점선)그림자(사영)잔차
—
해볼 것: ① u를 천천히 돌리며 사영 분산이 가장 커지는 곳을 찾으세요. 그곳이 초록 점선(PC1)과 겹치고, 그때 잔차 제곱 평균은 가장 작습니다. 두 값의 합은 어디서나 같습니다(다음 절의 피타고라스 항등식). ② 긴 축 ÷ 짧은 축을 1로 내리면 점구름이 둥글어져 어느 방향이나 분산이 비슷해지고, PC1은 표본마다 제멋대로 바뀝니다. ③ '평균을 빼지 않기'를 켜면 축이 원점을 지나야 하므로, 최적의 축이 점구름의 긴 방향이 아니라 평균 쪽을 향합니다. 모델: 2차원 정규 분포에서 시드 고정 난수로 뽑은 점 160개. 분산은 n − 1로 나눈 표본 분산입니다.
피어슨은 "점들까지의 수직 거리 제곱합이 가장 작은 직선"을 찾았고, 호텔링은 "그림자의 분산이 가장 큰 방향"을 찾았습니다. 하나는 오차를 줄이고 하나는 정보를 늘리는, 서로 다른 목표처럼 보입니다. 그런데 둘의 답이 같습니다. 시뮬레이터에서 본 "합은 언제나 같다"가 그 이유입니다.
그림 15-2. 중심화한 점 xi−μ를 직선에 사영하면 그림자 길이 ti와 수직 잔차 ri가 직각을 이룬다. 점마다 피타고라스 정리가 성립하고, 모든 점에서 더하면 "총분산 = 사영 분산 + 재구성 오차"가 된다. 왼쪽 항이 축과 무관하므로 오른쪽 두 항은 한쪽이 늘면 다른 쪽이 준다.
정리 15.4 (분산–오차 분해) 단위 벡터 u에 대해 재구성 x^i=μ+tiu의 평균 제곱 오차는
n−11i=1∑n∥xi−x^i∥2=trC−uTCu
따라서 재구성 오차를 최소로 하는 방향과 사영 분산을 최대로 하는 방향은 같고, 그것은 v1이다. 최소 오차는 λ2+⋯+λd이다.
증명.ri=(xi−μ)−tiu는 u에 수직이다(u⋅ri=ti−ti=0). 피타고라스 정리로 ∥xi−μ∥2=ti2+∥ri∥2. 모든 i에 대해 더하고 n−1로 나누면 왼쪽은 n−11∑i,j(xij−μj)2=∑jCjj=trC, 오른쪽 첫 항은 정리 15.1에 의해 uTCu다. 대각합은 고유값의 합이므로 최소 오차는 ∑jλj−λ1이다. ∎
같은 논리가 직선 대신 k차원 부분공간에도 그대로 적용됩니다. 정규직교 열 u1,…,uk로 이루어진 Uk에 사영하면 사영 분산은 tr(UkTCUk)이고, 이것은 Uk=[v1⋯vk]일 때 최대 λ1+⋯+λk입니다(정리 15.3을 차례로 적용하는 것과 같은 결론으로, 키 판 정리(Ky Fan)라 부릅니다). 남는 오차는 λk+1+⋯+λd입니다.
SVD로 보는 PCA
공분산 행렬을 거치지 않고 데이터 행렬에서 바로 주성분을 얻을 수도 있습니다. 중심화된 데이터 행렬의 특이값 분해(14장 특이값 분해) Xc=UΣVT를 쓰면 됩니다.
증명.XcTXc=VΣTUTUΣVT=V(ΣTΣ)VT이고 UTU=I를 썼다. V는 직교 행렬, ΣTΣ=diag(σj2)은 대각이므로 이것은 XcTXc의 고유분해다. 즉 V의 열이 고유벡터, σj2이 고유값이다. n−1로 나누면 C의 고유분해가 된다. 점수는 XcV=UΣVTV=UΣ. ∎
그림 15-3. 중심화한 데이터 행렬의 SVD는 PCA의 모든 결과를 한 번에 준다. V의 열이 주성분 방향, 특이값의 제곱을 n−1로 나눈 값이 주성분의 분산, UΣ가 점수다. 앞의 k개 성분만 남긴 UkΣkVkT는 에커트–영 정리에 의해 계수 k인 행렬 가운데 Xc에 가장 가깝고, 이것이 정리 15.4의 k차원 판이다.
실제 계산은 SVD로 수학적으로는 C의 고유분해와 Xc의 SVD가 같은 답을 주지만, 컴퓨터에서는 다릅니다. XcTXc를 만드는 순간 조건수가 제곱이 되어(κ(XcTXc)=κ(Xc)2) 작은 고유값의 유효 숫자가 사라집니다. 그래서 대부분의 수치 라이브러리는 PCA를 중심화한 데이터의 SVD로 계산합니다. 조건수와 반올림 오차는 16장 수치 선형대수에서 다룹니다.
설명 분산과 성분 수 k 고르기
센서 10개 가운데 진짜 독립적인 움직임은 몇 개인가
센서 10개가 기록되지만, 실제로 공정을 흔드는 원인은 챔버 압력의 흔들림, 전극 온도, RF 정합 상태처럼 몇 개뿐일 수 있습니다. 데이터만 보고 "숨은 원인의 수"를 짐작할 수 있을까요? 그리고 점수를 몇 개 남겨야 충분할까요?
정의 15.4 (설명 분산 비율)j번째 주성분의 설명 분산 비율(explained variance ratio)은 λj/∑iλi=λj/trC이고, 앞의 k개의 누적 비율은 ∑j≤kλj/trC이다. 고유값을 크기순으로 막대로 그린 것을 스크리 그림(scree plot)이라 한다.
숨은 원인 r개가 센서들을 선형으로 섞고 그 위에 서로 독립인 측정 잡음이 얹힌다고 해 봅시다. 원인이 만드는 공분산은 계수 r인 행렬이라 고유값 r개만 크고, 잡음은 모든 방향에 고르게 작은 분산을 보탭니다. 그래서 스크리 그림은 큰 막대 r개 뒤에 낮고 평평한 막대들이 이어지는 모양이 되고, 꺾이는 곳(팔꿈치)이 r을 알려 줍니다. 실무에서 자주 쓰는 기준은 다음과 같습니다.
기준
방법
주의할 점
누적 비율
누적 설명 분산이 90%(또는 95%)를 넘는 최소 k
잡음이 크면 잡음까지 담으려고 k가 커진다
팔꿈치
스크리 그림이 평평해지기 직전까지
꺾임이 뚜렷하지 않으면 사람마다 다르게 읽는다
카이저 기준
상관 행렬 PCA에서 λj>1인 성분만(변수 하나보다 많이 설명하는 것)
표준화한 데이터에서만 뜻이 있다
교차 검증
남겨 둔 데이터의 재구성 오차가 가장 작은 k
계산은 많지만 가장 근거가 분명하다
SIMULATOR
센서 10개의 스크리 그림
λ₁ … λ₄—
기준을 넘는 최소 k—
팔꿈치(최대 비율 낙차)—
해볼 것: ① 잡음 σ를 작게 하면 막대 r개 뒤가 거의 0으로 떨어져 꺾임이 뚜렷합니다. ② 잡음을 키우면 평평한 바닥이 올라와 누적 90% 기준의 k가 r보다 커집니다. 잡음까지 "설명"하려 들기 때문입니다. ③ 표본 수 n을 20으로 줄이면 잡음 고유값들이 고르지 않고 비스듬하게 퍼집니다. 표본이 적으면 공분산 추정 자체가 흔들립니다. 모델: 센서값 = (숨은 원인 r개, 표준 편차 3, 2, 1.4, 1)의 고정된 선형 결합 + 센서마다 독립인 정규 잡음 σ. 적재 행렬은 시드 고정 난수입니다.
차원 축소: 센서 10개를 점수 2개로
10차원 점구름을 어떻게 눈으로 보나
장비가 세 가지 운전 상태(정상, 챔버 세정 직후, 부품 교체 직전)를 오간다고 합시다. 센서 두 개를 골라 산점도를 그리면 세 상태가 겹쳐 보일 수 있습니다. 상태의 차이가 10개 센서에 조금씩 나뉘어 실려 있기 때문입니다. 10차원 점구름에서 상태가 가장 잘 갈라져 보이는 평면을 찾을 수 있을까요?
앞의 k개 주성분 점수만 남기는 것이 PCA 차원 축소입니다. 표본 하나를 d개의 숫자 대신 k개의 숫자 (t1,…,tk)로 기록하고, 필요하면 x^=μ+∑j≤ktjvj로 되살립니다. 저장할 것은 평균 μ와 적재 Vk(한 번만), 그리고 표본마다 점수 k개입니다. 정리 15.4에 의해 이것이 k차원 선형 요약 가운데 평균 제곱 오차가 가장 작은 방법입니다.
SIMULATOR
원래 센서 두 개 vs 주성분 점수 두 개
보기
PC1+PC2 설명 분산—
저장할 숫자 (300장)—
재구성 상대 오차—
정상세정 직후교체 직전
해볼 것: ① '센서 1 vs 센서 2'와 'PC1 vs PC2'를 번갈아 보세요. 같은 300개 점인데 주성분 평면에서는 세 상태가 훨씬 잘 갈라집니다. ② 바이플롯을 켜면 센서마다 화살표가 나타납니다. 같은 쪽을 가리키는 센서들은 함께 움직이고, 화살표가 긴 센서가 그 평면을 주로 만듭니다. ③ 상태 차이를 0으로 하면 세 무리가 한 덩어리가 됩니다. PCA는 라벨(색)을 전혀 보지 않고 분산만 봅니다. 상태 차이가 분산의 큰 몫을 차지할 때만 주성분 평면에서 갈라집니다. 모델: 10개 센서 = 숨은 원인 2개의 고정 선형 결합 + 상태별 평균 이동 + 독립 잡음. 저장 숫자는 점수 300×2 + 적재 10×2 + 평균 10.
고유 패턴: 이미지 한 장도 벡터다
12×12 흑백 이미지는 숫자 144개, 즉 R144의 벡터입니다. 이미지 수십 장에 PCA를 하면 주성분 vj도 144개의 숫자라서 그 자체를 이미지로 그려 볼 수 있습니다. 1991년 터크와 펜틀랜드(Turk & Pentland)는 얼굴 사진에 이 방법을 써서 주성분 이미지를 "고유얼굴"(eigenfaces)이라 불렀습니다. 아래 시뮬레이터는 얼굴 대신, 몇 가지 기본 무늬를 무작위로 섞고 잡음을 더한 합성 이미지 60장을 씁니다. PCA는 무늬가 무엇인지 듣지 않고도 데이터만으로 그 무늬들이 펼치는 공간을 찾아냅니다.
SIMULATOR
고유 패턴으로 이미지 다시 쌓기
누적 설명 분산—
재구성 상대 오차—
저장 숫자 / 이미지—
해볼 것: ① k = 0이면 평균 이미지만 남습니다. k를 하나씩 올리면 원본에 빠르게 가까워지다가, 기본 무늬 수(4개)를 넘어서면 오차가 거의 줄지 않습니다. 그 뒤의 성분은 잡음입니다. ② 잡음을 0으로 하면 고유 패턴 5번부터는 거의 0이 됩니다(무늬가 펼치는 공간이 4차원). ③ 고유 패턴은 원래 무늬와 똑같지 않고 그 무늬들의 직교하는 조합입니다. PCA가 찾는 것은 '부분공간'이지 개별 원인이 아닙니다. 모델: 12×12 합성 이미지 60장 = 기본 무늬 4개(가로 띠, 세로 띠, 원, 대각 경사)의 무작위 결합 + 픽셀마다 독립 잡음. 색: 고유 패턴은 0을 흰색으로 한 파랑–빨강, 이미지는 흑백.
심화: 호텔링 T²와 잔차 Q 공정 모니터링에서는 정상 데이터로 μ, Vk, λ1,…,λk를 만든 뒤, 새 웨이퍼 x마다 두 숫자를 계산합니다.
T2=j=1∑kλjtj2,Q=x−μ−j=1∑ktjvj2
T2는 주성분 평면 안에서 평소보다 얼마나 멀리 갔는지(각 성분을 자기 분산으로 나눔), Q(SPE)는 평면 밖으로, 즉 평소에 없던 방향으로 얼마나 벗어났는지를 잰다.
센서 40개의 관리도 대신 T2와 Q 관리도 두 개만 보면 되고, 경보가 울리면 어느 센서가 그 값에 크게 기여했는지(기여도 그림) 거꾸로 따라갑니다. 관리 한계를 정하는 법은 확률과 통계의 통계적 공정 관리 장을 참고하세요.
단위가 PCA를 바꾼다: 표준화
압력을 kPa 대신 Pa로 적었더니 주성분이 바뀌었다
온도(°C)와 압력을 함께 분석합니다. 압력을 kPa로 적으면 두 변수의 분산이 비슷하지만, Pa로 적으면 압력의 분산이 10002=106배가 됩니다. 물리는 그대로인데 PCA의 PC1은 압력 축에 거의 붙어 버립니다. 무엇이 잘못일까요?
잘못된 것은 없습니다. PCA는 숫자의 분산을 최대화할 뿐이고, 숫자의 크기는 단위에 따라 달라집니다. 변수 j를 s배로 다시 쓰면 C의 j행과 j열이 s배(대각은 s2배)가 되어 고유벡터가 바뀝니다. 변수들의 단위가 서로 다르거나 비교할 근거가 없으면, 각 열을 표준 편차로 나눈 뒤 PCA를 합니다.
정의 15.5 (표준화와 상관 행렬 PCA)D=diag(C11,…,Cdd)라 할 때 표준화된 데이터 Z=XcD−1/2(각 열을 그 표준 편차로 나눔)의 공분산은
R=D−1/2CD−1/2,Rjk=CjjCkkCjk
로 상관 행렬(correlation matrix)이다. R의 고유분해를 상관 PCA라 하며, R의 대각은 모두 1이고 trR=d다. 상관 PCA는 각 변수의 단위(척도) 변경에 영향을 받지 않는다.
SIMULATOR
압력의 단위를 바꾸면 PC1이 어디로 가나
축은 각 변수의 표준 편차 단위로 그렸습니다
압력 단위
C (온도, 압력)—
PC1 적재 (온도, 압력)—
PC1 설명 비율—
—
해볼 것: ① 단위를 Pa로 두고 표준화를 끄면 PC1의 적재가 (0.00, 1.00)에 가깝습니다. "압력만 보는" 축이고, 설명 비율 100%는 숫자 크기 때문에 생긴 착시입니다. ② 표준화를 켜면 단위를 kPa·MPa·Pa로 바꿔도 PC1이 꼼짝하지 않습니다. ③ 표준화한 상태에서 ρ를 0에 가깝게 하면 두 고유값이 모두 1 근처가 되어 PC1이 뚜렷한 방향을 잃습니다. 상관이 없으면 요약할 '공통 움직임'도 없습니다. 모델: 온도 표준 편차 2 °C, 압력 표준 편차 1.5 kPa인 2차원 정규 분포, 표본 200개.
예제 15.3 (같은 데이터, 두 단위) 온도 표준 편차 2 °C, 압력 표준 편차 1.5 kPa, 상관 0.6이면 kPa 단위의 공분산은 C=[41.81.82.25]이다. 고유값은 λ=26.25±1.752+4⋅1.82=26.25±4.00, 즉 5.13과 1.12로 PC1이 82%를 설명한다. Pa 단위로 바꾸면 C=[4180018002250000]이 되어 PC1은 거의 (0.0008,1.0000), 설명 비율은 99.99% 이상이다. 상관 행렬 R=[10.60.61]은 두 단위에서 같고, 고유값 1.6과 0.4, PC1 = (1,1)/2로 80%를 설명한다.
언제 표준화하나 변수들의 단위가 다르면 거의 언제나 표준화합니다. 반대로 모든 변수가 같은 단위이고 그 크기 자체에 뜻이 있으면(예: 같은 이미지의 픽셀 밝기, 같은 센서를 여러 위치에서 잰 값) 표준화하지 않는 편이 낫습니다. 표준화하면 거의 변하지 않는 픽셀의 잡음까지 큰 변수와 똑같은 무게를 얻기 때문입니다.
화이트닝: 공분산을 단위 행렬로
상관된 잡음을 서로 독립처럼 보이게 만들 수 있나
여러 센서의 잡음이 서로 상관되어 있으면, 거리를 잴 때 "흔한 방향으로의 차이"와 "드문 방향으로의 차이"를 똑같이 취급하는 것이 잘못입니다. 데이터를 변환해서 모든 방향의 분산을 1로, 공분산을 0으로 만들면 그다음부터는 평범한 유클리드 거리가 공정해집니다.
정리 15.6 (화이트닝)C=VΛVT이고 모든 λj>0이면
z=Λ−1/2VT(x−μ)⟹Cov(z)=I
PCA 회전 VT 뒤에 각 성분을 λj로 나누는 것. 한 번 더 V로 되돌려 돌린 WZCA=VΛ−1/2VT=C−1/2은 원래 축과 가장 가까운 화이트닝(ZCA)이다.
화이트닝한 공간에서의 거리 ∥z∥2=(x−μ)TC−1(x−μ)를 마할라노비스 거리(Mahalanobis distance)의 제곱이라 합니다. 앞 절의 T2는 k개 성분만 남긴 마할라노비스 거리입니다. 점구름의 타원을 원으로 펴 주는 이 변환은 신호 처리의 잡음 백색화, 머신러닝의 입력 전처리, 독립 성분 분석(ICA)의 첫 단계로 쓰입니다.
그림 15-4. 화이트닝은 두 단계다. 주성분 방향이 좌표축과 겹치도록 돌리고(VT), 각 축을 그 표준 편차 λj로 나눈다(Λ−1/2). 기울어진 타원이 단위 원이 된다. 원은 어떻게 돌려도 원이므로 화이트닝 변환은 회전 하나만큼 자유가 있고, 원래 축에 가장 가까운 선택이 ZCA다.
SIMULATOR
타원을 원으로: 화이트닝 한 단계씩
단계
지금 점들의 공분산—
노란 두 점의 유클리드 거리—
—
해볼 것: ① 단계를 차례로 눌러 공분산 표가 어떻게 바뀌는지 보세요. 회전 뒤에는 비대각이 0, 크기 맞춤 뒤에는 단위 행렬이 됩니다. ② 노란 점 두 개는 원래 공간에서 평균으로부터 비슷한 거리에 있지만, 하나는 흔한 방향, 하나는 드문 방향에 있습니다. 화이트닝 뒤의 거리(마할라노비스 거리)는 드문 쪽이 훨씬 멉니다. ③ ρ를 ±0.95로 하면 짧은 축이 아주 짧아 Λ^−½가 그 방향을 크게 늘립니다. 작은 고유값의 잡음도 함께 커지므로, 실무에서는 λ에 작은 값 ε을 더해 나눕니다. 모델: 2차원 정규 분포 표본 150개, 평균 (2, 1).
PCA가 놓치는 것
분산이 크면 중요한가
PCA는 단 하나의 기준, 분산으로 방향을 고릅니다. 그런데 데이터의 중요한 구조가 분산이 작은 방향에 있거나, 곧은 축으로 표현할 수 없는 곡선이거나, 점 하나의 이상값이 분산을 독차지한다면 어떻게 될까요?
세 가지 대표적인 함정이 있습니다.
비선형 구조. 점들이 곡선(반달, 나선) 위에 있으면 본질적으로 1차원이어도 직선 하나로는 담기지 않습니다. PCA는 그 곡선을 감싸는 타원의 축을 줄 뿐이고, 곡선을 따라가는 좌표를 주지 않습니다. 커널 PCA, 오토인코더, 다양체 학습이 이 문제를 다룹니다.
이상값. 분산은 거리의 제곱을 평균하므로 멀리 떨어진 점 하나가 PC1을 자기 쪽으로 끌어당깁니다. 이상값을 먼저 찾아 빼거나, 제곱 대신 덜 민감한 기준을 쓰는 강건 PCA를 씁니다.
분산 ≠ 구별력. 두 무리를 가르는 방향이 무리 안쪽의 흩어짐보다 분산이 작으면 PC1은 무리를 가르지 않습니다. 라벨을 알면 무리 사이 차이를 무리 안 흩어짐으로 나눈 비를 최대화하는 선형 판별 분석(LDA)이 맞는 도구입니다.
SIMULATOR
PCA가 속는 세 가지 데이터
빨간 이상값을 끌어 보세요
데이터
PC1 설명 비율—
PC1 방향—
비교—
PC1 (전체 데이터)비교 축
—
해볼 것: ① '이상값'에서 빨간 점을 구름에서 멀리 끌고 가면 PC1(보라)이 그 점 쪽으로 돌아갑니다. 초록은 이상값을 뺀 PC1입니다. 점 하나가 150개를 이깁니다. ② '곡선'에서 재구성 점을 켜면 반달이 직선 하나로 납작해지면서 양 끝과 가운데가 같은 자리로 겹칩니다. ③ '두 무리'에서 PC1은 무리를 가르지 않는 방향입니다. 초록은 두 무리의 평균 차를 무리 안 공분산으로 보정한 판별 방향(LDA)입니다. 모델: 시드 고정 2차원 합성 데이터.
이 도구가 쓰이는 곳
"공분산의 고유벡터로 좌표를 바꾸고, 분산이 작은 축을 버린다"는 생각은 측정이 많은 거의 모든 분야에 있습니다.