데이터 분석을 하다보면 일련의 방법론이 필요하다는 생각이 듭니다. 일부 동료 분석가들은 "너가 컨설턴트 출신이라 그래." 라는 식으로 방법론에 대해 회의적인 의견을 보이기도 하지만, 그래도 저는 방법론이 있으면 좋겠다는 생각입니다.
그래서 구글링을 해보니 분석 방법론을 정리한 글들을 많이 볼 수 있었고, 방법론에서 더 나아가 데이터 분석 프로세스에서 확인해야할 Check List를 정리해놓은 사이트도 볼 수 있었습니다. 이런 글들에 무임승차로 편승하여 그 방법대로 따라서 분석을 진행하다가 결국은 직접 나만의 분석 프로세스를 정리하여야 내재화될거 같아 정리해두려 합니다. 다음에 기술하는 데이터 분석 절차는 특별할 거는 없이 상식적 수준에서 정리한 것이며, 앞으로 계속 갱신할 예정입니다.
데이터 분석 과정
1. 문제의 정의
데이터 분석을 한다는 것은 분석을 통해 뭔가 해결을 해야하는게 있다는 의미입니다. 간혹 경우에 따라서는 드물게 목적없이 일단 분석을 하게되는 경우도 있지만, 이는 지양해야한다고 생각합니다.
분석의 첫 단계는 바로 분석을 통해 해결하고자 하는 문제를 정의하는 것입니다.
2. 데이터 마트 준비
데이터 관련 용어는 항상 헷갈리는거 같습니다. 아래에서 사용하게 될 "데이터 마트"라는 용어만해도 그 의미가 정확히 와닿지는 않습니다. 비슷한 레벨의 용어로 "데이터 웨어하우스"도 있고, "데이터셋"이라는 용어도 떠오르네요.
저는 이 용어를 나름 다음과 같이 정의하고자 합니다. (혹시 아니면 알려주시면 감사하겠습니다.)
- 데이터 웨어하우스 : 한국어로 직역을 하면, "데이터 창고"라 할 수 있는데, 현재 분석가가 사용할 수 있는 모든 데이터들이 들어있는 데이터베이스라고 생각하면 될거 같습니다.
- 데이터 마트 : 데이터 웨어하우스보다 작은 개념으로 문제를 해결하기 위해 필요하다고 생각되는 데이터들만을 뽑아서 만든 데이터베이스 내지 테이블이라고 할 수 있습니다.
- 데이터셋 : 데이터 마트에서 각 데이터들을 가공해서 최종적으로 모델에 부어넣을 데이터베이스 내지 테이블이라고 할 수 있습니다.
1) 분석을 위해 필요한 데이터 정의
분석을 위해 필요한 데이터를 정의하는 방법은 다양하지만, 개인적으로 선호하는 방식은 "가설 기반의 정의"입니다. 풀어야할 문제를 해결하기 위한 가설들을 수립하고, 각 가설에 대해 검증하고 실제 모형에 적용하기 위한 데이터들을 정의하는 방식입니다.
이렇게 데이터를 정의하고 나면, 데이터 웨어하우스에 들어있는 데이터로 사용할 수 있는 데이터와 그렇지 않은 데이터가 구분되고, 후자에 대해서는 추가 수집하거나 모형에 반영하는 것을 포기하는 의사결정을 내리기도 쉽습니다. 아니면 필요한 데이터이나 현재 수준에서 불가하므로 추후 고도화 등을 수행할 때 반영하자는 한계점을 확인하기도 용이해집니다.
정리하면, "가설 수립 → 데이터 정의 → 활용가능여부에 대한 판단"을 수행하는 단계입니다.
2) 데이터 마트 생성
분석을 위해 필요한 데이터를 정의하였다면, 데이터 웨어하우스에서 해당 데이터들을 읽어와서 1차로 데이터 마트를 생성하는 작업을 수행합니다.
이 과정에서 각 변수들의 유형을 구분하여야 합니다. 대체로 분석에서 말하는 변수 유형은 크게 4가지입니다.
① 명목변수(Norminal variables) : 범주형 변수이며, 각 범주에 대해서 순서나 순위 등이 없이 모두 같은 레벨인 변수
② 순서변수(Ordinal variables) : 이 역시 범주형 변수이나, 명목변수와 달리 순서나 순위가 의미를 같은 변수
③ 간격변수(Interval variables) : 연속형 변수이며, 0이나 비율이 의미를 가지지 못하는 변수
④ 비율변수(Ratio variables) : 연속형 변수이나, 간격변수와 달리 0이나 비율이 의미를 가지지 변수 (예:키/몸무게)
3. 데이터셋 준비
데이터셋은 데이터 마트를 기반으로 변수에 대한 조작 및 탐색적데이터분석(EDA)을 통해 최종 모델에 반영할 데이터라 할 수 있습니다.
1) 데이터 전처리(前處理, preprocess)
데이터 전처리 단계에서는 결측치 값에 대한 확인, 이상치 제거 등의 작업을 수행하는 단계입니다. 주요 처리에 대한 사항과 방법을 정리해보도록 하겠습니다.
(1) 결측값에 대한 확인 및 imputation 수행
결측값은 쉽게 NULL 또는 ""인 관측치(observations)의 개수를 확인해보면 알 수 있습니다. 결측치가 발생하는 원인을 생각해보고, 결측값을 대체하거나 해당 obs는 아예 데이터셋에서 제거하는 것도 방법이 될 수 있습니다.
결측값을 대체하는 방법은 일반적으로 0으로 일괄 변환하거나, 중앙값 또는 평균으로 대체하기도 합니다. 때로는 회귀분석. KNN 알고리즘을 통해 결측값에 대해 추정하기도 합니다.
(2) 이상치(Outlier) 제거
연속형 변수의 경우, Summary Stats (최소값, 1분위수, 중앙값/평균, 3분위수, 최대값)에 대해 확인하고, Box-plot를 통해 이상치를 확인하고 제거해야할 경우 제거합니다.
범주형 변수의 경우에는 따로 이상치 제거라는 표현을 잘 사용하지는 않지만 연속형 변수의 그것과 유사한 작업을 수행할 필요가 있습니다. 각 범주별 관측치 개수를 확인하고 너무 적은 범주에 대해서는 다른 범주로 변경하는 과정이 바로 그것입니다.
(3) 서로 상관관계가 높은 변수 제거
변수들이 서로 상관관계가 높은 경우, 변수를 제거하는 것이 일반적입니다. 특히 모델링을 회귀분석을 할 예정이라면, 이 과정은 필수입니다. 그렇지 않으면 다중공선성 문제가 발생할 수 있기 때문입니다.
변수들 간 상관관계를 확인하는 방법은 변수간 상관계수행렬 및 Plotting를 통해 확인할 수 있습니다. 상관계수에는 대표적으로 피어슨 상관계수와 스피어만 상관계수가 있으며, 일반적으로 전자를 많이 사용합니다. 스피어만 상관계수는 각 변수의 실제 값이 아닌 순위를 이용한 상관계수라는 점이 특징입니다.
(4) 변수 축약
변수의 개수가 지나치게 많아서, 관측값보다 더 많은 변수가 있다고 한다면 변수 축약이 필요합니다. 변수 축약을 통해 자유도 문제를 해결할 수 있으며 변수 개수를 줄이는 장점도 있습니다.
단점이라면 변수 축약 후 새로이 만들어지는 변수에 대해 그 의미를 해석하는데 다소 어려움이 있을 수 있다는 점입니다.
2) 데이터 변환(transformation)
데이터 변환 작업은 변수변환, 표준화, 정규화 및 연속형변수의 범주화 등의 작업을 하는 과정입니다.
(1) 변수변환(Variables Transformation)
변수변환은 정규분포가 아닌 변수를 선형 변환 등을 통해 정규분포에 가까운 형태로 변환하는 것을 말합니다. 일반적으로 log변환을 많이 사용하며, Box-Cox 변환을 통해 최적 람다(lambda, λ)를 찾아서 변환하기도 합니다.
(2) 표준화(Standardization)
표준화는 각 변수 값에서 평균을 빼고 표준편차로 나눠주는 형태로 변환하는 것을 의미합니다. 이 변환을 거치면, 해당 변수는 평균이 0, 표준편차는 1를 가지는 분포로 전환됩니다.
각 변수간 단위가 서로 다를 때, 변수를 동일한 기준으로 비교하고자 할 때, 표준화 변환을 해줍니다. 이를 통해 특정 변수의 값이 커서 해당 변수가 모형에 과다하게 영향을 미치는 것을 방지할 수 있습니다..
(3) 정규화(Normalization)
정규화는 각 변수 값에서 변수의 최소값을 빼고, 최대최소 값의 차이로 나누어 주는 변환을 의미합니다. 이 변환을 통해 해당 변수는 0~1사이의 값을 가지게 됩니다.
정규화는 하나의 변수 내에서 특정 관측치가 어느 정도의 위치에 속하는지를 확인하고자 할 때 유용한 변환입니다.
(4) 연속형 변수의 범주화
연속형 변수를 그대로 모형에 반영하기보다는 이를 범주화 하는 것이 더 용이할 떄가 있습니다. 예를 들어, 나이라고 할 때, 실제 나이값을 그대로 반영하지 않고, 10대, 20대 등으로 범주화하는 것을 하나의 예라 할 수 있습니다.
3) 데이터 요약 및 시각화
위에서 데이터 변환 등을 다 수행하였으면 최종적으로 변수를 확인할 필요가 있습니다.
이를 확인하기 위해, 각 단일변수별로 Summary Stat도 다시 검토해보고, 히스토그램도 그려보아야 합니다.
다음으로는 모형에서 반응변수로 사용할 소위 Y변수와 각 예측변수 간 관계도 Plotting하여야 하며, 예측변수들 간의 관계 역시 Plotting으로 확인할 필요가 있습니다.
4) 데이터셋 생성
최종 확인이 끝나면 데이터셋으로 만들어서 모델에 반영할 준비를 마무리하게 됩니다.
'Playing with Data > 분석 방법론' 카테고리의 다른 글
데이터 분석의 4가지 유형 (0) | 2019.06.14 |
---|---|
결측치 처리 (0) | 2019.04.15 |