주성분은 가장 퍼진 방향이다
책상에 좁쌀 한 줌을 흩뿌렸다고 하자. 알갱이들이 둥글게 퍼지지 않고 한쪽으로 길쭉하게 누워 있다면, 누구나 한눈에 이 방향으로 가장 넓게 퍼졌다고 짚을 수 있다. 주성분 분석(PCA)이 묻는 것이 딱 이것이에요. 데이터 구름에서 가장 퍼진 방향은 어디인가. 그 방향이 제1주성분(PC1)이고, 거기에 직각인 두 번째로 퍼진 방향이 PC2다. 놀랍게도 이 두 방향은 데이터 공분산행렬의 고유벡터이고, 각 방향의 퍼진 정도인 분산이 바로 고유값이에요. 「고유벡터는 방향이 안 변하는 벡터다」에서 본 그 고유 개념이 이번에는 데이터의 퍼짐에 그대로 쓰인다.
손잡이를 끌어 점구름을 빙 돌리면 구름 전체가 손잡이를 따라 함께 기운다. 어느 각도로 돌리든, 점들을 감싸는 금색 타원(공분산을 1-시그마로 그린 것)이 구름을 따라 같이 돌아요. 그 타원 안에서 가장 긴 축(초록)이 PC1, 그에 직각인 짧은 축(주황)이 PC2다. 두 축의 길이는 각 방향 분산의 제곱근, 곧 표준편차이고, 아래에는 두 방향의 분산이 적힌다. 구름을 돌려도 PC1은 언제나 가장 길게 퍼진 쪽을 정확히 가리켜요. 이 축들이 바로 점들로 계산한 공분산행렬의 고유벡터다.
이번에는 슬라이더로 구름의 각도만 바꾼다. 축 두 개, PC1(초록)과 PC2(주황)가 늘 따라붙어요. PC1은 분산이 가장 큰 방향이고 PC2는 거기에 정확히 직각인 두 번째 방향이다. 슬라이더를 어디에 두든 두 축은 언제나 90도를 유지하는데, 대칭인 공분산행렬의 고유벡터는 언제나 서로 직교하기 때문이다. 그래서 주성분들은 겹치지 않는 방향들로 데이터를 깔끔하게 나눠 줘요. 한 축의 정보가 다른 축으로 새지 않는다는 뜻이다.
왜 PC1이 특별한지 직접 잴 수 있다. 슬라이더로 한 방향의 직선을 돌리면 모든 점을 그 직선 위로 수직 투영해 발자국을 찍는다. 그 발자국들이 직선 위에서 얼마나 퍼졌는지가 그 방향의 분산이고, 아래에 그 값이 막대와 숫자로 적혀요. 직선을 이리저리 돌리면 분산은 PC1과 나란할 때 최댓값으로 솟고, PC2와 나란할 때 최솟값으로 가라앉는다. 최댓값 근처에 오면 직선과 발자국, 막대가 초록으로 바뀐다. 그래서 PC1은 분산을 최대로 만드는 방향이라고도 정의한다. 가장 퍼진 방향이 곧 정보가 가장 많이 살아 있는 방향이에요.
이제 진짜 쓸모인 차원 축소로 간다. 토글로 PC1 또는 PC2 가운데 한 축만 남기면 점들이 그 축 위로 납작하게 눌리고, 버려진 직각 방향은 복원 오차인 빨간 점선 꼬리로 표시돼요. 읽기 값은 버린 축의 분산, 곧 잃어버린 정보의 양이다. PC1만 남기면 꼬리가 가장 짧은데, 가장 덜 퍼진 방향을 버렸으니 잃은 것이 가장 적기 때문이다. 2D를 1D로 줄이면서도 손실을 가장 적게 하는 것, 그것이 PCA로 데이터를 압축하는 방식이에요.
마지막으로 몇 차원이 정말 필요한지 묻는 도구다. 슬라이더로 구름을 둥근 모양에서 아주 길쭉한 모양까지 늘이면, 두 막대에 고유값의 비율이 나타나요. 위는 λ1/(λ1+λ2), 아래는 λ2/(λ1+λ2)다. 구름이 둥글면 두 막대가 거의 50대 50이라 한 축만 남기면 절반을 잃는다. 길쭉해질수록 PC1 막대가 100퍼센트에 다가가고 PC2는 거의 0이 된다. 그때는 한 축만 남겨도 정보를 거의 다 지켜요. 이 설명된 분산 비율이 데이터를 몇 차원으로 줄여도 괜찮은지를 가늠하는 잣대다.