머신러닝과 빅데이터 분석/데이터 전처리

EDA(탐색적 자료분석)

Zoo_10th 2024. 3. 11.

EDA(Exploratory Data Analysis, 탐색적 자료 분석)

EDA(Exploratory Data Analysis, 탐색적 자료분석)은 데이터를 이해하기 위한 첫 단계다. 데이터로부터 인사이트를 발견하고, 데이터의 특성을 파악하여 이후 분석에 대한 방향성을 제시한다.

EDA를 수행하기 위해서는 기술 통계 분석, 시각화, 상관 분석 등 다양한 분석 기법을 사용한다.

1) EDA의 목적

EDA의 가장 큰 목적은 데이터에 대한 이해도를 높이는 것이다. 통계적 가설이나 모형에 집중하는 것이 아니라, 데이터의 통계량이나 시각화 등을 통해 데이터의 분포와 특성을 파악하여 데이터 분석 전 데이터에 대한 이해도를 높이는 것이다.

EDA를 위해서는 다양한 시각화가 필요하며, 데이터에 대한 다양한 질문을 통해 답을 얻는 과정을 반복해야 한다.

1. 기술 통계 분석

기술통계분석은 데이터의 기본적인 통계량을 계산하여 데이터의 특성을 파악하는 방법이다. 대표적인 기술통계분석 방법으로는 평균, 중앙값, 최빈값, 표준편차, 분산, 최댓값, 최솟값 등이 있다.

1-1. 데이터의 구조

EDA를 시작하여 가장 먼저 진행하는 것은 데이터의 구조 파악이다. 데이터의 전체 구조를 파악하여 해당 자료에 대한 목적을 이해하고 데이터 분석에 필요한 정보를 찾아 더 풍부한 분석을 할 수 있도록 한다.

1) Shape

가장 첫 번째로 확인해야 하는 목록은 데이터의 모양이다. 해당 데이터가 어떤 Shape을 가지고 있는지는 데이터 분석을 시작하기 전에 가장 먼저 확인해야 할 사항이다.

2) Information

정보(Information)은 데이터의 정보를 확인하는 과정으로, 데이터의 타입, 컬럼, 인덱스 등의 정보를 파악하여 전체 자료의 구조를 파악하고 해당 자료가 어떻게 구성되어 어떠한 목적으로 생산되었는지를 대략적으로 파악할 수 있도록 도와준다.

3) Describe

요약(Describe)은 데이터의 기초적인 통계량을 나타내준다. 수치형 데이터의 경우 평균, 중앙값, 4분위수 등을 나타내고 범주형 데이터의 경우 최빈값과 고유값 등을 출력한다. 해당 데이터의 기본적인 상태를 파악하기 위해 사용하며, 데이터의 주요 통계량을 빠르게 확인하고 파악할 수 있도록 한다.

1-2. 통계량

1) 중앙값(Median)

중앙값은 상위, 하위 50%에 해당하는 값으로 평균과 다르게 이상치에 민간하지 않다는 특징이 있어 중심경향치에 대표적인 값으로 사용된다. 중앙값은 데이터를 순서대로 나열하여 데이터 순서에 가운데 위치한 값을 사용하여 명목척도를 제외한 모든 척도에 사용이 가능하다.

2) 최빈값(Mode)

최빈값은 데이터의 가장 많은 값을 말하며, 특히 범주형 데이터에서 고유값을 카운트하여 필요한 값과 불필요한 값을 결정할 수 있는 기준을 제시할 수 있다.

value_counts() : 유니크한 값들의 갯수를 센다.

mode() : 최빈값을 찾음

3) 최소값과 최대값(Min & Max)

최소값과 최대값은 데이터의 범위를 지정한다. 즉 데이터의 크기를 파악할 수 있는 지표이다. 추가로 사분위수를 사용하여 이상치를 찾을 수 있는데 사분위수를 이용하면 데이터의 분포를 대략적으로 파악할 수 있는 특징이 있다.

