오늘 공부한 내용은 데이터 전처리 중에서도 결측값이랑 이상값 처리 파트다. 지난번 시험 때 이 부분을 대충 외우고 넘어갔던 게 기억나서, 이번엔 좀 제대로 짚고 넘어가 보기로 했다.

결측값부터. 무작정 다 지우면 되는 줄 알았는데, 그게 아니었다. 결측이 왜 생겼는지에 따라 완전무작위결측(MCAR), 무작위결측(MAR), 비무작위결측(MNAR)으로 나뉘고, 이 구분에 따라 처리 방법이 달라진다는 걸 오늘 처음 제대로 이해했다. 그냥 랜덤하게 빠진 거면 삭제해도 큰 문제가 없는데, 특정 조건에서 몰아서 빠진 거라면 삭제했을 때 데이터가 한쪽으로 쏠려버릴 수 있다는 얘기다.

대치 방법도 종류가 생각보다 많았다. 평균이나 중앙값, 최빈값으로 채우는 단순대치는 제일 쉽지만 분산을 줄여버리는 부작용이 있고, 이상치가 있는 분포라면 평균보다 중앙값이 낫다고 한다. 여러 번 대치값을 뽑아서 결과를 합치는 다중대치법은 훨씬 정교하다는데, 개념은 알겠는데 왜 굳이 여러 번 반복해서 합치는 건지 스스로 설명해보라고 하니 좀 막혔다. 불확실성 자체를 반영하려고 그런다는 건데, 말로는 이해했지만 손으로 계산하라면 못 할 것 같다.

이상값 쪽은 그나마 익숙했다. IQR로 사분위 범위 벗어나는 값 잡아내는 방법이랑, 평균에서 표준편차 몇 배 떨어졌는지로 보는 Z-score나 ESD 방식. 그런데 오늘 새삼 깨달은 건, 통계적으로 이상하게 튀는 값이라고 해서 무조건 지우면 안 된다는 점이다. 입력 실수로 잘못 들어간 값이면 고치거나 빼는 게 맞지만, 진짜로 드물게 일어난 사건이라면 그것도 엄연한 데이터라서 따로 변수를 만들거나 모형을 강건하게 만드는 쪽으로 접근해야 한다더라. 시험 문제로 나오면 “이상값은 무조건 삭제한다”를 정답으로 고르고 싶어지는데, 함정일 수도 있겠다 싶다.

오늘 느낀 건, 이 파트가 단순 암기보다는 “왜 이렇게 처리하는가”를 묻는 문제가 나올 것 같다는 거다. 다음엔 파생변수 만들기랑 변수 선택 쪽으로 넘어갈 예정인데, 오늘 헷갈렸던 다중대치법 부분은 예제 하나 정도 직접 풀어보고 넘어가야 할 듯하다.