결측치 처리

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.10
조회수
91
버전
v1

결측치 처리

개요

결측치 처리(Missing Data Handling)는 데이터 과학통계 분석에서 중요한 전처리 과정 중 하나로, 데이터셋 내에서 일부 값이 누락된 경우(NaN, NULL, 빈 값 등) 이를 어떻게 처리할지를 결정하는 절차를 의미합니다. 현실 세계의 데이터는 다양한 이유로 결측치를 포함할 수 있으며, 이를 적절히 처리하지 않으면 분석 결과의 편향, 모델 성능 저하, 해석 오류 등의 문제가 발생할 수 있습니다.

결측치는 단순히 제거하는 것 외에도 다양한 방법으로 처리할 수 있으며, 데이터의 특성과 결측 패턴에 따라 최적의 전략을 선택하는 것이 중요합니다. 본 문서에서는 결측치의 종류, 발생 원인, 그리고 대표적인 처리 기법들을 체계적으로 설명합니다.


결측치의 종류

결측치는 그 발생 메커니즘에 따라 세 가지 유형으로 분류됩니다. 이러한 분류는 적절한 처리 방법을 선택하는 데 핵심적인 기준이 됩니다.

1. 완전 무작위 결측 (MCAR: Missing Completely at Random)

  • 결측이 발생한 변수와 다른 모든 변수 간에 관계가 없음.
  • 예: 설문조사 중 일부 응답자가 실수로 질문을 빠뜨린 경우.
  • 이 경우 결측치 제거나 단순 대체 방법이 상대적으로 안전하게 적용될 수 있음.

2. 무작위 결측 (MAR: Missing at Random)

  • 결측 여부가 관측된 다른 변수에 의해 설명될 수 있음.
  • 예: 나이가 어린 응답자는 소득 정보를 기입하지 않을 가능성이 높음.
  • MAR의 경우, 관측된 변수를 활용한 보다 정교한 대체 방법이 필요함.

3. 비무작위 결측 (MNAR: Missing Not at Random)

  • 결측 여부가 해당 변수의 실제 값과 직접 관련됨.
  • 예: 소득이 매우 높거나 매우 낮은 사람이 소득을 기입하지 않는 경우.
  • 이 경우 단순한 대체 방법으로는 편향을 피하기 어렵고, 특수한 모델링 접근이 필요함.

결측치의 원인

결측치는 다음과 같은 다양한 원인으로 발생할 수 있습니다:

  • 데이터 수집 실패: 센서 고장, 설문 미응답, 시스템 오류 등.
  • 인간의 실수: 입력 누락, 형식 오류 등.
  • 의도적 비제공: 민감한 정보(소득, 건강 상태 등)에 대한 거부.
  • 데이터 통합 오류: 여러 소스에서 데이터를 병합할 때 발생하는 불일치.

결측치 탐지 및 분석

결측치 처리에 앞서, 데이터 내 결측치의 위치와 분포를 파악하는 것이 필수적입니다.

주요 탐지 방법

  • <a href="/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/pandas.DataFrame.isnull" class="wiki-link wiki-link-missing">pandas.DataFrame.isnull</a>().sum()을 사용하여 각 열의 결측치 수 계산.
  • 결측치 시각화: <a href="/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%8B%9C%EA%B0%81%ED%99%94/%EC%8B%9C%EA%B0%81%ED%99%94%20%EB%8F%84%EA%B5%AC/missingno" class="wiki-link wiki-link-missing">missingno</a> 라이브러리의 바 차트, 매트릭스, 히트맵 등을 활용.
  • 결측 패턴 분석: 결측치가 특정 그룹이나 조건에서 집중되는지 확인.

import missingno as msno
import matplotlib.pyplot as plt

msno.matrix(df)  # 결측치의 분포를 시각적으로 확인
plt.show()


결측치 처리 기법

1. 삭제 (Deletion)

a) 완전 사례 분석 (Complete Case Analysis, CCA)

  • 결측치가 하나라도 있는 행 전체를 삭제.
  • 단순하지만 데이터 손실이 클 수 있음.
  • MCAR 가정 하에서 상대적으로 안정적.

b) 변수 삭제

  • 결측치 비율이 매우 높은 변수(예: 70% 이상)를 제거.
  • 정보 가치가 낮을 경우 고려.

주의: MNAR인 경우 삭제 시 심각한 편향 발생 가능.


2. 대체 (Imputation)

a) 단순 대체 (Simple Imputation)

  • 평균/중앙값/최빈값 대체: 수치형 변수에 평균, 범주형 변수에 최빈값 사용.
  • 빠르고 간단하지만 분산을 과소평가할 수 있음.

df['age'].fillna(df['age'].mean(), inplace=True)

b) K-최근접 이웃 대체 (KNN Imputation)

  • 유사한 샘플의 값들을 기반으로 결측치 예측.
  • <a href="/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%95%EC%A0%9C/sklearn.impute.KNNImputer" class="wiki-link wiki-link-missing">sklearn.impute.KNNImputer</a> 활용 가능.
  • 계산 비용이 높지만 정확도가 높음.

c) 회귀 기반 대체 (Regression Imputation)

  • 다른 변수를 독립변수로 사용하여 결측 변수 예측.
  • 단점: 과적합 가능성과 불확실성 무시.

d) 다중 대체 (Multiple Imputation)

  • 결측치를 여러 번 샘플링하여 여러 개의 완전한 데이터셋 생성.
  • 대표적인 방법: MICE (Multiple Imputation by Chained Equations).
  • 통계적 정확도가 높으며, 불확실성을 반영 가능.

from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer

imputer = IterativeImputer()
df_imputed = imputer.fit_transform(df)


최신 기법 및 고급 접근

  • 딥러닝 기반 대체: GAN(Generative Adversarial Networks)을 활용한 결측치 생성 (예: GAIN).
  • 자동화된 전처리 파이프라인: <a href="/doc/%EA%B8%B0%EC%88%A0/%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/AutoML" class="wiki-link wiki-link-missing">AutoML</a> 도구들이 내장된 결측치 처리 전략 사용.

참고 자료 및 관련 문서


결론

결측치 처리는 데이터 과학 프로젝트의 신뢰성과 정확성을 결정짓는 핵심 단계입니다. 단순한 삭제보다는 데이터의 결측 메커니즘을 이해하고, 상황에 맞는 정교한 대체 기법을 적용하는 것이 중요합니다. 특히, 다중 대체나 머신러닝 기반 방법은 복잡하지만 더 나은 결과를 도출할 수 있습니다. 데이터 분석 전, 반드시 결측치의 성격을 탐색하고 적절한 전략을 수립해야 합니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?