차원의 저주 (Curse of Dimensionality)
더 많은 수의 Feature (데이터 속성) = 더 높은 차원을 의미
1. 5개의 샘플 데이터(5)를 가지고 있는 1차원 데이터 (피쳐 1개)
2. 25개의 샘플 데이터(5*5)를 가지고 있는 2차원 데이터 (피쳐 2개)
3. 125개의 샘플 데이터(5*5*5)를 가지고 있는 3차원 데이터 (피쳐 3개)
데이터의 수를 n개로 가정하고 차원의 수를 m으로 가정할 시,
총 데이터의 수는 n^m이다.
차원에 대해 알아봤으니 이제 차원에 저주는 무엇인가 알아봅시다.
데이터의 차원이 늘어날수록 (피쳐가 늘어날수록) Overfitting(과적합)한 모델이 생성될 가능성이 높음
예시를 통해서 자세한 내용을 알아보겠습니다.
아래 그림은 개와 고양이의 데이터셋을 피쳐 숫자에 따라 1차원, 2차원, 3차원으로 표현해봤습니다. (분류 모델)
1차원 데이터를 보고 있을시에는 이걸 어떻게 분류할지 되게 난감합니다.
2차원 데이터에서는 그래도 분류할 수 있는 가능성이 조금 더 높아졌습니다.
3차원 데이터의 분류는 차원을 하나 낮추면 2차원인 면으로 분류를 해야됩니다. 한번 해보겠습니다.
분류를 했을 시에 정확하게 고양이와 강아지를 분류하는 것을 볼 수 있습니다.
하지만 이 분류가 완벽하다고 얘기할 수 있을까요? 분류하는 면을 똑같이 2차원에 적용해보겠습니다.
다시 이 모델을 차원을 낮춰 (Feature 숫자를 줄여) 2차원에 적용할 시에는 위 그림과 같이 Overfitting되는 것을 확인할 수 있습니다.
그럼 여기서 궁금증이 생기죠.. 그럼 3차원 데이터 쓰면 안될까?
데이터의 차원이 높으면 크게 2가지의 문제점이 있습니다.
1. 데이터의 feature 수가 많을 시 분류모델 생성하는 시간이 오래 걸린다.
2. 학습 데이터에 대해 Overfitting 되어 테스트 데이터 분류할 시 과적합에 의해 낮은 정확도를 낼 확률이 높아진다.
그럼 어떻게하면 더 효율적으로 feature의 수를 줄이고 분류 정확도도 높일까?
이를 해결하기 위해 Feature Extraction / Feature Selection이라는 분석 기법이 존재합니다.
Feature Extraction / Feature Selection은 데이터의 피쳐를 효율적으로 줄여주는 분석 기법입니다.
해당 기법에 대해서 다음 글에서 다뤄보겠습니다.
해당 글에 대해서 의견이 있으신 분들은 댓글로 남겨주시면 감사하겠습니다!
데이터 참고
The Curse of Dimensionality
Followed by an intro to dimensionality reduction!
medium.freecodecamp.org
http://www.visiondummy.com/2014/04/curse-dimensionality-affect-classification/
The Curse of Dimensionality in Classification
In this article, we discuss the so called 'Curse of Dimensionality' and overfitting as a result, and explain why it is important when designing a classifier
www.visiondummy.com