77. 결측치 (Missing Value) 처리 기법
⚠️ 이 문서는 고객 10만 명의 엑셀 데이터를 받아 AI 모델에 쑤셔 넣으려는데, 고객들이 귀찮아서 '나이', '연봉' 칸을 비워두고 제출한 텅 빈 구멍(결측치, NaN) 때문에 AI 알고리즘이 "계산할 수 없는 쓰레기 값입니다!"라며 그 자리에서 뻗어버리는 대참사를 막기 위해, **그 뻥 뚫린 빈칸들을 미련 없이 삭제해 버리거나, 평균값을 쑤셔 넣거나, 심지어 주변 친구들의 데이터를 보고 그 빈칸의 진짜 원래 값이 무엇이었을지 수학적으로 셜록 홈즈처럼 추리해서 채워 넣는(보간/대치법) '결측치 전처리(Imputation) 마법'**을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 데이터에 구멍(Null, NaN)이 나 있으면 머신러닝의 행렬 곱셈 자체가 에러를 내며 터진다. 이 구멍을 땜빵질(메우거나 지우는 짓)하는 가장 기초적이고도 모델 성능을 좌지우지하는 절대적인 데이터 청소(Cleansing) 과정이다.
- 가치: 나이가 비어있다고 평균인 '35살'로 모든 빈칸을 도배해 버리면 데이터의 뼈대(분산)가 쪼그라들어 AI가 멍청해진다. 고급 보간법(KNN, MICE)을 쓰면 데이터의 숨겨진 맥락(다른 컬럼의 힌트)을 살려 원본과 거의 99% 똑같은 가짜 데이터를 창조해 내어 AI의 예측률(Accuracy)을 멱살 잡고 끌어올린다.
- 기술 체계: 구멍 난 줄 자체를 삭제하는 무식한 단순 삭제(Listwise Deletion), 평균이나 0으로 대충 때우는 단일 대치(Mean/Median Imputation), 옆 사람의 데이터를 훔쳐보는 K-NN 보간, 수십 번의 회귀 방정식으로 빈칸을 추리하는 끝판왕 **다중 대치법(MICE)**으로 진화한다.
Ⅰ. 삭제와 평균 땜빵: 가장 무식하지만 빠르고 흔한 선택
구멍 난 옷을 버릴 것인가, 아니면 대충 테이프를 붙여 입을 것인가.
- 단순 삭제 (Listwise Deletion / Dropna):
- 엑셀 10만 줄 중에, '연봉' 칸이 하나라도 비어있는 줄(Row)을 통째로 가위로 잘라서 휴지통에 던져버린다.
- 장점: 남아있는 데이터는 100% 진짜(Fact) 꽉 찬 깨끗한 데이터뿐이라 통계가 깔끔하다.
- 치명적 단점 (데이터 증발): 빈칸이 전체 데이터의 30%를 차지한다면? 10만 개 중 3만 명의 소중한 고객 데이터(다른 칸에는 멀쩡히 적혀있던 성별, 구매 이력 등)까지 몽땅 쓰레기통에 휩쓸려 날아간다. 데이터가 돈인 AI 시대에 최악의 자원 낭비다. (비어있는 비율이 5% 미만일 때만 조심스럽게 쓴다.)
- 평균 / 중앙값 대치 (Mean / Median Imputation):
- 엑셀의 빈칸을 지우지 않고, 그 컬럼에 적혀있는 멀쩡한 사람들의 '평균값(예: 35세)'을 복사해서 모든 빈칸 수만 개에 똑같이
Ctrl+V로 도배해 버린다. - 평균의 함정(이상치)이 무서우면, 줄을 세워 정가운데 있는 '중앙값(Median)'을 쑤셔 넣기도 한다.
- 치명적 단점 (분산 파괴의 재앙): 3만 명의 빈칸이 몽땅 똑같은 쌍둥이 숫자인 '35'로 채워진다! 데이터의 개성(퍼진 정도, 분산)이 0으로 수렴하면서 뾰족한 산봉우리가 강제로 평평하게 뭉개져 버려, AI가 이 데이터를 보고 엉터리 편견(Bias)을 갖게 되는 심각한 부작용을 초래한다.
- 엑셀의 빈칸을 지우지 않고, 그 컬럼에 적혀있는 멀쩡한 사람들의 '평균값(예: 35세)'을 복사해서 모든 빈칸 수만 개에 똑같이
📢 섹션 요약 비유: 학교에서 학생 100명의 체육 점수를 내야 하는데 30명이 결석했습니다. 단순 삭제는 결석한 30명을 아예 자퇴 처리(데이터 삭제)해 버리고 남은 70명으로만 평균을 내는 극단적 학사 행정입니다. 학생 수가 줄어 학교가 망합니다. 평균 대치는 결석한 30명 모두의 성적표에 억지로 '반 평균인 50점'을 볼펜으로 일괄 복사해서 써넣는 짓입니다. 학생 100명은 유지되지만, 반에 50점짜리 복제 인간이 30명이나 증식해버려 1등과 꼴등의 개성(분산)이 뭉개지는 끔찍한 공산주의식 통계 왜곡이 발생합니다.
Ⅱ. K-NN 대치 (K-Nearest Neighbors Imputation): 유유상종의 법칙
"네 나이를 안 썼어? 네 옆에 서 있는 너랑 제일 비슷하게 생긴 3명의 나이를 베껴 쓰마!"
- 단순 땜빵의 한계를 깨는 이웃 훔쳐보기:
- '나이' 칸이 뻥 뚫려있는 홍길동의 키가 160cm, 연봉이 3,000만 원, 취미가 롤(게임)이라고 적혀있다.
- 단순 평균 대치는 여기에 전 국민 평균인 '45세'를 기계적으로 때려 박는다 (오류 발생 확률 높음).
- K-NN 보간법의 작동 원리 (유클리디안 거리):
- 머신러닝 엔진이 전체 10만 명의 데이터를 쫙 훑으면서, 키, 연봉, 취미 3개의 조건이 홍길동과 가장 수학적으로 똑같이 생긴(거리가 가까운 K명) 쌍둥이 인간 3명을 찾아낸다.
- 찾아낸 3명(이웃)의 나이를 까본다. "오호, 너희 3명은 20살, 22살, 21살이구나!"
- 엔진은 빈칸인 홍길동의 나이에 이 세 명의 평균인 **'21살'**을 찰떡같이 쑤셔 넣는다.
- 결과:
- 전체 무식한 평균(45살)을 때려 박는 것보다, 나와 가장 비슷한 부류(끼리끼리)의 속성을 빌려오기 때문에 원래 비어있던 진짜 데이터와 소름 돋게 비슷한 황금 가짜 데이터가 채워진다. (AI 정확도 폭발적 상승)
📢 섹션 요약 비유: K-NN 대치는 컨닝의 예술입니다. 수학 시험지(나이 컬럼)를 빈칸으로 낸 학생이 있습니다. 무식한 선생님(평균 대치)은 전교 평균인 50점을 억지로 줍니다. 똑똑한 AI 선생님(K-NN)은 이 학생의 국어(키), 영어(연봉) 점수를 봅니다. "어? 너 문과 1등 트리랑 똑같은 성적이네?" 선생님은 전교 문과 1, 2, 3등짜리 학생 3명(이웃)을 불러다 그들의 수학 점수 평균을 내서 빈칸에 채워 넣어줍니다. 전체 평균이 아닌, '너와 핏줄이 비슷한 놈들'의 데이터를 빌려오므로 오차율이 극단적으로 0에 수렴하는 스마트한 땜빵 기술입니다.
Ⅲ. MICE (다중 대치법): 결측치 추리(Imputation)의 끝판왕
한 번만 찍지 마라. 컬럼들끼리 서로를 예측하며 무한루프로 정답을 조여간다.
- MICE (Multiple Imputation by Chained Equations)의 등판:
- K-NN도 좋지만, 빈칸이 너무 많고 엉켜있으면 성능이 떨어진다. 현존하는 캐글(Kaggle) 등 데이터 사이언스 대회에서 결측치를 메울 때 가장 강력한 파워를 내는 '회귀 분석' 기반의 끝판왕 엔진이다.
- 연쇄 방정식 (Chained Equations)의 무한 핑퐁:
- 엑셀에 A, B, C 세 개의 컬럼이 다 군데군데 뻥뻥 구멍이 나 있다.
- Step 1: 일단 모든 빈칸에 무식하게 전체 평균값을 쑤셔 넣는다 (초기화).
- Step 2: A 컬럼의 빈칸만 원래대로 다시 비운다. 그리고 B와 C 컬럼의 숫자들을 재료로 써서 선형 회귀(머신러닝) 모델을 빡세게 학습시켜 A 빈칸을 1차로 기가 막히게 추측해 채워 넣는다.
- Step 3: 이번엔 B 컬럼을 비운다. 방금 채워 넣은 A와 기존 C를 재료로 회귀 모델을 돌려 B의 빈칸을 더 정밀하게 추측해 채운다.
- 이 짓(A $\rightarrow$ B $\rightarrow$ C)을 10번, 20번 미친 듯이 뱅글뱅글 핑퐁 치며 무한 반복(Chained)한다. 사이클이 돌 때마다 빈칸에 들어가는 가짜 숫자들의 정확도가 미친 듯이 정교해지며 수렴(Convergence)한다!
- 다중(Multiple) 세계선의 융합:
- 이렇게 무한 루프를 돌려 꽉 채워진 '완벽한 가짜 엑셀 파일'을 딱 1개만 만드는 게 아니다.
- 약간의 랜덤성(노이즈)을 섞어서 조금씩 다른 세계관의 가짜 엑셀 파일을 5개~10개(Multiple) 생성해 낸다.
- 이 5개의 엑셀 파일로 각각 AI 모델을 다 돌려보고, 최종 결과 5개를 하나로 통합(평균)해서 최종 결론을 내버린다. 평균 대치 시 발생했던 '분산 파괴' 딜레마를, 아예 5개의 평행 우주를 만들어 분산을 보존해 버리는 미친 역발상으로 100% 해결해 낸 절대 무기다.
📢 섹션 요약 비유: 엑셀 파일 곳곳에 먹물이 튀어 글씨(결측치)가 안 보입니다. MICE는 전설의 과학 수사대입니다. 첫날은 키를 보고 몸무게 글씨를 살짝 복원해 냅니다. 둘째 날은 어제 복원한 몸무게를 힌트 삼아 발 사이즈 글씨를 더 선명하게 복원해 냅니다. 이 짓을 20일 동안 뺑뺑이 돌리면(Chained Equations), 서로가 서로의 힌트가 되어 엑셀 파일 전체의 먹물이 감쪽같이 벗겨지고 원래 숫자에 99.9% 근접한 원본 엑셀이 기적처럼 되살아납니다. 게다가 혹시 모를 오차를 막기 위해, 글씨를 살짝씩 다르게 유추한 5가지 버전의 엑셀 복원본(Multiple)을 동시에 만들어서 최종 결재에 올리는 완벽주의 복원술의 극의입니다.