범위(Range): 최대값 - 최소값

min() : 최소값을 찾는다.

max() : 최대값을 찾는다.

quantile(백분위) : 입력한 백분위수만큼의 해당하는 데이터값을 출력

4) 표준편차(Standard Diviation)

표준편차는 데이터의 퍼짐의 정도를 나타낸다. 평균으로부터 실제값들의 차이를 제곱한 분산을 제곱근을 사용하여 실제 데이터의 퍼짐정도의 평균을 알 수 있다. 이러한 흩어짐의 정도로 데이터가 얼마나 평균과 가깝게 분포하였는지 직관적으로 파악할 수 있다. std(ddof = 0또는 1) : 표준편차를 나타내며, 0은 모집단의 표준편차, 1은 표본의 표준편차이다. Numpy를 사용할 경우 기본값은 0이며, 데이터프레임의 std는 기본값이 1이다.

2. 시각화

시각화는 데이터의 패턴과 분포를 파악하는 데 매우 유용한 방법이다. 대표적인 시각화 방법으로는 히스토그램, 박스 플롯, 산점도, 막대 그래프, 선 그래프 등이 있다.

2-1. 수치형 데이터

1) 히스토그램(Histogram)

수치형 데이터를 구간별로 나누고 빈도수에 대한 막대그래프를 그려준다. 해당 그래프를 사용하여 데이터의 분포를 한눈에 파악할 수 있다.

2) JointPlot

두개의 변수에대한 산포도와 히스토그램을 동시에 표현할 수 있는시각화 그래프로 데이터의 분포와 상관관계를 시각적으로 확인할 수 있는 그래프이다.

3) PairPlot

PairPlot은 각 변수에 대해서 산점도와 히스토그램을 동시에 표현하는 방식을 말한다. 모든 변수들의 형태를 한눈에 볼 수 있고 분포를 함께 표시하여 데이터에 대한 많은 정보를 쉽게 이해할 수 있도록 시각화한 데이터이다.

2-2. 범주형 데이터

1) CountPlot

범주형 데이터의 가장 기본적인 카테고리별 데이터의 갯수를 시각화 할 수 있는 그래프이다.

2) BarPlot

카테고리 값에 따른 실수 값의 평균과 편차를 표시하는 기본적인 바 차트를 생성한다. 평균은 막대의 높이로, 편차는 에러바(error bar)로 표시한다.

3) BoxPlot

박스는 실수 값 분포에서 1사분위수(Q1)와 3사분위수(Q3)를 뜻하고 이 3사분위수와 1사분수의 차이(Q3 - Q1)를 IQR(interquartile range)라고 한다. 박스 내부의 가로선은 중앙값을 나타낸다. 박스 외부의 세로선은 1사분위 수보다 1.5 x IQR 만큼 낮은 값과 3사분위 수보다 1.5 x IQR 만큼 높은 값의 구간을 기준으로 그 구간의 내부에 있는 가장 큰 데이터와 가장 작은 데이터를 잇는 선분이다. 그 바깥의 점은 아웃라이어(outlier)라고 부르는데 일일히 점으로 표시한다.

4) ViolinPlot

중심선을 따라 대칭인 KDE를 표시해주고 중앙에 두꺼운 부분은 사분위수를 의미한다. 얇은 선은 신뢰구간을 표시해준다.

3. 상관분석

상관분석은 두 변수 간의 상관 관계를 파악하는 방법이다. 상관분석은 변수 간의 연관성을 파악하는 데 매우 유용하다. 예를 들어, 두 개의 변수가 얼마나 밀접하게 관련되어 있는지를 파악할 수 있으며, 이를 통해 두 변수 간의 인과관계를 파악할 수 있다.

EDA를 통해 데이터의 특성을 파악하고, 데이터의 문제점을 파악하여 이후 데이터 분석에 대한 방향성을 제시할 수 있다.

