AI/데이터
AI/ML 기반 데이터 분석 시리즈 5화 - 결측치와 이상치 처리 전략: 정제된 데이터를 만드는 기술
B컷개발자
2025. 5. 5. 13:42
728x90
AI/ML 분석에서 가장 자주 발생하면서도 모델의 성능에 치명적인 영향을 미치는 요인이 바로 **결측치(missing values)**와 **이상치(outliers)**입니다.
이번 글에서는 단순한 결측치 제거를 넘어서, 데이터의 의미를 훼손하지 않으면서도 정제력을 높이는 처리 전략을 심화된 예제와 함께 정리합니다.
1. 결측치(Missing Values)의 본질적 이해
1.1 결측의 유형
유형설명예시
MCAR (완전 무작위) | 데이터가 무작위로 누락 | 설문 응답자가 실수로 빈칸 남김 |
MAR (조건부 무작위) | 다른 변수에 따라 결측 발생 | 여성보다 남성이 소득 항목에 응답하지 않음 |
MNAR (무작위 아님) | 값 자체가 결측의 원인 | 고소득자가 민감해서 소득을 아예 작성 안 함 |
MNAR일수록 처리에 주의가 필요하며, 데이터 편향을 야기할 수 있습니다.
1.2 탐지 기법
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 결측치 개수 확인
df.isnull().sum()
# 결측치 비율 시각화
sns.heatmap(df.isnull(), cbar=False, cmap='viridis')
2. 결측치 처리 전략
2.1 제거 vs 대체 vs 예측
처리 방식장점한계
행/열 제거 (dropna()) | 간단, 빠름 | 데이터 손실 위험 |
평균/중앙값/최빈값 대체 | 쉬움, 통계적 안정성 | 왜곡 가능성 존재 |
그룹별 평균 대체 (groupby().transform('mean')) | 맥락 반영 | 세분화 안 될 경우 효과 미비 |
모델 기반 예측 대체 | 회귀모델로 예측 | 과적합 주의, 복잡도 ↑ |
KNN Imputer, Iterative Imputer | sklearn 기반 고급 대체 | 속도 이슈, 고차원에서 효과적 |
2.2 실전 예제
from sklearn.impute import KNNImputer
# 수치형 결측값을 KNN으로 대체
imputer = KNNImputer(n_neighbors=5)
df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)
3. 이상치(Outlier)의 탐지와 해석
3.1 이상치의 정의
이상치는 단순히 ‘크거나 작은 값’이 아니라, 데이터의 일반적인 분포에서 벗어난 예외 값입니다.
AI 모델은 이상치를 학습 오류로 간주하거나, 오히려 중요한 신호로 오해할 수 있습니다.
3.2 이상치 탐지 방법
기법설명
IQR 방식 | Q1 - 1.5×IQR, Q3 + 1.5×IQR 바깥 |
Z-score 방식 | z > 3 또는 z < -3 |
Robust Z-score | Median 기반 변형으로 노이즈에 강함 |
DBSCAN, Isolation Forest | 고차원 이상 탐지 (비지도 학습 기반) |
시각화 | Boxplot, Scatterplot, Distribution plot |
3.3 실전 예제
# IQR 기반 이상치 필터링
Q1 = df['income'].quantile(0.25)
Q3 = df['income'].quantile(0.75)
IQR = Q3 - Q1
# 조건 필터링
filtered_df = df[(df['income'] >= Q1 - 1.5*IQR) & (df['income'] <= Q3 + 1.5*IQR)]
# Robust Z-score (scipy 없이 수작업)
median = df['income'].median()
mad = (np.abs(df['income'] - median)).median()
robust_z = (df['income'] - median) / (1.4826 * mad)
df['robust_outlier'] = robust_z.abs() > 3
4. 이상치 처리 전략
전략적용 상황
삭제 | 이상치가 오류거나 미미할 때 |
클리핑 | 극단적 값은 상한/하한으로 조정 (Winsorizing) |
변환 | 로그, sqrt 변환으로 분포 압축 |
분리 처리 | 이상치 여부를 Feature로 분리 |
예외 클래스 라벨링 | 예측 모델에서 별도 분류로 고려 |
5. 결측치와 이상치를 함께 고려하는 전략
실제 프로젝트에서는 두 요소가 서로 연결되어 있는 경우가 많습니다.
예:
- 결측이 있는 행이 이상치를 포함하는 경우 → 제거 고려
- 이상치 행에 결측이 집중되는 경우 → 대표값 대체보다 예외처리 분기 필요
EDA 단계에서 반드시 결측 분포 vs 이상치 위치 간 관계 시각화를 수행해야 합니다.
6. 정제는 ‘제거’가 아닌 ‘조율’의 기술이다
좋은 분석가는 데이터를 무작정 정제하지 않습니다.
데이터가 전달하고자 하는 구조를 훼손하지 않으면서, 학습 가능한 상태로 조율하는 것이 핵심입니다.
결측치는 데이터의 공백, 이상치는 데이터의 강조입니다.
둘 다 무시할 수 없는 신호입니다.
다음 6화에서는 데이터를 학습 가능한 형태로 변환하기 위한
피처 엔지니어링과 스케일링, 인코딩 전략을 실습 위주로 다룰 예정입니다.
728x90