PCA(주성분분석, Principle Compoent Analysis)는 특성 공간(feature space)상에 존재하는 데이터의 분포를 활용하여 분포의 특성을 가장 뚜렷하게 표현하는 주축 벡터(principal vector 혹은 principal axis)를 찾고, 이 주축 벡터를 활용하여 데이터를 분석하는 방법을 뜻합니다. 문장이 길어서 PCA에 대해서 처음 접하는 분이라면 이해가 어려울 수 도 있는데, 여기서 가장 중요한 개념은 "데이터의 분포를 활용하여 분포의 특성을 가장 뚜렷하게 표현하는 주축 벡터"이고, 이 개념을 이해한다면 PCA를 이해했다고 볼 수 있습니다.
주축 벡터에 대한 수학적 정의를 하기 앞서, 간단한 예를 들어서 주축 벡터의 개념을 설명해 보도록 하겠습니다.

다양한 신체의 3D 이미지 입니다. 위 사람들의 신체를 기술하는 단 하나 특성(단어)를 택한다면 뭐가 될까요? 제가 생각할 때는 "덩치가 크다 혹은 작다"가 적당할 것 같습니다. 국어 사전에서 찾은 "덩치"의 뜻은 "몸의 부피"인데, 몸의 부피가 큰 사람과 몸의 부피가 작은 사람으로 줄을 세운다면 위 사람들의 신체의 특성을 어느 정도는 표현할 수 있을 것 같습니다. 키를 통해서 줄을 세울 수 도 있고, 몸무게를 통해서도 줄을 세울 수 있습니다.
(앞에서 잠깐 언급 했던 것과 같이) 저 사람들의 키와 몸무게를 측정하여 2차원 평면에 표현했다고 하겠습니다. 아마도 분포는 아래와 유사할 것입니다.

키(height)와 몸무게(weight)의 분포를 위와 같이 가정하였습니다. 그리고 데이터의 갯수(사람의 숫자)는 100개 입니다. 키와 몸무게는 각각 분포의 평균값이 0이 되도록 쉬트트 시켰고, 각각의 유닛으로 스케일링 시켰다고 생각하면 됩니다.
사람의 몸무게는 정확하지는 않지만 대체로 키에 비례를 합니다. 따라서 키가 큰 사람이 몸무게가 많이 나가고, 반대로 몸무게가 작은 사람이 키가 작을 가능성이 높습니다. 물론 키가 큰데 몸무게가 적게 나가는 사람과 키가 작은데 몸무게가 많이 나가는 사람도 있지만, 상대적으로 그 빈도는 낮을 것 입니다.
(키, 몸무게)의 분포가 위와 같을 때, 어떤 값을 기준으로 사람들을 분류 한다면 가장 잘 분류 할 수 있을까요? 여기서 사람들 잘 분류한다는 것은, 우리가 정한 "어떤 값"의 범위를 말 했을 때, 그 범위에 속한 사람의 수를 더 적게 만든다는 것을 뜻 합니다. 예를들어 키로 분류해 보면 어떨까요? 위 분포에서 가장 작은 키는 약 -2.5, 가장 큰 키는 약 2.5 입니다. 최대값과 최소값의 차이는 2.5 - (-2.5) = 5.0 입니다. 즉 5라는 범위 안에 100개의 데이터가 있는 것 입니다. 몸무게로 분류를 한다면 몸무게이 최소값은 -2.1 최고값은 2.2로 최대값과 최소값의 차이는 2.2 - (-2.1) = 4.3이 됩니다. 평균적으로 생각한다면 키 1 단위당
단순히 키나 몸무게를 이용하여 분류를 하지 않고 키와 몸무게를 섞어서 분류하면 어떨까요? 예를 들어서
와 깉이 "키무게" 라는 것을 정의하고 이 키무게를 통해서 분류하는 것 입니다. 여기서
위에서는 키와 몸무게를
와 같이 정의하는 것 입니다. 위 식에 따라서 위 분포의 키무게-마이너스의 최대, 최소값을 구하면 그 값은 각각 0.49, -0.54로 최대값과 최소값의 차이는 1.03이 됩니다. 따라서 키무게-마이너스 1단위당

위에서 사용한 기준인 키, 몸무게, 키무게-플러스, 키무게-마이너스의 범위를 그래프로 그리면 위와 같습니다. 이 분포에서 키의 범위는 그래프의 X축 방향의 최대-최소값의 차이(거리), 몸무게의 범위는 Y축 방향의 최대-최소값의 차이, 키무게-플러스는 X=Y 방향의 최대-최소값의 차이, 키무게-마이너스는 X=-Y 방향의 최대-최소값의 차이가 됩니다.
위에서 키와 몸무게 사이에 + 부호를 사용한 키무게-플러스의 범위(최대값과 최소값의 차이)가 - 부호를 사용한 키무게-마이너스의 범위 보다 큰 이유는 (키, 몸무게) 부호가 서로 양의 상관 관계를 갖고 있기 때문입니다. 그렇기 때문에, 키가 큰 사람은 몸무게가 많이 나가서 키무게-플러스의 최대값은 컸고, 역시나 키가 작은 사람은 몸무게가 작게 나가기 때문에 키무게-플러스의 최소값이 작았습니다. 그래서 키무게-플러스의 범위가 커진 것 입니다. 반대로 키무게-마이너스의 정의에서는 키와 몸무게의 차이를 구하는 것이기 때문에 경향성이 상쇠되어 범위가 작아진 것 입니다. 키와 몸무게를 "섞어"서 새로운 기준을 만들 때, 부호에 따라서 새롭게 정의한 기준의 범위가 크게 달라 질 수 있습니다. 이렇게 정의한 키무게-플러스를 일상의 용어로 바꾸면 맨 처음에 언급했던 "덩치"와 개념적으로 유사하다고 볼 수 있을 것 같습니다. 보통은 키가 크고 몸무게도 큰 사람이 몸의 부피가 클 테니까요.
위에서 간단히 설명한 개념이 바로 PCA와 주축 벡터의 개념입니다. 대응 관계를 설명하면
키, 몸무게 : 데이터의 특성
키무게-플러스 : 첫 번째 주축 벡터
키무게-마이너스 : 두 번째 주축 벡터
특성을 가장 뚜렷하게 설명 : 분포의 범위를 가장 크게 함
가 됩니다. 위 대응을 이해했다면 PCA에 대한 정성적인 이해를 한 것 입니다.
이제부터는 정량적인 설명을 하도록 하겠습니다.
위에서 사용한 범위, 즉 최대값과 최소값의 차이, 는 직관적이기는 하지만 분포를 설명할 수 있는 좋은 값은 아닙니다.

