Major Study./Bioinformatics

MDS (Multi dimensional scaling)와 PCA 알고리즘

sosal 2016. 8. 31. 02:36
반응형

/*

 http://sosal.kr/
 * made by so_Sal
 */





MDS - Multi dimensional scaling

PCA - principal component analysis




MDS - Multi dimensional scaling

데이터 분석 관련 서적들에서는 '다차원척도법'으로 직역하는 것 같다.


MDS 기법은 numeric 변수로만 이루어 졌을 때 사용이 가능하다.

자료들의 '비유사성' 거리를 바탕으로, 다중의 변수들을 2차원 혹은 3차원으로 낮추어 나타내는 기법이다.

낮은 차원에서의 자료들이 거리가 멀리 떨어져 위치한다는 것은 비유사성이 높다는 뜻이고,

자료가 가까울수록 비유사성이 낮다 (즉 유사성이 높다)는 뜻이 된다.



MDS를 이용하여 데이터를 시각화 하는 방법의 가장 큰 장점은 바로 데이터들의 유사도를 확인할 수 있다는 점이다.

비슷한 변수값을 가지는 데이터들은 가까이 있을 것이다.


MDS는 2차원 (혹은 3차원)에 데이터를 projection하여 시각화 하는 알고리즘일 뿐, 비슷한 샘플을 군집화해주는 기능은 없다.

데이터를 군집화 하기 위한 Clustering 알고리즘은 매우 다양하기 때문에, 여기서는 자세히 언급을 하지 않지만

대략적인 데이터들의 특성을 확인하고자 할 때, MDS plot은 매우 유용하다.


변수의 수가 작은 경우, 변수들을 단순한 plot만으로도 샘플간의 유사도를 볼 수 있겠지만,

그 수가 많을 경우 (Dimensionality problem) 이 방법은 매우 유용해진다.

n개의 변수를 2개 (혹은3개)로 축약하여 2차원으로 샘플을 나타낸다면, 한눈에 자료들의 유사성을 표현할 수 있기 때문이다.


이미 샘플의 label을 알고 있는 경우, label에 따라 색을 나눈 후 시각화를 한다면,

같은 label간의 유사도가 어떤지, 혹은 어떤 label간의 유사도가 높은지 눈으로 쉽게 확인할 수 있다.




이미지 출처: http://r-statistics.co/Multi-Dimensional-Scaling-With-R.html



PCA (principal component analysis)

이는 다양한 서적에서 '주성분 분석' 으로 직역하고 있다.

상관관계가 있는 변수들을 결합하여 분산을 극대화 하는 성분을 만드는 방법이다.



?Classical multidimensional scaling?

가장 기본적인 MDS 기법이며, PCA (principal component analysis)로 불리기도 한다.

오히려 PCA라는 말을 더 많이 사용하는 것 같다.


각 자료들의 변수값으로 부터 eigen-decomposition (혹은 singular-value-decomposition) 하여 PCA를 수행하는 것으로,

동일한 방법으로 생각할 수 있다.


하지만 구글검색을 해보니, PCA는 Factor analysis의 일종으로 data reduction에 사용되는 알고리즘이며

MDS는 데이터의 차원 mapping 정도로 해석하는 것으로, 비슷하지만 다른(?) 알고리즘인 듯 하다.


어쨌든, classical MDS나 PCA나, 결국 데이터를 2차원으로 시각화하여 similarity를 보기 위한 것이므로,

이 글에서는 두개를 동일 선상에 두고 알고리즘을 설명하고자 한다.



그럼 과연 어떤 방법으로 n개의 변수를 가지는 자료형을 2개 (혹은 3개)의 변수형태로 바꿀 수 있는 것일까?






PCA 알고리즘에 대한 자세한 설명하기 전에, 요약하면 다음과 같다.

- n개의 변수를 시각화 하려면 n개의 차원이 필요하다. (3차원 이상은 시각화 하기가 굉장히 힘들다.)

- 2개의 차원으로 데이터를 축소시킨다면 시각화 하기가 쉬우며, 각 데이터의 similarity를 이해하기 매우 쉽다.

- 2개의 차원의 x축과 y축을 PCA에서는 Principal component1, Principal component2 라고 표현한다.

- Principal component1 (즉, PCA x축)은 전체 샘플의 variance를 최대화 하는 새로운 변수 (혹은 성분, component)다.

- Principal component2 (즉, PCA y축)은 x축의 orthogonal (직교)하는 직선이다.






- Maximizes variance

n개의 변수들의 Variance (분산)이 최대가 되는 하나의 linear component를 생성한다.


그럼 분산이 최대가 되는 linear component가 뭐냐? 고 하면 아래의 그림으로 간단하게 설명하고자 한다.


(R의 faithful dataset을 이용하였습니다.)


> data(faithful)

> plot(x=faithful$eruptions, y=faithful$waiting, xlim=c(1, 5.5), ylim=c(40, 100))



각 point 들을 plot으로 그리면 위와 같이 귀엽게 그려진다.


이 데이터를 특정한 축에 projection을 하게 되면 하나의 linear component로 만들 수 있다.






좌측은 x축으로 projection, 우측은 y축으로 projection 한 것이다.


좌측의 경우 sample = (x,y)는 (x,0) 으로 나타내지고,

우측의 경우 sample = (x,y)는 (0,y) 으로 나타내진다.


0은 더이상 의미가 없는 변수이기 때문에, 하나의 component로 transform 했다고 할 수 있다.


PCA (혹은 classical MDS)는 이 방법을 이용하여 변수를 축약한다.


다만 위의 예처럼 무작정 x축, 혹은  y축으로 축약하는 것이 아니고, projection 결과 분산(variance)를

최대로 하는 축을 생성하여, 그 축에 projection하는 방법으로 linear component를 생성한다.


위 그림처럼 새로운 선분 위로 샘플(x,y) 들을 projection 하게 되면,

x축이나 y축으로 projection 한 것 보다 더 높은 variance를 가지는 linear component를 생성할 수 있다.

따라서 새로운 녹색의 축이 바로 Principal component1 이 된다.




Principal component2는 주황색에 해당되는 직선이 된다.



PC1을 x축으로, PC2를 y축으로 하는 그래프는 다음과 같다.

기존의 데이터 변수인 (x,y)들의 variance보다

새로 만들어진 데이터 (PC1, PC2)의 variance가 더욱 크게 된다.


그림에서는 x축의 간격과 y축의 간격이 다르기 때문에, 쉽게 눈에 보이지 않는게 아쉽지만..



예제는 알기 쉽게 2개의 변수 (x, y)만이 존재하는 데이터에 적용하였지만,

같은 방법으로 n차원의 변수를 2개차원의 Principal component로 나타낼 수 있다.

따라서 수많은 변수를 가진 샘플들을 2차원의 (혹은 3차원의) 그림에서 similarity를 확인할 수 있는 것이다.


예를들면 세포의 분자유전학적 similarity를 보기 위해서 2만개 이상의 유전자에 대한 비교가 필요하지만,

MDS (혹은 PCA)를 이용한다면 2차원의 그래프로 쉽게 visualization 할 수 있다.




# non-metric MDS 기법은 자료형이 등간척도가 아닌, 서열척도로 구성되어 있을 때 사용하는 기법이다.