본문 바로가기
Machine Learning

35. 자율학습 두번째 (Principal Component Analysis) : 데이터압축(Data Compression), 차원감소(Dimensionality reduction)

by 대소니 2016. 8. 21.


이번에는 데이터를 압축 (Data Compression) 하는 방법에 대해서 알아보겠습니다. 

실제 데이터를 압축하는 것은 아니고 다차원의 데이터를 저차원의 데이터로 축소하는 방식입니다. 이것은 머신러닝을 수행할 때 메모리와 디스크 사용에 대한 비용을 줄일 수도 있지만 그보다 더 좋은 점은 머신이 학습하는 시간을 단축할 수 있다는 것입니다. 더 빠른 결과를 볼 수 있고 성능이 좋은 머신러닝 시스템을 만들 수 있게 되는 것이지요

아래 그림을 예로 들어서 살펴보겠습니다. x1, x2로 구성이 되는 2차원의 점들을 나타낸 것입니다. 이것은 어떤 하나의 선으로 각각의 점들을 표현할 수 있다고 생각해 보겠습니다. 이 두가지 x1,  x2 데이터는 어떤 관계를 가지고 있을 것입니다. cm 와 inch로 표현되는 같은 의미 이면서 다른 단위의 표시라던가 아니면 비행 조정사의 스킬과 마인드에 대한 관계가 형성이 될 수도 있을 것입니다.


이렇게 모든 2차원으로 표현이 되어 있는 데이터를 하나의 선으로 정의할 수 있다면, 아래 그림에서와 같이 이 선에 투영된 점들은 1차원의 점들 처럼 될 수 있습니다. x(1)은 2가지 정보(x1, x2)를 가지고 있는 vector 이지만, z 라는 선에서 보면 z(i)는 1차원의 점이 되어 z1으로 나타낼 수 있습니다. 이러한 원리로 데이터를 압축 또는 차원을 감소 하는 것입니다.



이번에는 아래와 같은 3D의 3차원 데이터를 2차원의 데이터로 만들어 보겠습니다.

왼쪽과 같이 3차원에 데이터들을 어떤 2차원 적인 사각형에 모두 투영할 수 있다고 생각할 수 있을 겁니다. 가운데 그림처럼 z1, z2로 표현이 되는 사각형에 모든 x(i) 데이터들이 투영이 되었습니다. 이 사각형을 다시 오른쪽 그림과 같이 평면으로 보면 2차원의 점들로 나타낼 수 있게 됩니다. 

x(i)는 x1, x2, x3의 정보를 포함하는 vector 이지만, 사각형에 투영되어 새로 생성된 z(i)는 z1, z2의 2차원 데이터가 된 vector가 됩니다.

이런 원리로 1000D 을 100D로 낮출 수도 있으며 이것은 시스템의 성능에 긍정적인 역할을 하게 될 것입니다.



Data Visualization


또 다른 방법으로 Data Visualization이 있습니다.

아래와 같이 각 나라별로 경제와 관련된 데이터들이 있다고 생각해보겠습니다. 이 데이터는 나라별로 50가지의 경제 관련, GDP 통게 데이터들로 구성이 되어 있습니다. 50D가 되겠죠



이렇게 50가지의 정보를 다음과 같이 2가지의 정보로 압축을 할 수 있습니다. z1, z2로 구성된 정보로 말입니다. 

z1는 각 나라의 GDP 혹은 경제적인 수치에 대한 비교치입니다. 그리고 z2는 각 나라의 GDP 혹은 경제적인 수치를 국민수로 나누어 생성한 비교수치 입니다. 이것으로 국가 경제를 큰 틀에서 살펴볼 수 있게 된 것입니다.



이렇게 생성된 각 나라별 2차원의 데이터를 2차원 그래프로 표현을 하면 아래 그림과 같이 됩니다. USA는 국가의 전체 GDP도 상대적으로 높고 국민1인당 GDP도 높아 보입니다. 또 다른 나라인 Sigapore의 경우에는 국민 1인당 GDP가 높은데 비해 국가 전체 GDP는 상대적으로 높지 않아 보입니다. 이런식으로 각 나라별 경제에 대한 데이터를 상대적으로 표현함으로서  50D를 2D로 줄일 수 있게 되었습니다.



이러한 원리를 기반으로 하여 다음에 배우게 될 Unsupervised Learning의 두번째 알고리즘인 PCA(Principal Component Analysis)에 대해서 알아보겠습니다.

댓글