결측값 대치와 결측 표시, 비어 있는 데이터에서 무엇을 남길까요
페이지 정보

본문
머신러닝 데이터의 빈칸을 평균으로 채우면 입력 형태는 정리되지만, 원래 값이 없었다는 정보는 사라질 수 있습니다. 결측값 대치는 비어 있는 자리에 사용할 값을 정하는 작업이고, 결측 표시는 어떤 값이 원래 없었는지 별도 특성으로 남기는 작업입니다.
두 처리는 함께 사용할 수 있지만 목적은 다릅니다. scikit-learn 공식 문서를 바탕으로 대치값의 의미와 학습·평가에서 확인할 조건을 정리합니다.

AI 생성 삽화 · 개념 이해를 위한 AI 연출 이미지이며 실제 시스템 구성도나 측정 결과가 아닙니다.
핵심 정리
채운 숫자는 새로 관측한 사실이 아닙니다. 대치 규칙은 학습 자료에서 정하고, 결측 표시를 추가할지는 결측의 의미와 평가 결과를 함께 검토해 결정합니다.
1. 빈칸을 어떤 의미로 저장했는지 먼저 봅니다
가상의 이용 기록에서 사용 시간을 적지 않은 행과 사용 시간이 실제로 0인 행은 다를 수 있습니다. 전자는 값을 모르는 상태이고 후자는 관측값이 0인 상태입니다.
파일에서 둘 다 0으로 저장했다면 이후 처리만으로 원래 의미를 쉽게 복원할 수 없을 수 있습니다. 수집 단계에서 NaN이나 별도 표식, 빈 문자열 중 무엇을 결측으로 썼는지 확인해야 합니다.
같은 파일 안에서도 열마다 의미가 다를 수 있으므로 데이터 설명을 함께 읽습니다. 예를 들어 선택 질문에 답하지 않은 것과 장비에서 값이 전달되지 않은 것은 다른 확인 질문을 만듭니다.
결측이 있다는 사실만으로 데이터가 모두 쓸모없다고 판단하지 않습니다. 반대로 값이 채워져 보인다고 관측 품질 문제가 해결된 것도 아닙니다.
원본을 보존하고 어떤 값들을 결측으로 해석했는지 규칙을 남깁니다. 이후 실험의 차이를 설명하려면 시작 상태가 무엇이었는지 다시 확인할 수 있어야 합니다.
2. 대치값은 계산 규칙으로 만든 입력입니다
SimpleImputer는 열별 평균이나 중앙값, 최빈값 또는 정한 상수 같은 전략으로 결측을 채울 수 있습니다. 평균과 중앙값 전략은 숫자 자료에 적용하는 방식이며 모든 문자열 열에 그대로 쓸 수 있는 옵션이 아닙니다.
가상의 관측값이 2, 4, 9라면 평균 대치값은 5이고 중앙값은 4입니다. 비어 있는 행에 5를 넣었다고 그 사람의 실제 값이 5였다는 사실을 알아낸 것은 아닙니다.
계산 규칙이 선택한 대체 입력일 뿐입니다. 같은 열에서 많은 값을 동일한 숫자로 채우면 원래 관측과 대치 결과의 구분을 따로 생각해야 합니다.
어떤 전략이 항상 우수하다고 정하지 않고 자료의 의미와 모델 결과를 비교합니다. 사용한 전략, 결측 표식과 학습된 대치값을 기록하면 재현에 도움이 됩니다.
설명을 위해 제시한 숫자는 실제 자료의 통계가 아닙니다. 대치 후 파일과 관측 원본을 같은 이름으로 덮어쓰지 않는 편이 좋습니다.
3. 결측 표시는 원래 비어 있었는지를 남깁니다
MissingIndicator는 결측 여부에 대응하는 이진 정보를 만들 수 있습니다. 원래 값과 대치값이 같아 보이더라도 결측 표식이 있으면 둘의 출처를 구분할 수 있습니다.
가상의 사용 시간 열에 실제 5가 있던 행과 평균 5로 채운 행이 있다면 숫자만으로는 같지만 결측 여부는 다릅니다. 이것은 왜 비었는지까지 설명하는 정보는 아닙니다.
기록 누락과 응답 거절을 구분하려면 그에 맞는 원본 자료가 별도로 있어야 합니다. 결측 표시가 모델에 도움이 될 수 있다는 가능성과 모든 문제에서 성능을 높인다는 주장은 다릅니다.
표시가 데이터 수집 과정의 우연한 흔적을 반영하는지도 확인할 필요가 있습니다. 학습 때만 나타난 수집 방식이 서비스에서 바뀐다면 그 차이는 별도의 검토 항목입니다.
입문 실험에서는 대치만 한 경우와 표시를 함께 둔 경우를 같은 조건에서 비교하면 기능의 역할을 보기 쉽습니다.
4. 학습에서 정한 규칙을 평가 자료에 적용합니다
scikit-learn의 권장 실무 안내는 전처리에서도 평가 자료의 정보를 학습에 섞지 않도록 설명합니다. 평균 대치를 한다면 학습 구간에서 평균을 정하고 평가 구간에는 그 규칙을 적용합니다.
전체 자료의 평균을 먼저 구한 뒤 분할하면 평가 자료의 값이 대치값 계산에 참여합니다. 가상의 학습 관측이 2와 4이고 평가 관측이 100이라면 학습 평균 3과 전체 평균은 크게 다릅니다.
이 예시는 규칙을 만드는 자료 범위가 왜 중요한지 보여 주는 계산입니다. 교차 검증에서도 각 학습 구간 안에서 대치 규칙을 맞추는지 확인합니다.
파이프라인을 사용하는 것은 이런 처리를 모델 학습과 연결하는 데 도움이 되지만 이미 전체 자료로 바꿔 둔 값을 자동으로 되돌리지는 않습니다. fit과 transform이 어느 자료에 호출되는지 기록합니다.
성능 비교에서 대치 규칙 외의 설정도 바뀌었다면 같은 실험이라고 부르지 않고 변경 항목을 남깁니다.
5. 표시 열이 언제 생성되는지 확인합니다
SimpleImputer의 add_indicator=True는 대치 결과에 결측 표시를 덧붙이는 옵션입니다. 공식 문서는 학습 시 결측이 없었던 특성에는 나중에 결측이 생겨도 이 옵션의 표시 열이 추가되지 않는다고 설명합니다.
따라서 모든 원본 열에 항상 하나씩 표시가 생긴다고 가정하면 안 됩니다. 변환 후 열 이름과 개수를 확인하고 모델 입력 순서와 연결해야 합니다.
결측 표시를 별도 도구로 구성하는 경우에도 어떤 열을 대상으로 만들었는지 확인합니다. 학습 때 한 열 전체가 비어 있는 경우의 처리도 사용하는 설정과 버전에서 별도로 살펴야 합니다.
빈 열이 자동으로 원하는 형태로 유지될 것이라고 가정하지 않습니다. 원본 열 수와 변환 후 열 수를 기록하고 서비스 입력에서도 같은 구조를 기대하는지 점검합니다.
결측 처리 오류는 숫자가 잘못된 경우뿐 아니라 열의 의미가 어긋나는 형태로도 드러날 수 있습니다. 코드에서 열 위치만 외우기보다 변환 결과를 이름과 함께 확인하는 편이 좋습니다.
6. 모델 점수와 수집 상태를 함께 검토합니다
결측 처리를 비교할 때는 전체 점수와 함께 어떤 열에서 얼마나 비어 있었는지 기록합니다. 대치 후 점수가 좋아졌더라도 그 효과가 모든 사용 조건에서 유지되는지는 별도 평가가 필요합니다.
결측이 있는 사례와 없는 사례를 나누어 살펴보면 추가 질문을 찾는 데 도움이 될 수 있습니다. 이 비교는 자료 수가 충분한지와 평가 목적을 고려해 해석해야 합니다.
결측을 직접 다룰 수 있는 모델도 있으므로 모든 모델 앞에 대치를 반드시 넣는다고 정하지 않습니다. 사용하는 모델의 지원 조건을 공식 문서에서 확인합니다.
어떤 방법을 선택했든 원래 없던 값을 관측한 값처럼 보고하지 않습니다. 서비스에서는 입력 누락 비율이 달라지는지와 변환 과정이 기대한 구조를 만드는지 확인할 계획을 둡니다.
수집 오류를 고칠 수 있다면 전처리만 바꾸는 것과 다른 개선으로 기록합니다. 결측 처리는 빈칸을 없애는 완료 표시보다 어떤 정보를 바꿨고 무엇을 남겼는지 설명할 수 있어야 합니다.
7. 자주 묻는 질문
Q1. 평균으로 채우면 원래 값이 복원된 것인가요?
평균 대치는 정한 계산 규칙으로 입력값을 채운 것이며 실제 관측값을 알아낸 것은 아닙니다. 원본과 변환 결과를 구분하고 대치 전략 및 적용 범위를 기록합니다.
Q2. 결측 표시를 추가하면 항상 더 좋아지나요?
항상 성능을 높인다고 보장할 수 없으며 자료의 의미와 모델 조건에 따라 평가해야 합니다. 대치만 한 경우와 표시를 더한 경우를 같은 평가 자료에서 비교합니다.
Q3. 테스트 자료의 평균으로 빈칸을 채워도 되나요?
일반적인 지도학습 평가에서는 학습 자료에서 정한 전처리 규칙을 평가 자료에 적용합니다. 평가 자료를 이용해 규칙을 새로 맞추지 않았는지 fit과 transform의 대상을 확인합니다.
Q4. add_indicator를 켜면 모든 열에 표시가 붙나요?
SimpleImputer에서는 학습 시 결측이 없던 특성에 나중에 결측이 생겨도 해당 표시 열이 추가되지 않습니다. 변환 후 열 이름과 개수를 확인하고 필요한 표시 구성을 별도로 검토합니다.
참고 자료
- 이전글회귀 평가의 MAE와 RMSE, 큰 오차가 점수에 미치는 영향 26.10.12
- 다음글클래스 가중치와 재표본화, 불균형 학습을 조정하는 두 방법 26.10.09
댓글목록
등록된 댓글이 없습니다.