본문 바로가기

회사생활/통계학 공부

Dimension / 차원 / 차원의 저주 / 차원축소

Dimension / 차원 / 차원의 저주 / 차원축소




이번 포스팅에서는 데이터를 다룰 때 자주 등장하는 '차원(Dimension)'이라는 개념에 대하여 정리해보려고 한다.

차원이란 수학에서 공간 내에 있는 점 등의 위치를 나타내기 위해 필요한 축의 개수를 말한다. (출처: 위키백과)


차원과 관련된 다른 개념들과 알고리즘을 이해하려면 우선 내가 가진 데이터가 몇 차원인지 알 수 있어야 할 것이다.


-

(1) 데이터에서 차원 찾기

(2) 차원의 저주 / Curse of Dimension

(3) 차원축소

(4) Feature Selection

(5) Feature Extraction

-




(1) 데이터에서 차원 찾기


아래와 같은 데이터를 가지고 있다고 하자. 그럼 이 데이터의 차원은 얼마일까?



차원 = 변수의 수 라고 이해하면 쉽다. 왜 그런지는 아래 그림을 설명해 보겠다.



이처럼 내가 가진 데이터를 그래프로 표현하기 위한 축의 개수가 내가 가진 데이터 공간의 차원이므로 축의 개수 = 변수의 수 = 차원 이 된다. 즉 이 데이터의 차원은 3차원이다. 변수의 수가 늘어난다 = 차원의 늘어난다 = 데이터 공간이 커진다 라고도 표현할 수 있을 것이다.


다음 단락에서는 이렇게 변수의 수가 늘어나 차원이 커지면 발생하는 문제에 대하여 다뤄보자.




(2) 차원의 저주 / Curse of Dimensionality


변수의 수가 늘어나 차원이 커지면서 발생하는 문제를 차원의 저주라고 한다. 차원이 커지면 왜 문제인지, 어떤 문제가 발생하는지를 알아보자.


먼저 A라는 변수 1개가 있는 데이터를 가지고 있다고 하자. A가 가질 수 있는 값은 1, 2, 3이다.

이 경우 데이터를 채우기 위한 최소한의 데이터 건수는 3건이다.



그럼 이번에는 A, B라는 변수 2개가 있는 데이터를 가지고 있다고 하자. A와 B가 가질 수 있는 값은 각각 1, 2, 3이다.

이 경우 데이터를 채우기 위한 최소한의 데이터 건수는 9건이다.



마지막으로 A, B, C라는 변수 3개가 있는 데이터를 가지고 있다고 하자. A, B, C가 가질 수 있는 값은 각각 1, 2, 3이다.

이 경우 데이터를 채우기 위한 최소한의 데이터 건수는 27건이다.




이처럼 차원이 증가하면 그 데이터 공간이 커지기 때문에 이를 채우기 위한 데이터 건수도 증가하게 된다.

근데 이게 왜 문제일까? 아래 상황을 살펴보자.


6명의 사람에 대하여 데이터를 수집한다고 하자.

먼저 변수 A만 수집하면 3가지 조건에 6명을 배정하는 것이므로 6 / 3 = 2 = 200%의 공간을 채울 수 있다.

추가로 변수 B까지 데이터를 수집했다고 한다면 6 / 9 = 0.66 = 66%의 공간을 채울 수 있다.

이번에는 변수 A, B, C에 대한 데이터를 수집했다고 하자. 그럼 6 / 27 = 0.22 = 22%의 공간밖에 채우지 못한다.

-
-

 

이처럼 수집된 데이터 건수는 동일하더라도 차원이 증가하면, 즉 변수가 늘어나면 데이터 공간을 채우는 비율(%)이 줄어들기 때문에 변수가 많아질 수록 분석에 요구되는 데이터 건수도 증가한다.


참고로 1가지 조건 안에 최소 30건의 데이터가 있는 것이 좋다고 한다. 변수 A, B, C를 수집했다고 할 때 이를 만족하기 위해서는 최소한 27 * 30 = 810건의 데이터가 필요하다는 이야기이다.


언듯 보기에는 변수의 수가 많아지면 데이터에 대한 정보가 많아지는 것 같지만,

