Captain's Log
← Observatory
Observatory·

이상치를 어떻게 다룰까 — 데이터 척도와 IQR

House Prices 데이터에서 Boxplot·Scatter로 이상치를 눈으로 찾고, IQR로 경계를 계산해 '제거할 것인가 클리핑할 것인가'를 판단하며 처리 전/후 분포를 비교한 기록.

TrainingDataPreprocessing

이상치는 '틀린 값'이 아니다

이번 실습의 출발점은 관점의 전환이었다. 이상치(outlier)는 무조건 지워야 할 오류가 아니라, 왜 튀는지 먼저 물어봐야 할 신호다.

눈으로 먼저 확인

  • describe() 로 어느 변수가 오른쪽 꼬리가 긴 분포인지 파악 (SalePrice가 대표적)
  • SalePrice, LotArea, GrLivArea, GarageArea 를 각각 Boxplot 으로
  • GrLivArea vs SalePrice Scatter 로 "면적은 큰데 이상하게 싼 집"을 찾기

IQR로 경계 계산

Q1 = df["SalePrice"].quantile(0.25)
Q3 = df["SalePrice"].quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR

이 범위를 벗어나는 행의 개수와 전체 대비 비율(%) 을 구했다. 여러 면적 변수에 같은 절차를 반복 적용하며 손에 익혔다.

제거 vs 클리핑

핵심 의사결정.

  • 제거(drop): 이상치 행을 통째로 버림 — 데이터가 줄지만 깔끔
  • 클리핑(clip): 경계값으로 눌러 담음 — 데이터 수는 유지, 극단만 완화

정답은 없고 맥락에 달렸다는 것, 그리고 처리 전/후 분포를 반드시 비교해 영향을 확인해야 한다는 것을 배웠다.

정리

"면적은 큰데 싼 집"처럼 이상치 뒤에는 종종 설명 가능한 이야기가 있다. 기계적으로 지우기 전에 산점도로 한 번 들여다보는 습관 — 이게 이후 EDA로 자연스럽게 이어졌다.