오늘 끝나면
결측치와 이상치
- ✓결측치와 이상치의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 결측치와이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
비어 있고 튀는 값 — 더러운 데이터 다루기 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
통계 · 35
결측치와
이상치
현실 데이터에는 빈칸과 튀는 값이 섞여 있다.
빈칸은 결측치고, 튀는 값은 이상치다.
이걸 어떻게 다루느냐가 분석 결과를 통째로 바꾼다. 무턱대고 지우면 편향이 생긴다.
빈칸과 튀는 값
교과서 데이터는 표가 꽉 차 있고 점들이 가지런하다. 현실은 그렇지 않다.
어떤 칸은 비어 있다. 응답자가 나이를 안 적었거나, 센서가 잠깐 끊긴 경우다.
이 빈칸이 결측치(missing value)다. 코드에서는 NA나 NaN, null로 찍힌다.
어떤 점은 무리에서 멀리 떨어져 튄다. 월급 칸에 999999, 키 칸에 250cm가 들어가는 식이다.
이 튀는 값이 이상치(outlier)다. 나머지 분포와 동떨어진 관측치다.
둘 다 그냥 두면 평균과 분산, 회귀선을 왜곡한다.
그렇다고 무턱대고 지우면 편향이 생긴다. 모델을 돌리기 전에 먼저 손봐야 한다.
빈 동그라미는 결측(값 없음), 채운 점은 이상치(무리에서 튄 값)
결측치, 삭제냐 대치냐
빈칸을 만나면 선택지는 둘이다. 그 행을 버리거나, 빈칸을 채운다.
삭제(deletion)는 결측이 있는 행을 통째로 뺀다.
간단하지만 표본이 줄고, 결측이 무작위가 아니면 편향이 생긴다.
대치(imputation)는 빈칸을 추정값으로 채운다.
평균 대치는 그 열의 평균을 쓴다. 분포가 한쪽으로 쏠리면 중앙값이 더 안전하다.
모델 대치는 다른 변수로 빈칸을 예측해 채운다(회귀, KNN). 정교하지만 가정이 들어간다.
어느 쪽도 공짜가 아니다. 삭제는 표본을 깎고, 대치는 분산을 깎는다.
단순 평균 대치는 그 열의 분산을 줄이고 상관을 흐린다. 다 같은 값으로 메우기 때문이다.
| 원본 | 대치 후 |
|---|---|
| 23 | 23 |
| 빈칸 | 31평균으로 채운 값 |
| 29 | 29 |
| 41 | 41 |
| 빈칸 | 31평균으로 채운 값 |
평균은 31. 삭제하면 행이 줄고, 평균 대치하면 그 열의 분산이 준다
왜 비었나, MCAR·MAR·MNAR
채우기 전에 물음 하나를 던진다. 이 칸은 왜 비었나?
MCAR(완전 무작위)는 결측이 아무 값과도 무관한 경우다. 삭제든 대치든 다 무난하다.
MAR(관측된 값에 의존)는 다른 칸으로 결측 여부가 설명되는 경우다. 그 칸을 써서 대치하면 된다.
MNAR(결측 자체가 정보)는 비어 있는 이유가 그 값 때문인 경우다.
고소득자가 소득을 일부러 안 적는 식이다. 단순 대치하면 편향이 그대로 박힌다.
핵심은 결측을 함부로 무작위라 단정하지 않는 것이다.
왜 비었는지 모르고 채우면 없던 패턴을 만들어 넣는 꼴이 된다.
결측을 함부로 무작위라 단정하지 말 것
이상치, 오류냐 진짜냐
이상치를 보면 먼저 물어야 한다. 이건 실수인가, 진짜인가?
후보는 규칙으로 잡는다.
IQR 규칙은 Q1−1.5·IQR 아래나 Q3+1.5·IQR 위를 의심한다.
z-점수는 평균에서 표준편차 3배 넘게 떨어지면 의심한다(|z| > 3).
그다음 정체를 본다.
오류면 제거가 맞다. 키 250cm, 나이 −3살은 입력 실수나 단위 착오, 센서 고장이다.
진짜면 보존해야 한다. 정말 연봉 10억인 사람, 정말 큰 지진이라면 그게 곧 신호다.
판단이 애매하면 지우지 말고 로버스트로 간다.
평균 대신 중앙값을 쓰고, 표준편차 대신 IQR이나 MAD를 쓴다. 튀는 값에 둔감한 통계로 바꾸는 길이다.
울타리 밖이라고 다 오류는 아니다. 정체부터 확인한다
처리가 통계·회귀선을 바꾼다
처리 방법을 바꾸면 평균과 회귀선이 따라 움직인다.
오른쪽 데이터에는 빈칸 하나와 튀는 점 하나가 박혀 있다.
이상치를 켜고 끄면 평균과 회귀선이 그쪽으로 끌려갔다 풀려난다.
결측을 삭제할 때와 평균으로 대치할 때, 평균과 기울기가 서로 다르게 나온다.
중앙값은 튀는 점이 있어도 거의 흔들리지 않는다. 로버스트하다는 뜻이다.
교훈은 하나다. 처리 방법은 중립이 아니라 결론을 바꾸는 선택이다. 그래서 기록을 남겨야 한다.
Q. 이상치를 무조건 다 지우면?
진짜 신호를 버려 편향이 생길 수 있다.이상치가 다 오류는 아니다. 부자 한 명, 초대형 주문, 희귀 사건은 진짜 값이다.
이런 진짜를 잘라내면 분포의 꼬리가 사라지고 분산이 줄어, 모델이 현실보다 좁게 학습된다.
그래서 먼저 오류인지 진짜인지 가린 뒤, 진짜면 살리거나 로버스트 통계로 간다.
이상치 보존, 아래로 튄 점이 평균을 끌어내려 회귀선이 눕는다. 평균(3.87)과 중앙값(3.58)이 0.29 벌어진다, 중앙값이 더 버틴다. 결측은 평균으로 채움.