본문 바로가기

Machine Learning/Business Analytics 1

Dimensionality Reduction - Overview

자료 출처

 

 

차원 축소는 전처리 방법 중 하나이다. Variable이 $x_1 ... x_d$로 $d$차원의 데이터셋 $X$가 있을 때, 이를 $x_1 ... x_{d'}$인 $d'$차원으로 데이터셋을 diet시키는 것이다. 차원 축소의 목적은 일반적으로 학습 데이터셋의 차원을 축소시켜 모델 학습의 효율성은 올리면서 성능은 유지 혹은 증가시키는 것이다.

 

 

차원의 저주

Variable 개수가 증가할 때 똑같은 설명력을 유지하기 위해서 혹은 정보량을 유지하기 위해서 필요한 객체의 수는 기하급수적으로 증가한다.

 

 

위 그림 처럼 두 객체 사이의 거리가 1이라는 정보를 표현하기 위해서는 1차원일 때는 객체가 2개가 필요하지만, 차원이 증가할 수록 필요한 객체의 수는 기하급수적으로 증가한다.

 

 

또한 항상 그런 것은 아니지만 intrinsic dimension은 original dimension보다 상대적으로 낮을 때가 있다. 예를 들어, MNIST 데이터셋을 PCA와 ISOMAP을 사용해 2차원으로 축소한 뒤 시각화를 해보면 다음과 같다.

 

 

MNIST 데이터셋은 16x16 pixel 데이터로 256(=16x16)차원의 데이터셋이다. 그럼에도 불구하고 이를 2차원으로 축소시켰을 때 위 그림처럼 구분이 가능하다는 것이다. 성능이 동일하다고 가정하면, 모델 학습의 효율성을 위해 original 데이터셋을 사용하는 것 보다 차원이 축소된 데이터셋을 사용하는 것이 옳다.

 

 

고차원으로 인한 문제점

지도 학습 관점에서 봤을 때 모든 데이터는 $y= f(x) + \epsilon$으로 표현되며, 노이즈를 나타내는 $\epsilon$이 존재한다. 변수가 많아질수록 노이즈가 발생할 가능성이 높다는 것은 참에 가까운 명제이다.

  • 데이터에 노이즈를 갖고 있을 확률이 증가하면 예측 성능이 감소한다.
  • 모델을 학습하거나 적용할 시 계산량이 증가한다.
  • 모델의 일반화 성능을 보장하기 위해서는 많은 수의 샘플을 필요로 한다.

 

이를 해결하기 위해서는

  • 전문적인 도메인 지식을 가지고 처리
  • 목적 함수에 regularization term을 사용
  • 정량적인 차원 축소 기술을 사용

따라서 고차원으로 인한 성능 저하를 해결하기 위해, 성능을 최대화 할 수 있는 최적의 차원을 찾는 것이 주된 목적이다.

 

 

정리해보면, 이론적으로 varialbe이 독립적인 조건하에 variable이 증가할 수록 모델 성능은 증가한다. 그러나 현실에서는 노이즈의 존재와 variable간의 의존성 때문에 모델 성능이 저하된다.

 

따라서 모델을 최적화 할 수 있는 variable의 subset을 찾아야 한다. 이는 다음과 같은 효과가 있다.

  • variable 간의 상관관계를 제거
  • 사후 과정 단순화
  • 중복되거나 불필요한 variable을 제거
  • 시각화

 

Supervised vs Unsupervised

 

특정한 Supervised Feature Selection 기법을 사용해 차원을 축소한뒤 learning algorithm을 사용해 피드백을 받는다. 따라서 차원 축소 결과는 어떤 learning algorithm을 사용하는지에 따라 달라진다. 예를 들어, PCA 기법을 사용해 차원을 축소할 수도 있고 learning algorithm이 선형 회귀인지 혹은 logistic 회귀인지에 따라 차원 축소 결과가 달라진다는 뜻이다.

 

 

 

Unsupervised 차원 축소에는 learning algorithm에 의한 피드백 루프가 없이 한 번에 차원을 축소하고 알고리즘을 적용한다.

 

 

차원 축소 기법

Feature Selection

Origianl variable set에서 subset을 선택하는 방법이다. (N > M)

 

 

Feature Extraction

Origianl variable set에 어떤 함수 $f$를 적용하여 x에서 새로운 y를 생성하는 방식이다. (N > M)