← 문제 목록/Max-Abs 스케일링
문제 해설

Max-Abs 스케일링

데이터 전처리 · easy

preview

Max-Abs 스케일링

17번 Min-Max 의 응용. 컬럼별 절댓값의 최댓값으로 나누기 만 합니다:

Xij=XijmaxjXijX'_{ij} = \frac{X_{ij}}{\max_j |X_{ij}|}

결과 범위: [1,1][-1, 1].

왜 이게 특별?

  • 부호 보존 (min-max 와 달리): 음수는 음수인 채로 스케일됨.
  • 0 이 0 으로 매핑됨 — 이게 중요. 희소 행렬(TF-IDF, bag-of-words)에서 0 이 절대 다수라서 0 을 보존해야 희소성을 유지하고 메모리/연산을 아낄 수 있음. Min-Max 는 (0 - min) / (max - min) 이라 0 이 아닌 값으로 매핑될 수 있어 희소성을 깨뜨림.
  • 평균 중심화도 안 함.

scikit-learn MaxAbsScaler 와 동일한 동작.

과제

함수 max_abs_scale(X) 를 완성하세요.

  • 입력: (N, D) 2D 배열.
  • 반환: (X_scaled, max_abs) — 스케일된 배열, 컬럼별 max |X| (shape (D,)).
  • 컬럼이 전부 0 이면 0으로 나누지 말 것 (결과 0 유지).

테스트 케이스

#이름검증
1각 컬럼 max |X_scaled| = 10 이 아닌 컬럼은
2부호 보존양수는 양수, 음수는 음수
30 은 00 위치는 여전히 0
4shape 유지입력과 동일
5max_abs 반환 shape (D,)
6전체 0 컬럼 방어나누기 오류 없음
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.