ice rabbit programming

[AI] 차원 축소(Dimensionality Reduction) 본문

Development/Machine Learning

[AI] 차원 축소(Dimensionality Reduction)

판교토끼 2021. 2. 13. 02:24

차원 축소(Dimensionality Reduction)는 변수가 매우 많을 때 데이터를 압축하는 컨셉이다. 즉, 데이터를 압축하고 학습 속도를 개선하기 위함이다.

차원이 높을 때 발생하는 현상 중 하나로는 차원의 저주가 있다. 차원이 높을수록 학습에 요구되는 데이터의 개수가 증가되는데, 만일 고차원일 때 적은 개수의 데이터로 표현하게 되면 과적합(Overfitting)이 발생할 수 있다.

이러한 차원의 저주 발생을 방지하고, 학습 속도 및 성능 향상을 위해 차원 축소가 사용된다. 아래 두 가지 방법이 있다.

  1. 주성분 분석(Principle Component Analysis)
    PCA는 고차원 데이터를 가장 잘 설명할 수 있는 주성분을 찾는 방식이다. 즉, 차원을 축소하면서도 원본 데이터의 특징을 가지고 있도록 하는 것이 핵심이다.
    원본 데이터의 특징은 곧 원본 데이터와의 차이가 최소인 것이고, 이는 다시 말해 원본 데이터와의 차이를 최소화하는 축을 찾는 일이 된다.

    예를 들어 간단하게 2차원에서 1차원으로 축소하는 경우를 본다면, 여러 축들 중 각 점들과의 오차가 가장 작은 축을 중심으로 데이터를 모은다.

    PCA는 고차원 데이터를 함축적으로 표현하므로 직관적 해석이 어려울 수 있으나, 대용량의 고차원 데이터 압축 시 유용하다는 장점이 있다.

  2. t-SNE(t-Stochastic Neighborhood Embedding)
    t-SNE는 고차원 데이터 군집을 구별하여 시각화하는 컨셉으로, 시각화를 중점으로 두고 그에 많이 이용된다.
    각 데이터마다 자기 이외의 데이터와의 유사도 확률을 계산하고, 저차원으로 축소한 후에 초기 확률에 따라 거리를 주어 이동한다.

    예를 들어 2차원에서 1차원으로 축소하는 경우에는 한 직선으로 모두 끌어온 후에 데이터 간 거리를 이용해 X축 간 거리를 부여하는 방식이다.

    데이터 간 거리 유지를 통해 차원 축소 이후에도 구별이 가능하므로 상술했듯이 시각화에서 많이 이용된다. 다만 계산할 때마다 값이 지속적으로 변경되므로 학습 데이터로는 활용이 어렵다.