Dimensionality Reduction - Data Compression & PCA

2019. 2. 16. 20:09Artificial Intelligence

* 첨부된 자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다.




Dimensionality Reduction 

- Data Compression & PCA




이번에는 주어진 데이터셋의 차원을 낮추는 Data Compression과 그 일종인 PCA에 대해서 알아보고자 한다.


고차원의 데이터에서는 관측단계도 기하급수적으로 증가하고

메모리도 굉장히 많이 차지하기 때문에 많은 문제점이 발생하게 된다.

즉, 차원이 증가하면 이를 표현하기 위한 데이터의 양이 기하급수적으로 증가한다는 것이다.


따라서 기계학습을 시키기 위해서는 이 데이터의 차원을 축소하여 다룰 필요가 생기는데, 

이를 차원 축소(DImensionality Reduction)라 한다.




save image



차원 축소의 의미는 바로 "데이터의 의미를 잘 표현하는 특징을 추려낸다는 것"에 있다. 이 말은, 대부분의 상황에서는 특징벡터(Feature Vector)보다 더 좋은 특징들을 추려내어 이것들을 새로운 특징벡터로 추출해낸다는 것에 있다. 예를 들어 위의 그림에서 x1, x2, x3 로 표현되는 데이터의 특징을 잘 나타내는 것은 z1, z2 벡터이다. 따라서 x1, x2, x3로 이루어진 3차원 특징벡터를 z1, z2의 2차원 특징벡터로 추출해 내어 차원을 축소시키는 것이다.  이를 위해 Principal Component Analysis Algorithm(PCA, 주성분분석 알고리즘)을 주로 사용한다.




PCA Algorithm (Principal Component Analysis)


PCA 알고리즘을 적용한다는 것은 데이터의 특징들을 잘 드러내 줄 수 있는 특징 벡터를 찾는 것이다. 

아래 그림을 예제로 생각을 해 보면 다음과 같다.

왼쪽 첫 번째 그림의 경우 데이터는 2차원이고 이를 PCA를 통해 1차원으로 줄이고자 한다. 이때 1차원으로 차원을 축소했을 때도 데이터의 특징들을 잘 드러내줄 수 있는 벡터의 방향은 파란색으로 쓰여진 U벡터일 것이다. 다시말해, 데이터들의 분산이 가장 큰 방향벡터를 찾는 것이라고도 할 수 있다. 아래 오른쪽 그림의 경우도 마찬가지이다. 3차원의 데이터를 PCA 를 적용하여 2차원 특징벡터로 차원을 축소하고자 할 때, 데이터의 특징들을 잘 드러내줄 수 있는 두 벡터는 U(1), U(2)이다. 따라서 데이터들의 분산이 가장 큰 방향벡터들로 n 차원을 k 차원으로 축소시켜주면 된다.