차원 (Dimension)
차원이란 물리적 대상 혹은 수학적, 개념적 구조의 특정 측면을 측정한 것이다. 예를 들어서 높이와 너비로 2차원적 특징만을 특정지어 정보를 얻을 수도 있고, 깊이까지 추가하여 3차원적 특징을 특정지어 정보를 추출할 수도 있다.
차원(dimension)과 차원의 수(dimensionality)는 다르다. 데이터로 생각하면 차원은 변수(varialble), 특징(feature), 속성(attribute), 열(column), 필드(field) 등이고, 차원의 수는 이것들의 수이다. 예를 들어 단백질 구조 예측에서 단백질 서열의 각 아미노산이 하나의 차원으로 간주될 수 있으며, 차원의 수는 전체 아미노산의 수가 된다.
행렬 표현에서 차원은 랭크와 같다. 즉 행렬 $ \mathbf{X} $ 의 모든 열이 선형 독립일 때 다음이 성립한다.
$$ \text{number of dimension} = \operatorname{rank} (\mathbf{X}) $$
차원 축소 (Dimensionality Reduction)
차원 축소는 말 그대로 데이터의 차원을 줄이는 과정이다. 고차원(high-dimensional) 데이터에서는 다양한 문제가 발생할 수 있기에 차원 축소가 필요하다. 데이터의 차원의 수가 증가하면 그에 따라 공간의 부피(volume of space)가 기하급수적으로(exponentially) 증가하고, 그로 인해 데이터는 점점 희소(sparse)해진다. 이것을 차원의 저주(curse of dimensionality)라 한다. 이러한 차원의 저주는 모델을 학습할 때 과적합(overfitting)의 위험을 높이며, 계산 비용(computational cost)을 증가시키고, 거리 기반 알고리즘(distance-based algorithm)의 신뢰성을 떨어뜨린다. 더욱이 차원이 크다면 시각화는 물론이고 해석 역시 어려워진다. 즉 다르게 말하면 차원 축소는 노이즈를 제거(noise reduction)하고, 시각화 가능(data visualization)하며, 저장 및 계산 비용을 감소시킨다.
단 차원을 축소한다면 최대한 많은 정보를 유지해야 한다. 3차원 객체를 2차원으로 표현한다면 가능한 해당 객체의 특징이 잘 드러나는 부분을 2차원으로 만들어야 할 것이다. 예를 들어서 럭비공을 사진으로 표현한다면 럭비공의 특징인 길쭉한 몸통이 잘 드러나도록 사진을 찍어야지 위에서 찍어 그 특징이 덜 드러나도록 한다면 축구공이나 야구공같은 다른 공과의 차이가 작아진다.
즉, 핵심은 샘플 수에 대해 최적의 차원 수(optimal number of dimensions)를 찾고, 이에 맞게 차원을 축소하는 것이다. 예를 들어, 다음과 같은 상황을 생각해보자.
1차원에서는 개와 고양이를 구분할 수 없다. 두 클래스는 거의 겹쳐 보인다.
차원을 2차원으로 늘리자, 두 클래스가 어느 정도 분리되기 시작한다.
3차원까지 확장하면, 개와 고양이가 명확히 구분되는 모습을 볼 수 있다. 즉 아래와 같이 클래스 구분이 가능하다.
이 예시는 차원을 극단적으로 줄이면 정보가 너무 적어져 분류가 불가능해질 수 있다는 점을 보여준다. 즉, 차원 축소 시 정보량이 유지되는 수준이 어느 정도인지 판단하는 것이 중요하다. 결국 차원 축소에서 축소할 차원 수를 어떻게 선택할 것인가는 정보량에 달려 있으며, 정보량은 어떤 정보를 보존하고 싶은가에 따라 달라진다. 예를 들어, 주성분분석(PCA)은 데이터에서 분산이 가장 큰 방향을 보존하려는 성격을 갖는다.