예시는 위와 같습니다. 빨간색 X 표시를 한 데이터가 하나 추가 되었다고 생각하겠습니다. 이 데이터 때문에 몸무게의 범위가 기존 보다 커지게 되고, 지금의 예시와 같이 극단적인 경우에는 몸무게의 범위가 키의 범위 보다 커질 수 있습니다. 대체적인 분포, 하늘색으로 표시한 100개이 데이터,에서는 키의 범위가 크지만, 매우 예외적인 데이터, 붉은색 X표시한 데이터,가 추가 되었을 뿐인데 범위의 대소관계를 완전히 바꿔놓은 것 입니다. 이 처럼 단순히 "범위"는 단 하나의 데이터에 의해서도 크게 바뀔 수 있는 값이기 때문에, 좋은 값은 아닙니다.
따라서 분포에 속한 모든 데이터를 이용하면서, 데이터가 특정한 방향으로 퍼져있는 경향을 기술하는 통계값을 사용하면 좋은데, 가장 직관적이면서도 익숙한 값은 바로 "분산" 입니다.
와 같이 정의 됩니다. 중학교(?) 에서 배우는 것이기 때문에 익숙한 값이라 생각됩니다. 여기서
와 같이 간단한 식이 됩니다.
"범위"의 정량적인 통계값을 "분산"으로 사용하기로 했기 때문에, "분포의 범위를 가장 크게함"은 "분포의 분산을 가장 크게 함"으로 바뀌게 됩니다. 그리고 위에서 했던 것과 같이 단순히 키 혹은 몸무게를 특성값으로 사용하는 것이 아니라 이를 적절하게 섞은값을 사용하여 새로운 특성을 정의하고, 이 특성에 대한 분산을 계산할 수 있습니다. 위에서 키와 몸무게라고 표현한 것을 일반화하여 2개의 특성값을 갖는 데이터를
여기서

그래프로 표현하면 위와 같습니다.
따라서 데이터 분포 집합
와 같고, 이 값의 분산
위 분산
위 문단을 수학적 정의로 쓰면,
가 됩니다.
이제 문제는
우선 매우 구체적인 방식으로
와 같이 우리가 최소화 하려고 하는 함수

포스팅의 처음에 제시한 분포에 대해서,

주축 벡터의 방향은 붉은색 직선의 방향과 같은데, 데이터가 키가 크면 몸무게가 커지는 상관관계를 갖고 있기 때문에 주축 벡터의 방향은
임의의 경우에 대해서
와 같이 쓸 수 있습니다.
가 되고,
인 행렬
와 같이
이 되고, 마지막 항을 보기 좋게 배치하면,
가 됩니다.
이 마지막 식은 행렬
두 번째 주축 벡터의 첫 번째 주축 벡터
입니다. 구속 조건이 2개 인데요, 위에서
데이터와 함께 첫 번째, 두 번째 고유 벡터의 방향을 함께 그리면 아래와 같습니다.

빨간색이 첫 번째 고유 벡터의 방향, 녹색이 두 번째 고유 벡터의 방향 입니다. 이 예제와 같이 데이터의 특성 공간이 2차원인 경우에는 첫 번째 고유 벡터를 구하면, 바로 두 번째 고유 벡터를 구할 수 있는데, 첫 번째 고유 벡터와 수직인 공간의 차원은 1차원이기 때문입니다.
고유 벡터의 정확한 값은
이 됩니다. 포스팅의 초반부에 사용했던 (키, 몸무게)로 표현한다면,
첫 번째 주축 벡터의 의미 = 덩치가 크고 작음을 포현
두 번째 주축 벡터의 의미 = 홀쭉하고, 뚱뚱하고를 표현
이라고 볼 수 있습니다. 사람의 신체를 표현할 때 (키, 몸무게)를 말 할 수도 있고, (덩치가 크고 작음, 홀쭉 혹은 뚱뚱)으로 표현할 수 도 있습니다. 전자는 데이터의 특성을 그대로 표현한 방식, 후자는 PCA의 개념을 이용하여 표현한 방식이 됩니다.
위 과정을 요약한 최종 결과는
데이터 집합
입니다.
포스팅의 길이가 너무 길어질 것 같아서, PCA에 대한 이후의 이야기는 다음 포스팅에서 하도록 하겠습니다. 다음 포스팅에서는 이렇게 구한 주축 벡터를 이용한 PCA 분석의 활용과 특성에 대해 알아보도록 하겠습니다.