[머신러닝 순한맛] 데이터 압축(Data Compression), 차원 감소(Dimensionality Reduction) in 비지도 학습(Unsupervised Learning)
어제보다 나은 사람이 되기

걱정보단 실행을, 그러나 계획적으로

Box World 자세히보기

AI/Coursera ( Machine Learning )

[머신러닝 순한맛] 데이터 압축(Data Compression), 차원 감소(Dimensionality Reduction) in 비지도 학습(Unsupervised Learning)

Box형 2020. 5. 18. 14:47
반응형

"모두가 비슷한 생각을 한다는 것은 아무도 생각하고 있지 않다는 말이다"

- 알버트 아인슈타인

 

시작하며

데이터 가공(Data Processing)은 머신러닝에서 가장 중요한 부분중 하나로 이를 어떻게 하느냐에 따라 머신러닝의 성능이 좌지우지되기도 합니다.

이번 포스팅은 연산 시간을 크게 줄이는 방법 중 하나로 데이터 압축(Data Compression) 혹은 차원 감소(Dimensionality Reduction)에 대해서 공부해보겠습니다.


Data Compression

머신러닝에서 데이터를 압축한다는 것고차원의 데이터를 저차원의 데이터로 축소하는 방식을 의미하며, 이를 통해 전체 연산량을 줄여서 최종적으로 학습 시간을 단축하는 것입니다. 이것이 왜 필요한 것일까요?

Dimension이 커질수록 알고리즘의 성능은 0에 수렴한다.

 이는 바로 '차원의 저주(Curse of dimensionality)'라는 것 때문입니다. 즉 차원이 증가하면 그것을 표현하기 위한 데이터의 양이 기하급수적으로 증가하기 때문에 데이터를 다루기 어려워지고 전체적인 알고리즘의 성능은 크게 감소하게 됩니다. 따라서 우리는 차원을 감소시켜 데이터의 의미를 제대로 표현하는 특징만 추려 학습에 이용하겠다는 것입니다.

차원이 증가할수록 담겨진 데이터가 적어집니다.

 위는 데이터의 차원이 증가하면서 같은 공간에 데이터를 얼마나 담을 수 있는지 표현한 자료입니다. 

 예를 들어, 위에 보이는 그래프는 $$x1, x2$$로 구성된 2차원 데이터를 표현한 것인데, 이 점들은 모여서 선을 이루게 됩니다. 그리고 이 두가지의 데이터는 어떠한 관계를 가지고 있을 것입니다.

 여기서 이 2차원의 데이터를 하나의 선에 투영하면, 1차원의 점들로 표현할 수 있습니다 다시 말해서 2차원의 점 $x^{(i)}$을 z라는 선에서 1차원으로 바라봐서 $z^{(i)}$이라는 1차원 데이터로 바라볼 수 있는 것입니다.

 결국 이렇게 데이터를 일렬로 표현하기 위해서는 2차원의 데이터를 1차원인 하나의 실수로 나타내야한다는 것이며, 이는 데이터가 반으로 줄어들게 되면서, 필요한 공간 또한 반으로 줄어든다는 것을 의미합니다. 그래서 결국 알고리즘의 성능이 향상되는 것입니다.

이것이 바로 데이터를 압축 또는 차원을 감소하는 기본 원리입니다.

3차원에서 2차원으로 차원 감소

이번에는 3차원의 데이터를 2차원으로 차원 감소시켜보겠습니다.  이 경우 3차원 데이터를 2차원의 사각형에 투영하는 형태를 생각해볼 수 있습니다. 다시 말해서 3차원 데이터로 $x_1, x_2, x_3$ 값을 가지던 vector $x^({i)}$은 $z_1, z_2$ 값을 가지는 vector $z^({i)}$로 다시 표현되는 것입니다.

이러한 차원 감소는 1000차원, 2000차원같이 훨씬 더 높은 차원에서 100차원, 200차원으로 낮추는데도 사용할 수 있으며, 시스템의 성능에 긍정적인 영향을 줄것입니다.


Data Visualization

이번엔 데이터를 이해하기 위한 하나의 방법인 'Data Visulalization'입니다. 예를 들어 위와 같이 각 나라에 대한 데이터가 있습니다. 이 데이터에는 나라별로 50가지의 경제 관련 통계 자료가 들어있습니다. 즉 50차원입니다.

이 나라 별 50가지의 정보를 위와 같이 $z1, z2$로 구성된 2차원의 데이터로 압축할 수 있습니다. 분명 50가지 데이터를 하나하나 살펴봐야 한다면 귀찮겠지만, 이를 2가지의 데이터로 압축하여 볼 수 있다면 나라를 분석하는데 훨씬 더 편할 것입니다.

이를 2차원의 그래프로 표현한 결과입니다. 각 점이 나라를 나타내며, 그래프를 이해하기 위해서는 $z_1, z_2$를 대략적으로 설정하면 어떤 의미일지 파악할 수 있습니다. 이렇게 차원을 줄이고 나니 그래프로 표현이 가능함에 따라 나라별 데이터간의 차이가 한눈에 보이기 때문에 많은 장점들이 있다고 할 수 있습니다.

결론적으로 차원을 줄이는 것은 데이터의 이해를 위한 것이라고 할 수 있습니다.

다음 포스팅에서는 이러한 원리를 기반으로 한 PCA 알고리즘에 대해 공부해보겠습니다.

반응형