차원 축소는 많은 feature로 되어있는 데이터 셋의 차원을 축소하여 새로운 차원의 데이터 셋을 생성하는 것이다. 이 때 데이터의 차원은 feature의 개수를 말하는데, 아래와 같이 feature가 3개인 데이터를 시각화 한다고 하면, 3차원에 그릴 수 있다. 이를 통해 "feature의 개수 = 차원 수"임을 알 수 있다. (4차원 이상은 그릴 수 없기 때문에 3차원을 예시로 듦)
< 출처 >
naver blog - 3차원 데이터 그리기
feature의 개수가 데이터의 차원이라는 것은 알았는데, 그렇다면 feature의 개수는 왜 줄여야할까? 데이터가 차원이 높으면 아래와 같은 이슈가 발생한다.
< 차원의 저주와 다중공산성 문제 >
[ 차원의 저주 ]
- 차원이 한 개 늘어날 때마다 데이터 밀도가 급격하게 떨어는 현상이다.
- 공간은 지수 연산의 형태로 늘어나기 때문이다.
- 예를 들어 cm 단위의 공간은 2차원일 때에는 , 3차원일 때에는 , 4차원일 때에는 이다. 이와 같이 공간(차원)이 늘어나면 지수가 늘기 때문에 차원이 늘어나기 전과 동일한 데이터 밀도를 가지려면 데이터가 기하급수적으로 많아져야한다.
- 하지만 현실적으로 힘들어서 차원을 줄이는 방향 선택하게 된다.
[ 다중공산성 문제 ]
- 수식으로 다중공산성에 대해 이해해보기 위해 아래와 같이 변수 3개와 각각의 계산 식이 있다고 가정해보자
변수1 변수2 변수3 변수 계산 식
- 각 feature들은 서로 독립적이어야 함(feature를 부르는 이름 부터가 독립변수) 그런데 변수1과 변수3은 서로 연관이 있다.(변수1이 로 바뀌면 그에 따라 변수3도 로 바뀐다.)
- 이 경우 target을 결정할 때 라는 정보가 두 번 들어가게 되기도 하고, feature끼리 연관이 있으므로 데이터의 변동성도 커지게 되어 예측에 어려움을 준다.
일반적으로 차원을 축소하는 방법은 feature selection과 feature extraction이 있다.
여기서 feautre extraction의 경우 단순히 여러 개의 변수를 하나로 합치는 것이 아니라 데이터의 특성을 잘 보여주는 새로운 변수를 발견하는 것이다.
차원 축소는 단순히 feature의 개수를 줄이는 것이 아니라 데이터의 특성을 더 명확하게 하여 학습에 도움이 되게 데이터셋을 변경하는 일이다. 이미지 분석, 텍스트 분석 등 다양한 분야에서 과적합을 피하고 모델의 예측 성능을 높이기 위한 방법으로 사용되고 있다.