모델 4종 — 답을 만드는 네 가지 방식
넷은 무작위 선택이 아니라 "답을 만드는 방식"의 사분면: 전역 함수형(Linear, SVR) vs 공간 분할형(RF, HGB), 분할형 안에서 평균(RF) vs 잔차 보정(HGB). 체질이 정반대인 모델들이 Stage 1에서 한 점에 수렴 → 천장은 데이터의 것(H1). Stage 2에서 같이 뛰어오름 → 효과는 feature의 것(H2).
1. Linear Regression (OLS) — 가중합이라는 가장 단순한 가설
원리: , 제곱 오차 최소화. 미분 = 0에서 닫힌 해:
가정의 대가: 선형성·등분산·full rank — ① 데이터 분포 축 전체가 사실 이 모델의 가정 점검이었다. 등분산 위반 → log, rank 결손 → drop='first', IR 3.05% → 가중합 표현의 충분성 보증.
체질: high bias · low variance. 계수 해석 가능 (OneHot 가중합 = "기준 대비 그룹 보정").
실측: Stage 1 0.7906 (천장 근접). CV fold std 0.060 — 유일하게 시즌 구성에 민감한 체질(③ 축 발견) → Stacking meta +0.06의 낮은 신임.
2. SVR (RBF kernel) — "충분히 가까우면 무시한다"는 손실
원리 1 — ε-insensitive loss: 예측 주위 폭 ε의 관(tube). 관 안 오차 = 0, 관 밖 점들만 해에 기여(= support vectors). 제곱 손실과 철학이 다름: "대충 맞으면 됐고, 크게 벗어난 놈만 본다".
원리 2 — RBF kernel: — 명시적 고차원 변환 없이 유사도로 비선형 곡면 생성(kernel trick). 가까운 점들의 의견을 부드럽게 섞음 → smooth.
비용: kernel 행렬 — 일별 913K행이면 6TB로 불가능. 주간 reframing이 이 모델의 생존 조건 (full train 531초, CV fold당 35초). 거리 기반 → StandardScaler 필수.
설정·실측: C=1.0, gamma='scale', log 적용. Stage 1 0.7913 → Stage 2 0.9835. Stacking meta −0.0099 — "HGB가 아는 걸 더 느리게 알 뿐"이라는 자백.
3. Random Forest — 손떨림을 평균으로 지우는 설계
원리: decision tree(공간을 조건문으로 분할, 영역별 평균 예측)는 가정이 거의 없고(등분산 불필요, 상호작용 자동 — ① 축 tree 면제의 이유) 표현력이 높지만 분산 덩어리 — 데이터가 조금 바뀌면 분기가 통째로 바뀐다.
bagging의 처방: bootstrap 표본마다 tree를 키워 평균. 평균이 분산을 1/k로 줄이는 조건("오차의 독립")을 설계로 제조 — 데이터도 다르게(bootstrap), 분기마다 보는 feature도 다르게(무작위 부분집합) 해서 tree 간 상관을 일부러 끊는다. Voting이 우리 4모델에서 실패한 이유(오차 상관)를 내부에서 미리 해결해 둔 모델.
체질: variance를 지우는 기계 (bias는 tree 수준 유지).
설정·실측: n_estimators=100, 학습 1.7초. Stage 1 best 0.7917. Stacking meta +0.17 (2등 신임).
4. HGB (Histogram-based Gradient Boosting) — 오차를 깎는 릴레이
원리: RF가 병렬 평균이라면 boosting은 직렬 릴레이 — 두 번째 tree는 첫 tree의 잔차를, 세 번째는 남은 잔차를 학습. 매 단계가 "못 맞힌 부분"만 노림 → 반복할수록 bias가 깎인다 (RF와 정확히 반대 방향의 기계). "gradient"의 의미: 잔차 = 제곱 손실의 기울기 — 임의 손실로 일반화하면 함수 공간의 경사하강.
제동 장치: 과적합 성향이 기본값 → shrinkage(작은 걸음) + 얕은 tree + early stopping (max_iter=300은 상한, 실제 정지는 val 기준 — loss curve의 iter 82, ④ Q3).
"Histogram": 연속 feature를 256 bin으로 양자화 → 분할 후보 탐색 급감 → boosting인데 1.2초.
실측 — 이 프로젝트 서사의 백미: Stage 1 꼴찌(0.7884) → Stage 2 best(0.9856) → 튜닝 후 최종 Test 0.9858. 해석: Stage 1은 정답이 그룹 평균이라 표현력이 점수로 환전되지 않는 시험(정칙화 때문에 미세 손해). Stage 2에서 lag·계절·그룹이 얽힌 비선형 구조가 생기자 잔차 깎는 능력이 값을 받음. Stacking meta +0.78의 압도적 신임.
정리 표
| 답을 만드는 방식 | 체질 | Stage 1 | 학습 시간 | 비고 | |
|---|---|---|---|---|---|
| Linear | 전역 가중합 (닫힌 해) | bias↑ var↓ | 0.7906 | 0.1s | log 적용, 시즌 민감 (std 0.060) |
| SVR (RBF) | 유사도 기반 smooth 곡면 | 중간, smooth | 0.7913 | 531s | log 적용, O(n²) — 주간화로 생존 |
| RF | tree 병렬 평균 (bagging) | var를 지움 | 0.7917 | 1.7s | 상호작용 자동, meta +0.17 |
| HGB | tree 직렬 잔차 보정 (boosting) | bias를 깎음 | 0.7884 | 1.2s | Stage 2 역전 → 최종 0.9858, meta +0.78 |
예상 질문
- "왜 이 4개인가?" → 수업 도구 범위 안에서 "답을 만드는 방식"의 사분면을 덮도록 — 체질이 다른 모델들이 같은 결론을 낼 때 그 결론은 모델이 아니라 데이터의 성질이 된다(Stage 1 수렴, Stage 2 동반 상승의 논거).
- "HGB가 Stage 1에서 꼴찌였는데 왜 버리지 않았나?" → Stage 1은 정답(그룹 평균)이 단순해 표현력이 변별되지 않는 시험. 모델 선택은 표현력이 필요해지는 Stage 2 이후로 미루는 게 설계였고, 실제로 역전됐다.
- "RF와 HGB 둘 다 tree인데 무엇이 다른가?" → 같은 재료, 반대 방향 — RF는 독립적 tree들의 평균으로 variance를 지우고, HGB는 순차적 잔차 학습으로 bias를 깎는다. ④ 축의 진단(bias 96.3%)에서 HGB가 최종 모델이 된 것과 정합.
- "SVR의 ε-tube가 SMAPE와 어울리는 이유?" → 작은 오차를 무시하는 손실 철학이 "±5% 정도는 운영상 무해"라는 수요예측 감각과 닮았다 — 다만 본 과제 평가는 R²·SMAPE 원 스케일 통일이라 손실 차이는 점수 차이로 거의 안 드러났다.