변수의 수가 많아지면 차원이 커지므로 분석을 위한 최소한의 필요 데이터 건수도 많아진다.

충분히 공간을 표현할 만큼 큰 데이터 수집 없이, 적은 데이터로만 이 공간을 표현하는 경우 과적합(Overfitting)이 발생할 수 있다.


이러한 문제들을 차원의 저주라고 부른다.




(3) 차원축소


이러한 차원의 저주를 해소하기 위해 필요한 것이 차원축소이다. 차원 축소는 말 그대로 차원의 수를 줄이는 것, 변수의 수를 줄이는 것을 말한다.

차원축소를 통해 1) 차원의 저주 탈피, 그리고 2) 시각화의 용이성이라는 이점을 얻을 수 있다.


시각화의 용이성은 말 그대로 차원이 적을 수록 시각화 즉, 차트로 표현하기 쉽다는 것이다. 인간은 최대 3차원 그래프까지 눈으로 인식할 수 있기 때문에 차원을 줄이면 쉽게 데이터를 표현할 수 있게 된다.


그럼 차원축소의 방법에 대하여 알아보자. 차원축소의 방법에는 두가지가 있는데, 1) Feature Selection 과 2) Feature Extraction 이 있다. 여기에서 Feature는 변수의 다른 말이라고 이해하면 된다. 머신러닝 등에서는 변수라는 용어보다는 Feature라는 용어를 주로 쓰기도 한다.


각 방법에 대한 자세한 내용은 따로 다루겠다.




(4) Feature Selection


Feature Selection은 직역하자면 '변수 선택' 정도로 해석할 수 있다. 가지고 있는 변수들 중에 중요한 변수만 몇 개 고르고 나머지는 버리는 방법이다. 따라서 Feature Selection에서는 변수 간에 중첩이 있는지, 어떤 변수가 중요한 변수인지, 어떤 변수가 타켓에 영향을 크게 주는 변수인지를 분석할 필요가 있다.


중첩되는 변수를 찾을 때 주로 사용하는 방법은 상관분석(Correlation)이다. 상관계수가 높거나 VIF(분산팽창지수, Variance Inflation Factor)가 높은 중첩되는 변수들 중 하나만을 선택한다.


타겟, 즉 종속변수에 영향을 크게 주는 중요한 변수는 랜덤포레스트(Random Forest) 또는 XGBoost 등을 이용해 Variable Importance를 찾아 몇 가지 변수만 선택한다.



위에서 언급한 기법들은 별도 포스팅으로 다루겠다.


▼ 랜덤 포레스트 (Random Forest) 관련 포스팅 바로가기 ▼

2017/04/23 - [Analysis/R] - party::cforest vs. randomForest::randomForest





(5) Feature Extraction


Feature Selection은 직역하자면 '변수 추출' 정도로 해석할 수 있다. 이 방법은 변수 A, B, C, D, E 중 A와 D 변수만 고르는 Feature Selection과 다르게 모든 변수를 조합하여 이 데이터를 잘 표현할 수 있는 중요 성분을 가진 새로운 변수를 추출한다. A, B, C, D, E가 조합되어 가, 나, 다, 라, ... 등이 된다는 뜻이다.


이렇게 변수 추출을 위해 주로 사용되는 방법은 주성분분석(PCA, Principal Component Analysis) 이다.

사실은 PCA에 대한 포스팅을 하기위해 이번 포스팅을 작성하게 되었다. PCA에 대한 자세한 설명은 바로 다음 포스팅에서 다루겠다.

 

 

 

( + 추가 )


▼ 주성분 분석 (PCA) 이론 보러가기 ▼

2018/07/19 - [ANALYSIS/Algorithm] - PCA (Principal Component Analysis) / 주성분 분석

 

▼ 주성분 분석 (PCA) R 실습코드 보러가기 ▼
2018/01/01 - [ANALYSIS/R] - R 예제 코드 - PCA / Principal Component Analysis / 주성분 분석





#r#rstudio#데이터분석#빅데이터#빅데이터분석#차원이란#통계#통계분석#차원의저주#차원축소#dimension#차원