데이터 분석에서 모델링보다 시간이 더 걸리는 작업이 전처리입니다. 빅데이터분석기사에서도 결측치와 이상치는 필기의 탐색 영역과 실기 작업형 양쪽에서 계속 등장하는 주제입니다. 이 글에서는 외우기보다 어떤 상황에 무엇을 고르는지 판단하는 기준을 중심으로 정리합니다.
이 글의 구성
- 결측치의 세 가지 유형과 처리 방법
- 이상치 탐지: IQR과 z-점수
- 수치 예시로 보는 평균과 중앙값의 차이
- 실무에서 놓치기 쉬운 점
결측치는 왜 생겼는지부터 본다
값이 비어 있다는 사실보다 비어 있는 이유가 더 중요합니다. 이유에 따라 대체 방법의 안전성이 달라지기 때문입니다. 교재에서는 보통 세 가지로 나눕니다.
- 완전 무작위 결측(MCAR): 결측이 다른 변수나 자기 값과 무관하게 발생합니다. 이 경우 결측 행을 삭제해도 편향이 크지 않습니다.
- 무작위 결측(MAR): 결측 여부가 관측된 다른 변수와 관련 있습니다. 예를 들어 특정 연령대에서 소득 문항 응답이 적은 경우입니다.
- 비무작위 결측(MNAR): 결측 여부가 비어 있는 값 자체와 관련 있습니다. 소득이 높은 사람이 소득을 적지 않는 경우가 대표적이며, 단순 대체로는 편향을 해결하기 어렵습니다.
결측치 처리 방법과 선택 기준
가장 단순한 방법은 삭제입니다. 결측 행이 전체의 일부이고 MCAR에 가깝다면 행 삭제(리스트와이즈 삭제)로 충분할 때가 많습니다. 다만 데이터가 적은 상황에서 행을 지우면 표본이 줄어 분석력이 떨어집니다.
대체 방법으로는 평균, 중앙값, 최빈값 대체가 기본입니다. 수치형이고 분포가 한쪽으로 치우쳤다면 중앙값, 범주형이라면 최빈값을 쓰는 것이 일반적입니다. 조금 더 정교한 방법으로는 K-최근접 이웃 대체, 회귀 대체, 다중 대체가 있습니다. 평균 대체는 분산을 실제보다 작게 만든다는 단점이 있다는 점도 함께 기억해 두세요.
정리: 결측 비율이 작고 MCAR에 가까우면 삭제, 치우친 수치형은 중앙값, 범주형은 최빈값, 변수 간 관계가 중요하면 KNN이나 회귀 기반 대체를 검토합니다. 결측 자체가 정보인 경우에는 결측 여부를 나타내는 변수를 따로 만들기도 합니다.
이상치 탐지: IQR과 z-점수
이상치를 찾는 대표 방법은 두 가지입니다. IQR 방식은 1사분위수(Q1)와 3사분위수(Q3)의 차이인 IQR을 구한 뒤, Q1 – 1.5×IQR보다 작거나 Q3 + 1.5×IQR보다 큰 값을 이상치로 봅니다. 분포 가정이 약해서 치우친 데이터에도 비교적 안정적입니다.
z-점수 방식은 (값 – 평균) / 표준편차를 계산해 절댓값이 3을 넘으면 이상치로 판단하는 방식이 흔합니다. 다만 평균과 표준편차 자체가 이상치의 영향을 받기 때문에, 극단값이 있는 데이터에서는 탐지력이 떨어질 수 있습니다.
수치로 확인해 보기
다음 10개 값을 예로 들겠습니다. 계산은 직접 실행해 확인했습니다.
12, 14, 15, 15, 16, 17, 18, 19, 20, 95
Q1은 15, Q3는 18.75이고 IQR은 3.75입니다. 상한은 18.75 + 1.5×3.75 = 24.375, 하한은 15 – 5.625 = 9.375이므로 95만 이상치입니다. 이 값 때문에 평균은 24.1까지 올라가 있지만 중앙값은 16.5입니다. 95를 제외한 나머지 9개의 평균은 약 16.2로, 평균이 이상치에 얼마나 민감한지 한눈에 보입니다.
사분위수는 계산 방식(보간 방법)에 따라 소수점 값이 조금 달라질 수 있습니다. 파이썬의 numpy와 pandas 기본값은 위 결과와 같습니다.
이상치를 찾았다면 바로 지우지 않는다
이상치가 곧 오류는 아닙니다. 입력 실수나 센서 오류라면 제거나 수정이 맞지만, 실제로 발생한 극단적인 거래나 고객이라면 오히려 분석의 핵심일 수 있습니다. 처리 방법으로는 제거, 상한·하한값으로 대체하는 윈저라이징, 로그 변환으로 영향 줄이기, 이상치에 강한 모델이나 스케일러 사용이 있습니다. 어떤 방법을 고르든 왜 그렇게 처리했는지를 남기는 것이 분석 결과를 설명할 때 도움이 됩니다.
실무에서 자주 하는 실수
첫째, 결측 대체 값(평균이나 중앙값)을 전체 데이터로 계산하는 것입니다. 모델 평가가 목적이라면 학습 데이터에서 계산한 값으로 평가 데이터도 채워야 합니다. 둘째, 결측을 무조건 0으로 채우는 습관입니다. 0이 실제로 의미 있는 값인 변수에서는 분포를 왜곡합니다. 범주형 변수라면 결측을 지우기보다 별도의 범주로 두는 편이 정보를 더 보존하기도 합니다.
셋째, 변수 하나씩만 이상치를 확인하는 것입니다. 키 190cm와 몸무게 40kg처럼 각각은 정상 범위인데 조합이 이상한 경우는 일변량 방식으로는 잡히지 않습니다. 산점도를 그리거나 다변량 방법을 함께 보는 습관이 필요합니다.
공부 팁 3가지
- 결측 유형 세 가지는 이름보다 예시로 구분해 두세요. 문제에서 상황만 주어지고 유형을 묻는 경우가 많습니다.
- IQR 계산은 작은 데이터로 손으로 한 번 해 보면 공식이 오래 남습니다.
- 실기 대비라면 pandas의 isnull().sum(), fillna(), quantile()을 직접 쳐 보며 손에 익히세요.
이 글은 학습용 정리이며 실제 시험 출제 범위와 다를 수 있습니다. 최신 시험 범위와 일정은 한국데이터산업진흥원 공식 공지를 확인하세요.