데이터의 양과 차원은 아주 밀접한 관련이 있다. 이럴때 빼놓지 않고 나오는 이야기가 차원의 저주(Curse of Dimensionality)다.
차원을 더 늘릴 경우 필요한 데이터 양은 기하급수적으로 늘어나며 이를 차원의 저주라고 이야기 하며 여러가지 저주에 대한 이야기들 중에 한가지를 R코드로 시각화 해보려 한다.
결론적으론 각각의 특징 변수를 추가할 수록 그에 적합한 정보를 제공해야 함을 의미하며, 큰 차원엔 그에 합당한 큰 데이터를 제공하고, 작은 차원은 그에 합당한 역시 적절하게 상대적으로 적은 데이터를 제공해야 된다는 것이다.
10차원의 단위 하이퍼 큐브에 500개의 데이터가 있을 경우 이의 밀도는 아래와 같은 식으로 정의된다.
500^(1/10)
해당 단위 공간의 데이터 밀도는 정보의 질적인 양을 의미한다. 따라서 차원을 늘리더라도 이 정보의 질적인 양이 줄어들게 되면 차원의 저주 때문에 분류 모델같은 것들이 제대로 만들어 질 수 없다.
아래의 코드를 실행해 플로팅해보면 명확해 진다.
1.86의 밀도를 유지하기 위해 차원을 1부터 10까지 늘일 경우 필요한 데이터 수를 의미한다.
기하급수적이라는 말이 나온다면 가히 저주라 할 수 있지 않을까?
차원의 저주 시각화 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.