seegongsik
내 단어장
공업수학

주성분은 가장 퍼진 방향이다

데이터 구름에서 가장 많이 퍼진 방향을 찾고, 주성분은 공분산 행렬의 고유벡터이며 그 방향만 남기면 차원이 준다

책상에 좁쌀 한 줌을 흩뿌렸다고 하자. 알갱이들이 둥글게 퍼진 게 아니라 한쪽으로 길쭉하게 누워 있다면, 누구나 한눈에 이 방향으로 가장 넓게 퍼졌다고 짚을 수 있다. 주성분 분석(PCA)이 묻는 게 딱 이것이에요. 데이터 구름에서 가장 퍼진 방향은 어디인가. 그 방향이 제1주성분(PC1)이고, 거기에 직각인 두 번째로 퍼진 방향이 PC2다. 놀랍게도 이 두 방향은 데이터 공분산행렬의 고유벡터이고, 각 방향의 퍼진 정도인 분산이 바로 고유값이에요. 8강에서 본 그 고유 개념이 이번에는 데이터의 퍼짐에 그대로 쓰인다.

점구름을 끌어서 빙 돌리면 손잡이를 잡고 회전시키는 대로 구름 전체가 함께 기운다. 어느 각도로 돌리든, 점들을 감싸는 골드 타원(공분산을 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이 된다. 그때는 한 축만 남겨도 정보를 거의 다 지켜요. 이 설명된 분산 비율이 데이터를 몇 차원으로 줄여도 괜찮은지를 알려주는 잣대다.

빠른 적용PCA는 데이터 구름에서 가장 퍼진 방향을 찾는 일이다. 점들의 공분산행렬을 만들고 그 고유벡터를 구하면 PC1은 분산이 가장 큰 방향, PC2는 직각인 그다음 방향이고, 두 고유값이 각 방향의 분산이에요. 8강의 고유 개념 그대로지만 이번에는 변환행렬이 아니라 데이터의 공분산행렬이고, 정답표 없이 구조를 찾는 무지도 학습이라는 점이 다르다. PC1에 투영하면 가장 적은 숫자로 가장 많은 정보를 지키니 차원 축소가 되고, 설명된 분산 비율이 몇 차원이면 충분한지 알려준다. 얼굴 인식의 고유얼굴, 유전자 데이터 요약, 잡음 제거가 전부 이 한 아이디어 위에 서 있어요.
공업수학
이 페이지가 도움 됐다면 후원하기