전처리·연습 문제

Robust Quantile Scaler (percentile 기반) [medium]

문제 설명PROBLEM

preview

Robust Quantile Scaler [medium]

v1 Min-Maxmin/max 기반 → 단 하나의 이상치가 전체 스케일을 망침. Robust scaler분위수(percentile) 기반:

Xij=Xijqlow, jqhigh, jqlow, jX'_{ij} = \frac{X_{ij} - q_\text{low, j}}{q_\text{high, j} - q_\text{low, j}}

  • q_low = np.percentile(X[:, j], p_low) (예: 5-percentile)
  • q_high = np.percentile(X[:, j], p_high) (예: 95-percentile)

값 범위:

  • 대부분의 값이 [0, 1] 에 들어옴.
  • 이상치는 < 0 or > 1 (clip 은 호출측 결정).

언제 쓰나

  • 센서 데이터, 로그 값 등 long-tail 분포.
  • scikit-learn RobustScaler 의 변형.
  • 이상치가 영향을 주면 안 되는 모든 전처리.

과제

함수 robust_scale(X, p_low=5, p_high=95) 를 완성하세요.

  • X shape (N, D).
  • 반환: 같은 shape, 열별로 percentile 기반 스케일.
  • q_high == q_low (모두 같은 값) 인 열 → 해당 열 0 반환 (nan 방지).
  • 힌트: np.percentile(X, p_low, axis=0) 등.

테스트 케이스

#이름검증
1shape 유지
2이상치 없는 데이터 → 대부분 [0, 1]
3이상치 추가해도 스케일 안정v1 vs v3 비교
4상수 열 → 0 (NaN 없음)
5p_low=0, p_high=100 → v1 min-max 와 동일
6q_low 위치 값 → 0, q_high 위치 값 → 1
개념 노트와 실수 포인트

데이터 전처리

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