전처리·연습 문제

Winsorization (quantile clipping) [medium]

문제 설명PROBLEM

preview

Winsorization [medium]

v1 value clip고정 경계 [lo,hi][lo, hi]. 실무에선 경계를 데이터로부터 자동 으로 잡는 게 더 robust — 이것이 Winsorization (Charles Winsor 이름):

x~i=clip(xi,Qp(x),Q1p(x))\tilde{x}_i = \text{clip}(x_i, Q_p(x), Q_{1-p}(x))

  • QpQ_p = pp-quantile.
  • 예: p=0.05p = 0.05 → 하위 5%, 상위 95% 경계로 clip → 양쪽 꼬리 5% 씩 축소.

Trimming 과의 차이

  • Trimming: 극단값을 버림 (샘플 수 감소).
  • Winsorization: 극단값을 경계값으로 대체 (샘플 수 유지).

Winsorization 이 N 보존하므로 downstream 분석 (변형된 t-test, 회귀 등) 에 더 적합.

장단점

  • ✅ Outlier 영향 완화: 평균, 분산이 덜 흔들림.
  • ✅ robust 통계에 유용.
  • ❌ 분포 왜곡: 경계 부분에 spike 생김.
  • ❌ p 선택 heuristic (보통 0.05 또는 0.01).

과제

함수 winsorize(x, p) 를 완성하세요.

  • x shape (N,) 또는 더 높은 차원 (axis 고려 없이 전체 quantile).
  • p: 양쪽 꼬리 비율, 0 ≤ p < 0.5.
  • 반환: 같은 shape, clip 된 배열.
  • 힌트: lo = np.quantile(x, p); hi = np.quantile(x, 1-p); return np.clip(x, lo, hi).

테스트 케이스

#이름검증
1shape 유지
2p=0 → 원본 그대로
3p=0.5 → 모두 중앙값양끝 경계가 같은 값
4극단값 안전 처리outlier 가 경계값으로 대체
5평균 robustness: mean(winsorized) 는 원본 mean 보다 outlier 덜 반영
6scipy winsorize 와 일치
7정렬된 입력에서 경계 인덱스 정확
개념 노트와 실수 포인트

데이터 전처리

  • 표준화(평균 0·분산 1) vs 정규화(0~1 범위).
  • ⚠️ train 의 통계(평균/표준편차)로 test 를 변환 — test 로 fit 하면 데이터 누수.