ML in Python/Knowledge

[Data Analysis 개념] 차원의 저주

SuHawn 2020. 6. 25. 14:22

 

차원의 저주? 

" 차원이 커질수록 데이터가 Sparse하게 존재하는 문제로 인해, 학습 데이터의 대표성을 잃고 모델 학습의 성능을 저하시키는 현상 "이라고 생각한다. 그림을 통해 알아보자.

출처 : "The Elements of Statistical Learning", Tibshirani and Friedman

 선을 보면 선의 50%가 해당되는 영역이나 2차원 평면으로 차원이 확대되었을 때, 기존의 선이 나타낼 수던 영역이 넓이로 표현되었을 때 25%로 줄어든다. 이는 3차원 공간으로 이동하면 12.5%만 해당되는 부분으로 축소된다. 이처럼 차원이 높아질 수록 분포하는 데이터의 대표성이 줄어드는 현상이 발생한다. 이는 곧 학습/예측 성능의 저하를 불러일으킨다.

출처 : "The Elements of Statistical Learning", Tibshirani and Friedman

 더 쉽게 알아보자. 첫 번째 선에서 별(데이터)이 5개 분포하고 있다. 이는 10개 중 5개로 50%에 해당한다. 하지만, 2차원에서 이 데이터가 분포한다면, 같은 범위내 2~3개 밖에 나타내지 못한다. 이는 3차원으로 갔을 때, 더 적은 수를 담아낸다. 

 만약 우리가, 1개의 대표적인 변수만 사용하여 학습을 진행시킨다면, 위와 같은 50% 범위 내에 있는 데이터들이 그리 문제가 안될 수도 있다. 그리고 충분히 데이터가 모집단을 대표해준다고 생각할 수 있다. 하지만, 2차원, 3차원으로 차원이 증가하고 변수의 개수(고려사항)가 증가함에 따라, 어떤 한 특성에는 대표적인 변수의 특징이 있을 지라도, 이 대표적인 변수의 특징이 전반적으로 보면 극히 일부분일 수 있다. 그렇기에 차원이 커질수록 데이터 또한 양적으로 많아질 필요가 있고 이는 곧 분석 비용의 증가를 초래한다. 이렇게 비싼 비용을 들이지 않는다면, 이는 곧 학습/예측의 성능저하로 이어질 수 밖에 없다.    

차원의 저주 - 모델 예시 

 아래의 그림은 k = 1인 상황의 KNN(K-Nearest Neighborhood)이다. 이 알고리즘은 나중에 게시할 예정이지만 예시를 위해 지금 머신러닝에서 발생할 수 있는 문제를 확인해보기 위해 가져왔다.  

출처 : "The Elements of Statistical Learning", Tibshirani and Friedman

 이때 1차원으로 분석한다면, 즉 변수 X1만 생각한다면, 가장 가까운 점은 노란 박스안에 상단에 위치한 점이다. 그 점이 검은 점을 대표해준다고 판단된다(X1 좌표상의 거리가 가장 짧다).

 하지만 차원이 한 차원 증가해 2차원으로 분석한다면, 즉 변수 (X1,X2)를 모두 생각한다면, 이는 파란원에 위치한 점으로 바뀐다. 즉 두 점사이의 거리 ( d=square[(x1_1-x1_2)^2+(x2_1-x2_2)^2] )의 기준이 바뀌어 검은색 점과 비슷하다 판단하는 점이 바뀌는 것이다.   

 이처럼 차원이 증가하거나, 변수가 증가할 때, 변수의 신뢰성도 확보하지 않은 상태에서 차원의 증가는 학습/분석에 있어서 신뢰성을 떨어뜨린다. 이러한 문제가 바로 "차원의 저주"인 것이다.