← 문제 목록/Regression Stump (SSE 최소화) [medium]
문제 해설

Regression Stump (SSE 최소화) [medium]

결정트리 · medium

preview

Regression Stump [medium]

v1 분류 stump 는 0-1 오류 최소화. 회귀에는 SSE (sum of squared errors) 최소화로 같은 알고리즘을 일반화. GBM (Gradient Boosting Regressor) 의 기본 블록.

알고리즘

각 특성 jj 와 threshold tt:

  1. 왼쪽 = {i:Xi,jt}\{i : X_{i,j} \le t\}, 오른쪽 = 나머지.
  2. 각 영역 예측 = y 평균:
    • μl=mean(yleft)\mu_l = \text{mean}(y_\text{left}), μr=mean(yright)\mu_r = \text{mean}(y_\text{right})
  3. SSE: SSE(j,t)=iL(yiμl)2+iR(yiμr)2\text{SSE}(j, t) = \sum_{i \in L} (y_i - \mu_l)^2 + \sum_{i \in R} (y_i - \mu_r)^2

(j,t)=argminj,tSSE(j^*, t^*) = \arg\min_{j, t} \text{SSE}. 대응하는 μl,μr\mu_l, \mu_r 반환.

효율 O(NlogN)O(N \log N)

단순 구현은 O(N2D)O(N^2 D). 정렬 + 누적합 (cumsum,cumsum_sq)(cumsum, cumsum\_sq) 으로 O(ND)O(N D) 로 가능하지만, 이 과제는 정확성만 요구.

예측 규칙

def predict(x, feature, threshold, left, right):
    return left if x[feature] <= threshold else right

과제

함수 fit_regression_stump(X, y) 를 완성하세요.

  • X shape (N, D), y shape (N,) 실수.
  • 반환: (feature, threshold, left_mean, right_mean)int, float, float, float.
  • 어떤 특성도 threshold 로 의미있게 split 못하면 feature=0, threshold=min(X[:,0])-1, left_mean=right_mean=y.mean().

테스트 케이스

#이름검증
1반환 4-tuple
2명확 분리 (step function) → 정확 복원
3feature 0/1 혼합: 올바른 특성 선택다른 특성이 더 정보적
4리프 평균 = 실제 y 평균
5단일 값만 있는 특성 스킵
6threshold 가 데이터 중점
7SSE 는 parent variance 보다 작거나 같음
코드 작성
Loading...
실행 결과

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