완숙의 블로그

차원축소 본문

Artificial Intelligence

차원축소

완숙 2019. 1. 5. 01:29

차원축소

  • 많은 feature는 훈련을 느리게 만듦.
  • 차원의 저주 라고 한다.

 

차원의 저주

  1. 충분한 데이터 양이 있어야 우리는 좋은 모델을 만들 수 있다.
  2. 이 필요한 데이터 양은 특성수에 따라서 결정된다.
  3. 특성수와 데이터양의 관계를 생각할 때 공간을 비유해서 설명하면 좋다.

2019-01-04 8 59 20

Dimension을 Feature의 개수와 동일하게 한번 바라보자.

이때 feature가 한개라면 1차원에 대응되고, 여기서 데이터는 그 1차원 공간위에 흩뿌려지는 점이라 생각하자.

이 선의 길이를 1이라 했을 때, 점들 사이 거리가 0.1이상 차이날 경우 모델이 정상적으로 동작하지 않는다고 가정했을 때,

필요한 점의 총 개수는 10개가 될 것이다.

 

2차원으로 늘렸을 때 각 점의 간격을 0.1로 유지하기 위해서는 10 x 10 = 100개의 데이터가 필요하다.

이런 방식으로 100차원만 되더라도 10000개의 데이터가 필요해진다.

즉 좋은 모델을 만들기 위해서 필요한 특정 밀도를 만드는데에 있어서 필요한 데이터의 수가 기하급수적으로 증가하게 된다.

 

만약 적은데이터로 이 밀도를 맞추려면 Extrapolation을 해야하는데, 이렇게 되면 모델이 과대적합되기 쉽다.

또는 설명력이 작은 모델이 될 것이다.

 

차원축소를 위한 접근 방법

1. 투영 (Projection)

대부분의 데이터는 Feature를 축으로 하는 특정 공간의 점으로 존재한다.

이 때, 데이터셋은 그 공간에 고르게 분포하기 보다는 특정 공간에 강하게 연관되어 있다.

(그렇지 않다면 모델식을 구하는 것이 의미도 없겠죠)

그림으로 간단하게 알아보자.

 

2019-01-04 10 09 45

 

다음과 같이 3개의 피쳐가 있는 공간은 이렇게 시각화 될 수 있다.

이 때 점들의 경향성은 특정 평면을 기준으로 약간의 값차이가 있을 뿐이다.

이때 이 평면을 subspace, 부분 공간이라 한다.

 

투영의 아이디어는,

그렇다면 저 평면의 공간에 대해 값들차이가 얼마나지 않으므로, x1, x2, x3의 축대신 평면을 만드는

두 축 (z1, z2)을 사용해서 데이터를 나타내자! 이다.

이 때 평면에 대해 수직으로 정확도의 손실을 보지만 차원을 줄일 수 있다.

2019-01-04 10 15 10

 

그런데 이것은 부분공간이 선형적인 상황에서만 가능하다.

다음과 같이 생긴녀석은 할 수가 없다.

 

2019-01-04 10 17 04

 

롤처럼 생겼다.

 

이녀석을 억지로 최적화해서 만들수 있는 초평면에 대해 투영을 하면, (아래 그림은 x1, x2에 대해 투영함)

왼쪽과 같이 나온다.

 

2019-01-04 10 19 07

 

하지만 우리가 원하는 것은 오른쪽 그림과 같이 이녀석을 펼쳐서 예쁘게 만드는 것이다.

어떻게 할까?

 

 

매니폴드 학습 (Manifold Learning)

위의 예는 2D 매니폴드의 한 예다.

이것을 일반화하여 말해보면,

 

위 상황은 2차원 초평면으로 보일 수 있는 3차원 공간속의 일부로 판단 할 수 있다.

즉 이녀석을 펼쳐서 보거나, 또는 가까이서 보면 2차원 평면이지만 말려있기 때문에 이 전체 공간의 크기인

3차원으로 보여지는 것이다.

 

정리하면,

d차원 매니폴드는 국부적으로 d차원 초평면으로 보일 수 있는 n차원의 일부이다.

이 때 d<n이며 위의 예처럼 -1차원일 필요는 없다.

 

 

많은 차원축소 알고리즘은 이 매니폴드를 모델링 하는 방식으로 작동한다.

이를 매니폴드 학습 이라 한다.

이 학습은

" 실제 고차원 데이터 셋은 저차원 매니폴드에 가깝게 놓여있다. "

라는 매니폴드 가정 , 매니폴드 가설 에 근거한다.

 

이 논리를 이미지를 판별하는 것에 비유해보면,

모든 픽셀이 어떤 이미지를 판별하는데 있어 영향을 주는 것이 아닐 것이다.

극히 일부분의 변화가 판별하는데 영향을 준다.

따라서 모든픽셀(모든 feature)을 에 연관되어 있지 않고

연관된 일부 픽셀(새로 만들어진 z1, z2축)과 관련이 있을 것이다.

로 해석할 수 있다.

 

 

더 나아가서 한가지 가설과 암묵적으로 사용되기도 한다.

위에서 롤모양을 풀어해친 모양에서의 결정경계, 회귀선이 간단할 것이라는 가설.

하지만 이는 우리가 단언하기 힘듦을 직관적으로 알 수 있다.

그림을 보자.

 

2019-01-04 10 33 06

 

1번 행일 것이라는 가정이다.

2번 행을 보면 아닐 수도 있다는 것을 알 수 있다.

 

 

PCA

  • 차원축소하는 알고리즘

 

분산보존

 

2019-01-04 10 38 16

 

위 그림을 보았을 때, 데이터 손실을 가장 줄이면서 저 데이터를 다 표현하려면 어떻게 해야할까?

c1선을 긋는 것이 좋을 것이다.

오른쪽 그림은 실선 반점선 점선에 투영을 했을 때 데이터의 분포를 보여준다.

데이터의 덩어리를 가장 잘 표현하는 것은 c1이다.

 

사실 위의 설명을 잘못되었지만 직관적인 이해를 돕는데는 좋다.

 

이제 제대로 설명해보면,

우리는 저 데이터의 크기를 대변해서 선을 긋는 것이 아니다.

우리가 해야하는 것은 수치적으로 원래 덩어리의 데이터의 손실량을 최소로 하는 선을 찾는 것이다.

그 행위는 (원래데이터 - 투영한 데이터)^2 을 최소화 하는 방향이다.

일종의 손실함수를 최소화 하는 것이다.

 

더하려다가 너무 설명을 잘하신 곳이 있어 링크로 대신한다.

주성분 분석(PCA)

 

 

Comments