개발/머신러닝

[요약] 핸즈온 머신러닝 - 08. 차원 축소

소년택이 2022. 5. 30. 17:43

차원의 저주

  • 특성수가 많을수록 훈련은 느리고 모델의 성능은 나빠진다.
  • 그런데 특성수가 많을 수록 데이터의 밀도가 낮아진다 -->  과대 적합.
  • 중요한 데이터는 특정 영역에 집중된다.
  • 차원의 저주를 해결하기 위해...
    • 데이터를 늘려 밀도를 높인다.
    • 차원을 낮춘다.

데이터를 늘려 밀도를 유지하는것은 고차원에서는 사실상 불가능하다. 따라서 차원을 낮추는 차원 축소가 유용하다.

 

차원 축소 원리

투영

  • D 차원의 데이터를 낮은 차원인 N 차원에 맵핑하는 것.
  • 대부분의 데이터는 일부 공간(부분 공간)에 모여 있으므로 차원을 낮추더라도 식별이 가능하다.
  • 하지만 반드시 차원을 낮춘다고 식별이 용이해 지는것은 아님.
    예. 스위스롤을 절반으로 나누는 문제는 고차원에서 식별이 더 쉽다. 차원을 낮추면 말린 부분이 오버랩 되기 때분이다.

매니 폴드

  • D 차원의 데이터를 N 차원의 초 평면으로 펼치는 것.
  • 매니폴드 가정 : 인접한 데이터는 국부적으로 저차원 매니폴드에 가깝게 놓여있다.
  • 공의 표면을 부분부분 잘라 평면으로 근사할 수 있는 원리.
  • "펼쳐서 해결" 할 수 있는 문제에 유리하다.

 

주요 차원 축소 기법

PCA

방법

  1. 주어진 데이터의 분산을 가장 잘 보존할 수 있는 주성분 (=축 벡터)를 찾는다.
  2. 1번 축에 직교하고 남은 분산을 최대한 보존하는 두번째 축을 찾는다. 
  3. 남은 분산이 의미가 없는 수준이 될 때 까지 또는 D-1 차원에 도달할 때 까지 이 과정을 반복한다.

여기서 데이터의 분산을 가장 잘 보존할 수 있는 주성분이란 ( 데이터를 mean 기준으로 정규화 했을때 ) 원점에서 시작하여 MSE 가 가장 적어지는 벡터 이다.

특잇값 분해 SVD

$\textbf{X}=\textbf{U}\sum\textbf{V}^T$ 식을 풀어 주성분 행렬인 $\textbf{V}$ 를 구할 수 있다. 여기서 충분한 정보를 포함하고 있는 (=큰 분산값을 가지는, 데이터 분산 비율) 1~i 개의 축을 이용하여 i 차원의 초평면에 데이터를 투영한다.

커널 PCA

PCA 를 수행하되, i 차원의 초 평면을 사용하는 대신 커널 공간으로 사상할 수 있다.

 

LLE

지역 선형 임베딩,  또는 비선형 차원 축소이다. 특정 데이터의 가장 가까운 k 개의 데이터에 대하여 지역적으로 선형 관계를 구한다. 이 과정을 모든 데이터에 대하여 수행하면 비선형 공간을 지역적으로 선형으로 해석하여 차원을 축소할 수 있다. 매니 폴드 기법이다.