
EDA는 말 그대로 데이터를 탐색하는 과정이다. 데이터를 바로 AI 모델에 학습시키기보다, 먼저 데이터의 특성과 패턴을 이해하고 이상한 점은 없는지 확인하는 것이 목적이다.
EDA(Exploratory Data Analysis)는
데이터의 특성과 패턴을 이해하기 위해 다양한 통계적 기법과 시각화를 통해 데이터를 탐색하는 과정이다.
데이터를 처음 받았을 때 가장 먼저 수행하는 작업이며, 데이터가 어떤 구조를 가지고 있는지 파악하는 단계라고 생각하면 된다.
EDA를 통해 다음과 같은 질문에 답할 수 있다.
좋은 AI 모델은 좋은 데이터에서 나온다.
만약 데이터에 문제가 있는데 그대로 모델을 학습시키면 정확도가 크게 떨어질 수 있다.
예를 들어
이런 데이터를 그대로 사용하면 AI 모델은 잘못된 패턴을 학습하게 된다.
따라서 데이터를 분석하기 전에 반드시 EDA를 수행해야 한다.
먼저 데이터가 얼마나 있는지 확인한다.
df.shape
출력
(1000, 8)
→ 1000개의 행과 8개의 열을 가진 데이터라는 의미이다.
df.info()
확인할 수 있는 정보
예시
Age int64
Height float64
Gender object
이를 통해 숫자형 데이터와 범주형 데이터를 쉽게 구분할 수 있다.
df.describe()
대표적으로 다음과 같은 정보를 제공한다.
예를 들어 혈당 데이터의 평균이 97이고 최대값이 380이라면 이상치가 존재할 가능성을 의심해볼 수 있다.
결측치(Missing Value)는 비어있는 데이터를 의미한다.
df.isnull().sum()
예시
Age 0
Height 5
Weight 2
Glucose 13
결측치가 많다면
등을 결정해야 한다.
이상치(Outlier)는 다른 데이터와 비교했을 때 지나치게 크거나 작은 값을 의미한다.
예를 들어
| 나이 |
|---|
| 25 |
| 30 |
| 28 |
| 27 |
| 210 |
210세는 일반적으로 존재하기 어려운 값이므로 이상치로 판단할 수 있다.
이상치는 평균을 왜곡하고 모델 성능에도 영향을 줄 수 있기 때문에 반드시 확인해야 한다.
데이터가 어떤 형태로 분포하는지도 매우 중요하다.
대표적으로 사용하는 그래프는 히스토그램(Histogram)이다.
df["Age"].hist()
히스토그램을 통해
등을 쉽게 확인할 수 있다.
두 변수 사이의 관계를 확인하는 것도 EDA의 핵심이다.
예를 들어
등의 관계를 분석할 수 있다.
대표적으로 사용하는 그래프는 산점도(Scatter Plot)이다.
df.plot.scatter(x="Height", y="Weight")
산점도를 보면 두 변수 사이의 상관관계를 직관적으로 확인할 수 있다.
숫자형 변수끼리는 상관계수(Correlation)를 계산할 수 있다.
df.corr(numeric_only=True)
결과 예시
| Age | BMI | Glucose | |
|---|---|---|---|
| Age | 1.00 | 0.28 | 0.46 |
| BMI | 0.28 | 1.00 | 0.57 |
| Glucose | 0.46 | 0.57 | 1.00 |
상관계수는 -1부터 1 사이의 값을 가지며,
을 의미한다.
EDA에서는 숫자로만 데이터를 보는 것보다 그래프로 확인하는 것이 훨씬 쉽다.
대표적으로 사용하는 그래프는 다음과 같다.
| 그래프 | 용도 |
|---|---|
| 히스토그램 | 데이터 분포 확인 |
| 막대그래프 | 범주별 비교 |
| 산점도 | 변수 간 관계 확인 |
| 박스플롯 | 이상치 확인 |
| 히트맵 | 상관관계 확인 |
그래프를 활용하면 데이터의 특징을 훨씬 빠르게 이해할 수 있다.
예를 들어 건강검진 데이터를 분석한다고 가정해보자.
EDA를 수행하면 다음과 같은 사실을 발견할 수 있다.
이러한 정보를 바탕으로 데이터 전처리 방법을 결정하고, 머신러닝 모델의 성능을 높일 수 있다.
EDA는 데이터를 단순히 살펴보는 과정이 아니라, 데이터를 이해하는 과정이다.
결측치와 이상치를 확인하고, 데이터의 분포와 변수 간 관계를 분석하면서 데이터가 가진 특성을 파악할 수 있다. 이러한 과정을 거쳐야 이후의 전처리와 머신러닝 모델 학습도 더욱 정확하게 진행할 수 있다.
다음 글에서는 데이터 시각화(Data Visualization)를 통해 Matplotlib과 Seaborn을 활용해 데이터를 효과적으로 표현하는 방법을 알아보자.