빈칸도 사건의 흔적이야
결측값은 단순히 잃어버린 숫자가 아닐 수 있어. 검사를 받지 않은 사람, 선택 항목을 건너뛴 고객, 아직 처리되지 않은 주문처럼 값이 비어 있는 이유 자체가 목표와 관련되기도 해. 따라서 모든 빈칸을 평균으로 덮기 전에 누가, 언제, 왜 값을 만들지 못했는지 확인해야 해. 결측 비율을 기간과 집단별로 나누어 보면 시스템 변경이나 접근성 차이도 드러나.
뜻을 먼저 정하고 대체해
‘구매한 적 없음’처럼 빈칸의 뜻이 분명히 0이라면 도메인 규칙으로 채워. 측정 실패나 알 수 없음이라면 중앙값이나 최빈값으로 대체하되 was_missing 같은 표시 열을 함께 둬 모델이 원래 비어 있었다는 사실을 알게 해. 여러 특성의 관계가 강하고 결측 과정도 이해한다면 반복 대치나 KNN 대치를 검토할 수 있지만, 복잡한 방식이 만들어 낸 확신까지 진짜 값으로 착각하면 안 돼.
학습 자료만 보고 대체값을 정해
전체 자료의 중앙값이나 이웃을 먼저 계산하면 검증과 시험 자료의 분포가 학습에 스며들어. 결측 대치기는 자료 분할 뒤 학습 부분에만 맞추고 파이프라인 안에서 적용해야 해. 제공 시점에도 같은 객체를 써야 노트북과 서비스의 값이 어긋나지 않아. LightGBM과 XGBoost처럼 결측 방향을 직접 학습하는 나무 모델은 대치 없이 비교해 볼 수 있어.
극단치는 오류일 수도 중요한 사례일 수도 있어
나이 420세는 입력 오류에 가깝지만 매출 상위 고객은 자료에서 가장 중요한 사람일 수 있어. 상자그림의 수염 밖이라는 이유만으로 삭제하지 마. 원본 기록, 단위, 수집 장치, 같은 객체의 다른 사건을 확인해 현실적으로 가능한 값인지 판단해야 해. 범위 검사를 통과하지 못한 값은 원천 수정이나 결측 처리 대상으로 보내고, 드물지만 가능한 값은 별도 평가 구간으로 보존해.
처리 방식은 모델과 손실에 맞춰
선형 모델은 큰 값 하나에 계수가 크게 흔들릴 수 있으니 로그 변환, 강건한 스케일링, 상·하한 자르기를 비교해. 나무 모델은 순서 기반이라 덜 민감하지만 극단 구간의 표본이 너무 적으면 불안정한 분할을 만들 수 있어. 값을 자른다면 경계와 이유를 기록하고, 자르기 전후에 중요한 집단의 오류가 어떻게 달라졌는지 확인해.
삭제는 마지막 결정이야
결측이나 극단치 행을 통째로 버리면 특정 사용자 집단이 자료에서 사라질 수 있어. 삭제 전후의 행 수, 목표 비율, 주요 집단 분포를 비교해. 운영에서는 같은 값이 다시 들어오므로 학습에서 버린다 해도 제공 시스템이 어떻게 응답할지 정해야 해. 거부, 기본값, 사람 검토 가운데 하나로 실패 동작을 명시해 둬.