콘텐츠로 이동

결측 데이터 (Missing Data)

핵심 요약: 빠진 데이터를 어떻게 처리하느냐가 모델 성능을 좌우한다. 핵심은 왜 빠졌는지를 파악하는 것 — 무작위로 빠진 것과 의도적으로 빠진 것은 처리 방법이 완전히 다르다.

  • 결측(Missing Data): 데이터셋에서 값이 비어 있는 셀. 엑셀에서 빈 칸, pandas에서 NaN으로 표시된다.
  • MCAR / MAR / MNAR: 결측이 발생한 이유를 분류하는 세 가지 메커니즘. 완전 랜덤(MCAR), 다른 변수에 의존(MAR), 결측값 자체에 의존(MNAR).
  • 대체(Imputation): 결측된 값을 추정하여 채워 넣는 것. 평균 대체, KNN 대체 등 다양한 방법이 있다.
  • 결측 지표(Missingness Indicator): “이 값이 비어 있었다”는 사실 자체를 0/1로 기록한 새 특성. 결측 여부가 예측에 도움이 될 수 있다.

병원 데이터에서 “검사 수치” 열의 30%가 결측이라고 하자:

처리 방법결과
행 삭제 (Listwise Deletion)학습 데이터 30% 손실 → 정확도 74%
전체 평균으로 대체분포 왜곡 → 정확도 79%
성별/연령대별 중앙값 대체그룹 특성 반영 → 정확도 84%
MICE (반복 다중 대체)변수 간 관계 보존 → 정확도 87%

“검사를 받지 않았다”는 사실 자체가 건강 상태의 단서일 수 있으므로, 결측 지표를 추가하면 추가로 1~2%p 향상되는 경우가 많다.

결측 데이터(Missing Data)는 실제 데이터셋에서 거의 항상 존재하는 문제이다. 결측이 발생하는 메커니즘을 이해하고, 적절한 전략을 선택하는 것이 모델 성능과 분석의 신뢰성에 직접적인 영향을 미친다. 무작정 행을 삭제하거나 평균으로 대체하는 것은 심각한 편향이나 정보 손실을 유발할 수 있다.

비유: 결측 데이터는 퍼즐의 빠진 조각과 같다. 빠진 조각 자체보다 왜 빠졌는지가 훨씬 중요하다. 바람에 날아간 것(MCAR)인지, 누군가 일부러 숨긴 것(MNAR)인지에 따라 퍼즐을 완성하는 전략이 완전히 달라진다.


결측 데이터를 체계적으로 다루는 이론적 프레임워크는 Roderick Little과 Donald Rubin이 1987년에 출간한 저서 *“Statistical Analysis with Missing Data”*에서 확립되었다. 이 책에서 Little과 Rubin은 결측 메커니즘을 MCAR, MAR, MNAR의 세 가지로 분류하는 체계를 제안했으며, 이 분류는 오늘날까지 결측 데이터 처리의 근간이 되고 있다.

이 분류 체계가 혁신적이었던 이유는, 결측을 단순히 “빠진 값”으로 보는 것이 아니라 결측이 발생한 메커니즘에 따라 적절한 처리 방법이 완전히 달라진다는 점을 수학적으로 증명했기 때문이다. 이전에는 대부분의 연구자가 결측 행을 삭제(listwise deletion)하거나 평균으로 대체하는 단순한 방법만 사용했지만, Little-Rubin 프레임워크 이후 MICE(Multiple Imputation by Chained Equations)와 같은 정교한 대체 기법이 발전할 수 있는 이론적 토대가 마련되었다.


메커니즘영문정의예시처리 난이도
MCARMissing Completely At Random결측이 완전히 랜덤설문지 일부 페이지 누락쉬움
MARMissing At Random다른 관측 변수에 의존남성이 체중을 덜 기입중간
MNARMissing Not At Random결측값 자체에 의존고소득자가 소득 미기입어려움

진단 방법:

  • Little’s MCAR test: MCAR 여부 통계 검정
  • 결측 패턴 시각화: missingno 라이브러리
  • 결측 여부와 다른 변수 간 상관관계 분석
방법적합한 경우주의점
평균 (Mean)MCAR, 정규 분포분포의 분산 축소, 왜곡
중앙값 (Median)왜도 있는 분포, 이상치분포 왜곡
최빈값 (Mode)범주형 변수빈도 편향
상수 (0 또는 -999)결측 자체가 의미모델이 특수값으로 학습
방법원리장점단점
KNN Imputationk개 유사 샘플의 가중 평균지역적 패턴 반영계산 비용, 차원의 저주
MICE (Iterative)각 변수를 다른 변수의 함수로 반복 대체변수 간 관계 반영수렴 불확실, 느림
Model-based결측을 예측 문제로 접근 (RF, 회귀)비선형 관계 포착구현 복잡