분석에 앞서 EDA를 충분히 수행하여 데이터의 특성을 파악하는 것이 중요하다.

더불어, EDA는 데이터 전처리 과정에서도 매우 중요하다. 데이터 전처리는 EDA를 통해 파악한 데이터의 특성을 바탕으로 결측치, 이상치 등의 문제를 해결하고, 데이터를 정제하는 과정이다. 이를 통해 분석에 사용할 수 있는 효율적인 데이터를 얻을 수 있다.

또한, EDA는 모델링 과정에서도 매우 중요하다. 모델링 과정에서는 EDA를 통해 파악한 데이터의 특성을 바탕으로 적절한 변수를 선택하고, 모델을 구축한다. 이를 통해 보다 정확하고 유의미한 모델을 만들 수 있다.

따라서, EDA는 데이터 분석 전반에 걸쳐 매우 중요한 역할을 한다. 충분한 EDA를 수행하여 데이터의 특성을 파악하고, 문제를 해결하는 것이 데이터 분석의 효율성과 정확성을 높이는 데 매우 중요하다.

1) Heatmap

4. 데이터 전처리

데이터 전처리는 EDA를 통해 파악한 데이터의 특성을 바탕으로 결측치, 이상치 등의 문제를 해결하고, 데이터를 정제하는 과정이다. 이를 통해 분석에 사용할 수 있는 효율적인 데이터를 얻을 수 있다.

4-1. 결측치 처리

결측치란 데이터에서 값이 빠져있는 것을 의미한다. 이러한 결측치는 분석 결과에 영향을 미치기 때문에 제거하거나 다른 값으로 대체해야 한다.

대체 방법으로는 평균, 중앙값, 가장 빈번한 값 등의 대푯값으로 대체하는 방법과, 회귀분석 등을 통해 예측된 값을 대체하는 방법이 있다.

4-2. 이상치 처리

이상치란 데이터에서 다른 값들과 동떨어진 값이다. 이상치는 분석 결과에 큰 영향을 미치기 때문에 제거하거나 다른 값으로 대체해야 한다.

이상치를 처리하는 방법으로는 다른 값들과의 거리에 따라서 제거하는 방법과, 대푯값으로 대체하는 방법이 있다.

4-3. 데이터 정규화

데이터 정규화란 서로 다른 스케일을 가진 데이터들을 통일된 스케일로 변환하는 것입니다. 이를 통해 데이터 분석에서 변수 간의 중요도를 비교할 수 있다.

1) Min Max Scaler

최소값과 최대값을 이용하여 0 ~ 1 사이의 값으로 스케일링할 수 있다.

2) Standard Scaler

standard scaler 는 평균값을 0으로 표준편차는 1로 만드는 scaling 역할을 한다. outlier 에 덜 영향을 받는 스케일링 방법이다. (min max 는 0~1 사이의 값으로 변형했지만 outlier 에는 취약함)

4-4. 데이터 변환

데이터 변환은 데이터의 분포를 변환하여 분석 결과를 개선하는 것이다. 주로 로그 변환, 제곱근 변환 등이 사용된다.

통계적 분석 또는 특정 모델링에서만 사용된다.

1) Normaliztion

Scaling의 경우는 데이터의 range 값을 변형시키는 방식이며, Normalization 의 경우는 좀 더 극진적인 변형을 일으킨다. 예를 들어서 normalization의 경우는 정규분포로 설명될 수 있도록 데이터를 변형 시키기도 한다.

이렇게 변형을 하면 정규분포의 데이터가 아니지만, 데이터를 변형시켜서 정규분포처럼 만들수 있으며, 통계적 분석 또는 특정 모델링에서 효과가 있을 수 있다.

2) yeo-johnson : positive 그리고 negative 값에 적용 가능하다.

3) box-cox : 오직 positive 값에만 적용 가능하다. 

728x90

댓글