XGBoost, LightGBM은 결측값을 직접 처리한다. 학습 중 결측이 있는 샘플을 왼쪽 또는 오른쪽 분기 중 최적 방향으로 보낸다.

행 삭제 (Listwise Deletion):

  • 결측이 있는 행을 제거
  • MCAR에서만 편향 없음
  • 데이터가 충분하고 결측 비율이 낮을 때만 적합

열 삭제:

  • 결측 비율이 매우 높은 특성 제거 (보통 80% 이상)
  • 남은 정보가 충분한지 확인

결측 지표 (Missingness Indicator):

  • 결측 여부 자체를 이진 특성(0/1)으로 추가
  • “이 값이 결측이라는 사실” 자체가 예측에 유용할 수 있음

결측 처리 워크플로우 다이어그램

MICE (Multiple Imputation by Chained Equations) 상세

섹션 제목: “MICE (Multiple Imputation by Chained Equations) 상세”
  1. 각 결측 변수에 초기값(예: 평균) 대입
  2. 변수 X1X_1의 결측을 나머지 변수로 예측 (회귀)
  3. 변수 X2X_2의 결측을 나머지 변수로 예측 (업데이트된 X1X_1 포함)
  4. 모든 변수에 대해 반복
  5. 수렴할 때까지 2~4 반복

핵심: 변수 간의 상관관계를 보존하면서 결측을 대체한다.


상황추천 전략
결측 < 5%, MCAR단순 대체 또는 삭제
결측 5~30%, 변수 간 관계 중요MICE, KNN Imputation
트리 모델 사용내장 처리 + 결측 지표
MNAR 의심도메인 전문가 상담, 결측 지표 필수
결측 자체가 정보결측 지표 특성 추가

Titanic 데이터셋: 결측 처리가 생존 예측을 바꾸다

섹션 제목: “Titanic 데이터셋: 결측 처리가 생존 예측을 바꾸다”

Kaggle의 대표적 입문 데이터셋인 Titanic 생존 예측에서, Age(나이) 변수의 결측 비율은 약 20%에 달한다. 이 결측을 어떻게 처리하느냐에 따라 예측 정확도가 최대 10%p까지 변동한 사례가 보고되었다:

  • 단순 평균 대체: 전체 평균 나이(약 29.7세)로 대체하면, 어린이(생존율 높음)와 노인(생존율 낮음)의 구분이 무너져 정확도가 하락했다
  • Listwise deletion: 결측 행을 삭제하면 학습 데이터의 20%가 손실되어 모델이 과소적합(underfitting)되었다
  • 그룹별 중앙값 대체: 성별(Sex)과 객실 등급(Pclass)별 나이 중앙값으로 대체하면, “1등석 여성”과 “3등석 남성”의 나이 분포 차이를 반영하여 정확도가 유의미하게 개선되었다
  • MICE 적용: 다른 변수(요금, 동반 가족 수 등)를 활용한 반복 대체로 가장 높은 정확도를 달성했다

이 사례는 결측 메커니즘을 이해하지 않은 단순 처리가 모델 성능에 심각한 영향을 미칠 수 있음을 보여준다. Titanic의 Age 결측은 MAR에 가까웠다 — 3등석 승객의 나이 기록이 더 자주 누락되었기 때문이다.


  1. Listwise deletion의 남용: 결측 비율이 높을 때 행을 무작정 삭제하면 데이터의 대량 손실과 편향이 발생한다. MAR/MNAR에서는 특히 위험하다.

  2. 평균 대체가 무해하다: 평균 대체는 분포의 분산을 축소하고, 변수 간 상관관계를 왜곡한다. 결측 비율이 높을수록 문제가 심각해진다.

  3. 결측 처리를 전체 데이터에서 수행: 대체 값(평균, KNN 등)을 전체 데이터에서 계산하면 데이터 누수가 발생한다. 학습 데이터에서만 계산해야 한다.

  4. MCAR을 가정: 대부분의 실제 데이터에서 결측은 MCAR이 아니다. 결측 메커니즘을 검증하지 않으면 잘못된 처리가 편향된 결과를 초래한다.

  5. 결측의 정보적 가치 무시: “이 환자가 검사를 받지 않았다”는 사실 자체가 건강 상태에 대한 정보일 수 있다. 결측 지표 특성의 추가를 항상 고려하라.