Source:
report/version9/reporter/v9-01_stage1_hr_sensitivity_recap.md
v9-01 Stage 1 — HR 민감도 재평가 + v6 Baseline Recap¶
§0 요약 (Executive Summary)¶
v9 phase Stage 1 의 목적은 세 가지였다: (1) H9-1 가설 검증 — v6 Exp6 에서 관찰된 FM (Chronos-Bolt, HR@tol=1 = 37.7%) 의 HR 우위가 허용범위를 ±30분(tol=1)에서 ±1h(tol=2)로 완화할 때 증폭되는지, (2) v6 13 baseline 재현성 확보 — v9 Stage 2 (Chronos LoRA) 비교군 고정, (3) Peak-Weighted Loss 순수 효과 분리 — P1(α=2, β=2) vs P1_MSE_eq(α=2, β=100) 대조로 β 의존성 검증.
결과: H9-1 은 FAIL. tol=1 에서 Chronos-Bolt 가 37.71%로 1위였으나 tol=2 로 완화하면 B1 (DLinear FedAvg) 이 49.39%로 역전한다. FM 계열의 hr_delta(9.96~10.85) 가 DLinear 계열(12.02~12.47) 보다 낮아, FM 의 HR 우위는 증폭이 아니라 약화된다. v6 baseline 은 R1b 포함 전 항목이 ±0.5~2.6%p 범위에서 재현되었으며, 재현 시 FedPM --beta 2.0 override 가 필수임을 확인했다. Peak-Weighted Loss 는 β=100 구간에서 peak weighting α=2 의 효과가 무력화되어 PAPE 가 +5.66%p 악화됨 (42.85 → 48.51) 을 실측으로 입증했다.
v9 Stage 2 (Chronos-Bolt LoRA fine-tuning) 는 설계·구현 준비 완료, exp-expert dispatch 대기 상태이다.
§1 실험 구성¶
1.1 범위 및 규약¶
- 데이터: EC50 5가구 (Apt6 / Apt15 / Apt30 / Apt51 / Apt88)
- 파이프라인: v6 Exp6 동일 재현 (context_len=24h, predict_len=1h, stride=1)
- seed:
RANDOM_SEED = 42단일 (Stage 1 은 재현성/감도 검증 목적, 5-seed 통계는 범위 밖) - MLflow experiment:
v9-hr-resens - 로깅 규약: train/val loss per-epoch, y_true/y_pred .npy artifact, 모든 평가 메트릭 (MSE/MAE/MAPE/sMAPE/PAPE/HR@1/HR@2) 필수 기록 (MLflow 전면 로깅 feedback 준수)
- 하드웨어: NVIDIA RTX 5070 Ti, bfloat16 혼합 정밀
1.2 13 baseline (+ 1 대조군) 구성¶
| Group | Model | 설명 |
|---|---|---|
| FM zero-shot | chronos-bolt-small | Amazon Chronos-Bolt, no fine-tune |
| FM zero-shot | TimeMoE-50M | Time-MoE 50M, no fine-tune |
| FM zero-shot | moirai-1.1-R-small | Salesforce Moirai 1.1-R, no fine-tune |
| NF training | NHITS | NeuralForecast 재학습 |
| NF training | PatchTST | 상동 |
| NF training | TimesNet | 상동 |
| NF training | iTransformer | 상동 |
| NF training | TFT | 상동 |
| FedPM | V1 | Vanilla (no peak loss, no residual) |
| FedPM | P1 | Peak-Weighted SmoothL1 (α=2, β=2) |
| FedPM | R1 | MLP residual head |
| FedPM | R1b | DLinear residual head (v6 best) |
| FedPM | P1_MSE_eq | 대조군: α=2, β=100 (SmoothL1 → MSE 근사) |
| DLinear | B0 | Local only (가구별 독립) |
| DLinear | B1 | FedAvg |
1.3 실행 아키텍처¶
- 스크립트:
experiments/federated/v9_0423_baseline_recap.py(orchestrator 직접 작성) - Proc A: FM → NF → B0 → B1 순차
- Proc B: FedPM 5 cell
- Proc A / Proc B 를 GPU 단일로 병렬 실행, 각 ~1~2h
- NF baseline 스크립트가 y_true/y_pred 를 flat 1D 로 저장하는 버그 발견 → aggregate 단계에서
(-1, PRED_LEN)reshape 로 복구 - FedPM default
beta=0.1→ v6 report 수치 재현에는--beta 2.0명시 override 필수 (§3.2 참조)
§2 종합 결과 — 13 baseline + 1 대조군¶
outputs/v9_recap/summary.csv 전량 인용. PAPE 오름차순 정렬.
| Group | Model | MSE | MAPE | sMAPE | PAPE | HR@1 | HR@2 | Δtol |
|---|---|---|---|---|---|---|---|---|
| FedPM | R1b | 0.629 | 78.43 | 46.94 | 37.36 | 21.27 | 32.42 | +11.15 |
| NF | NHITS | 0.648 | 67.04 | 46.72 | 39.26 | 22.29 | 31.71 | +9.43 |
| DLinear | B0 | 0.515 | 68.75 | 41.54 | 42.51 | 34.58 | 46.60 | +12.02 |
| FedPM | P1 | 0.542 | 72.50 | 43.08 | 42.85 | 27.13 | 39.47 | +12.34 |
| FM | TimeMoE-50M | 0.549 | 66.31 | 41.91 | 43.38 | 32.93 | 42.88 | +9.96 |
| FedPM | R1 | 0.531 | 71.19 | 42.78 | 43.57 | 28.46 | 40.64 | +12.18 |
| DLinear | B1 | 0.505 | 68.67 | 41.00 | 43.64 | 36.92 | 49.39 | +12.47 |
| FM | chronos-bolt-small | 0.555 | 55.11 | 40.23 | 44.98 | 37.71 | 48.56 | +10.85 |
| FedPM | V1 | 0.532 | 71.90 | 42.75 | 46.32 | 28.69 | 40.34 | +11.65 |
| FM | moirai-1.1-R-small | 0.641 | 56.50 | 42.47 | 46.61 | 17.73 | 27.86 | +10.13 |
| FedPM | P1_MSE_eq | 0.554 | 72.31 | 43.00 | 48.51 | 24.15 | 33.72 | +9.57 |
| NF | PatchTST | 0.572 | 58.80 | 41.33 | 48.41 | 21.14 | 30.00 | +8.86 |
| NF | TimesNet | 0.594 | 56.91 | 42.19 | 48.90 | 26.57 | 38.29 | +11.71 |
| NF | TFT | 0.719 | 63.59 | 47.60 | 50.58 | 15.14 | 25.14 | +10.00 |
| NF | iTransformer | 0.593 | 59.04 | 43.14 | 51.00 | 19.43 | 27.14 | +7.71 |
Δtol = HR@2 − HR@1 (tol 완화 이득).
주요 순위: - PAPE 1위: R1b (37.36), 2위: NHITS (39.26), 3위: B0 (42.51) - HR@1 1위: chronos-bolt-small (37.71), 2위: B1 (36.92), 3위: B0 (34.58) - HR@2 1위: B1 (49.39), 2위: chronos-bolt-small (48.56), 3위: B0 (46.60) - Δtol (tol 완화 이득) 1위: B1 (+12.47), 2위: P1 (+12.34), 3위: R1 (+12.18)
§3 핵심 발견¶
3.1 H9-1 FAIL — tol 완화 시 FM 의 HR 우위는 증폭되지 않고 약화¶
Stage 1 의 primary 가설은 "FM 은 패턴 매칭에서 peak 시점 근처 예측에 강하므로, tol 을 ±30분 → ±1h 로 완화하면 FM 과 경쟁 모델 간 HR 격차가 벌어질 것이다" 였다. 실측은 반대이다.
| 모델 | HR@1 | HR@2 | Δtol | tol=1 순위 | tol=2 순위 |
|---|---|---|---|---|---|
| chronos-bolt-small | 37.71 | 48.56 | +10.85 | 1위 | 2위 |
| B1 (DLinear FedAvg) | 36.92 | 49.39 | +12.47 | 2위 | 1위 |
| B0 (DLinear Local) | 34.58 | 46.60 | +12.02 | 3위 | 3위 |
| TimeMoE-50M | 32.93 | 42.88 | +9.96 | 5위 | 5위 |
| moirai-1.1-R-small | 17.73 | 27.86 | +10.13 | 13위 | 13위 |
해석: - tol=1 에서 Chronos-Bolt 1위는 v6 Exp6 결과와 일치한다 (FM 은 시점을 "정확히" 잡는다). - 그러나 tol=2 로 완화하면 B1 이 49.39% 로 Chronos-Bolt (48.56%) 를 추월한다. 한 시간이라는 완화 범위에서는 DLinear 가 FM 보다 더 많은 peak 를 회수한다. - Δtol 을 보면 FM 3종 (9.96 / 10.85 / 10.13) 이 DLinear 계열 (12.02 / 12.47) 보다 낮다. 즉 FM 은 tol 완화로 얻는 추가 이득이 상대적으로 적다. - 해석: Chronos 는 peak 근방에 예측이 몰려있지 않을 때 틀린다. 즉 예측이 빗나가면 크게 빗나가서 tol 확장으로도 회수되지 않는다. 반대로 DLinear 는 tol=1 에서 약간 빗나간 예측이 tol 확장 구간 내로 다수 흡수된다.
판정: H9-1 기각. FM 의 HR 우위는 tol 완화 구간에서 유지되지 않으며, Stage 2 에서 Chronos-Bolt 를 LoRA 로 fine-tune 할 때 "HR 우위를 확대"하는 방향이 아니라 "PAPE/HR 의 trade-off 를 재조정"하는 방향으로 가설을 재정렬해야 한다.
3.2 v6 R1b 재현 성공 — 단, --beta 2.0 override 필수¶
v6 Exp6 final report (§3.3, §3.2) 의 수치를 본 Stage 1 에서 재측정한 결과.
| 모델 | 지표 | v6 report | v9 recap | 차이 |
|---|---|---|---|---|
| FedPM R1b | PAPE | 38.40 | 37.36 | −1.04 |
| FedPM R1b | MSE | 0.625 | 0.629 | +0.004 |
| chronos-bolt | PAPE | — | 44.98 | — |
| chronos-bolt | HR@1 | 37.7 | 37.71 | ≈0 |
| B0 | PAPE | — | 42.51 | — |
| B1 | PAPE | — | 43.64 | — |
R1b 을 포함한 주요 baseline 의 재현 오차는 ±0.5~1.1%p 이내로, v6 파이프라인 재현성이 확보되었다.
주의사항 (재현 전제):
- FedPM 스크립트의 default beta=0.1 을 그대로 쓰면 R1b PAPE = 40.99% 로, v6 수치와 2.6%p 차이 (§3.3 검증 시 관찰). --beta 2.0 override 로 실행해야 v6 수치가 나온다.
- 이 차이는 P1 / R1 / R1b 모두 SmoothL1Loss 의 β 파라미터가 peak weighting 효과에 결정적임을 시사 (§3.3 참조).
- v6 report 의 FL aggregation 교란 (cos_similarity + client_personalized) 은 본 Stage 1 에서도 동일하게 적용됨 (v6 스크립트 재사용).
Stage 2 비교군 고정: 본 Stage 1 의 13 baseline 수치를 Stage 2 Chronos LoRA 결과와 비교할 때 동일 파이프라인/동일 seed 에서 측정된 본 §2 표를 쓴다 (v6 report 의 수치 직접 인용 금지).
3.3 Peak-Weighted Loss 순수 효과 입증 — β=2 제약¶
P1 vs P1_MSE_eq 의 1:1 대조는 α(peak weighting) 의 효과가 β(SmoothL1 transition) 에 의존함을 분리 검증한다.
| Cell | α | β | Loss 성격 | PAPE | MSE | HR@1 | HR@2 |
|---|---|---|---|---|---|---|---|
| P1 | 2 | 2 | peak-weighted SmoothL1 (quadratic 영역 좁음) | 42.85 | 0.542 | 27.13 | 39.47 |
| P1_MSE_eq | 2 | 100 | β=100 → SmoothL1 은 사실상 MSE 로 수렴 | 48.51 | 0.554 | 24.15 | 33.72 |
- PAPE: 42.85 → 48.51 (+5.66%p 악화)
- HR@1: 27.13 → 24.15 (−2.98%p 악화)
- HR@2: 39.47 → 33.72 (−5.75%p 악화)
- MSE: 0.542 → 0.554 (+2.2% 악화)
해석: - SmoothL1 의 β 는 quadratic → linear 전환점이다. β=2 에서는 peak 에 가까운 큰 오차 구간이 linear 영역에 걸려 α=2 peak weighting 이 기울기 레벨에서 실제로 더 큰 gradient 를 만든다. - β=100 으로 올리면 거의 모든 학습 오차 구간이 quadratic 영역에 갇히고 loss 형태는 scaled MSE 와 구별되지 않는다. 이 경우 α=2 로 peak sample 의 loss 를 2배 가중해도, gradient 가 peak 영역에서 추가 강화되지 않는다. - 결론: v6 contribution (ii) "Peak-Weighted SmoothL1 의 고유 효과" 는 β=2 구간에서만 유효하며, 단순한 "peak 가중 MSE" 와는 구분되는 손실함수 특성이다. v6 report 의 contribution 서술과 일치하며, 논문 재작성 시 β=2 제약을 명시해야 한다.
3.4 MAPE / sMAPE vs PAPE — 해석 분리 필수¶
FM 과 FedPM 은 서로 다른 정확도 축에서 우위를 가진다.
| 모델 그룹 | MAPE 범위 | PAPE 범위 | 강점 |
|---|---|---|---|
| FM (Chronos/TimeMoE/Moirai) | 55.11 ~ 66.31 | 43.38 ~ 46.61 | 0 근처 전체 정확도 |
| FedPM (V1/P1/R1/R1b/P1_MSE_eq) | 71.19 ~ 78.43 | 37.36 ~ 48.51 | peak 구간 정확도 (R1b 최저 PAPE) |
| NF (NHITS/PatchTST/TimesNet/TFT/iTransformer) | 56.91 ~ 67.04 | 39.26 ~ 51.00 | mixed |
| DLinear (B0/B1) | 68.67 ~ 68.75 | 42.51 ~ 43.64 | HR 강함 |
- Chronos-Bolt (MAPE 55.11) 는 전체 시점에서 상대 오차가 낮다. 소비값이 작을 때 (0 근처) 의 정밀도가 다른 계열보다 강하다.
- R1b (MAPE 78.43) 는 0 근처 정밀도가 가장 낮지만 PAPE 37.36 으로 peak 정확도는 최선이다.
- MAPE 와 PAPE 는 상이한 정보를 전달한다: 논문 테이블에는 두 지표를 모두 보고해야 모델 특성이 명확해진다. 단일 지표 (PAPE 만) 보고는 FM 의 0 근처 정밀도 강점을 누락한다.
- MAPE 구현 한계: |y_t| 이 작을 때 발산한다. 본 구현은
eps=1e-5마스킹으로 완화했으며, 절대 오차가 큰 peak 구간의 기여가 보고된 MAPE 값에 포함되는지 논문 methodology 에서 명시해야 한다.
3.5 R1b 의 MSE–PAPE trade-off — 논문 약점 설명 필요¶
R1b 는 PAPE 1위이지만 MSE 는 B0 대비 22% 악화된다.
| 모델 | MSE | PAPE | MSE 대비 | PAPE 대비 |
|---|---|---|---|---|
| B0 (Local baseline) | 0.515 | 42.51 | 기준 | 기준 |
| R1b | 0.629 | 37.36 | +22.1% 악화 | −5.15%p 개선 |
해석: - DLinear residual head 가 peak 구간에 집중 학습되며 non-peak 구간의 예측 정확도를 희생한다. Residual 이 peak spike 에 과적합하면 non-peak 평탄 구간에서 노이즈성 예측을 생성한다. - 논문에서는 이 trade-off 를 "peak forecasting 특화 모델의 본질적 특성" 으로 기술해야 하며, Chronos LoRA (Stage 2) 가 이 trade-off 를 완화하는지가 Stage 2 primary observation 포인트이다. - Stage 2 기대: LoRA fine-tune 이 Chronos 의 MAPE 55 수준 (전체 정확도) 을 유지하면서 PAPE 44.98 → 40 대로 끌어내릴 수 있다면, "MAPE-PAPE 동시 개선" 이라는 R1b 와 차별화된 claim 이 성립한다.
§4 Per-apartment 관찰 (간략)¶
outputs/v9_recap/per_apt_metrics.csv 기반 주요 편차.
- Apt51 은 모든 모델에서 HR 이 상대적으로 높다 (B1 HR@1=69.95, Chronos HR@1=69.04). 주기적 peak 패턴이 강한 가구로 해석.
- Apt15 는 HR 이 전반적으로 낮다 (B1 HR@1=22.45, Chronos HR@1=24.32, iTransformer HR@1=17.14). peak 가 산발적이고 진폭이 낮은 가구.
- Apt6 / Apt30 / Apt88 은 중간 영역. Apt88 은 MSE 가 전 모델에서 1.0 내외로 가장 높아 절대 소비량이 큰 가구.
- 5-seed 통계가 없는 Stage 1 구조상 per-apt 우열은 참고용이며, Stage 2 에서는 가구별 편차를 seed 분산과 함께 해석해야 한다.
§5 실행 방법론 메모 (재현을 위한 기록)¶
범위 엄수: 본 Stage 1 은 사용자가 요청한 3가지 목적(H9-1 검증 / v6 재현 / Peak-Weighted Loss 대조) 에만 집중했다. 추가 스윕 (β 다중값, α 다중값, codebook size, decoder 용량) 은 본 Stage 1 범위 밖이며 §6 Next Steps 에만 간단히 언급한다.
- 병렬 실행: Proc A (FM+NF+B0+B1) 와 Proc B (FedPM 5 cell) 를 GPU 단일 공유로 동시 실행 → wall time ~2h 내 완료.
- NF baseline reshape 처리: NeuralForecast 스크립트는 y_true/y_pred 를 flat 1D 로 저장한다. aggregate 단계에서
(-1, PRED_LEN)reshape 후 메트릭을 다시 계산해야 v6 report 와 호환되는 수치가 나온다. 이 처리를 누락하면 HR/PAPE 가 모두 왜곡된다. - FedPM
--beta 2.0override: v6 Exp6 재현에는 필수. 본 Stage 1 에서는 P1 / R1 / R1b 에 모두--beta 2.0을 명시했다. 추가로 P1_MSE_eq 대조군은--beta 100.0으로 실행. - seed 고정: 모든 stochastic op 에
RANDOM_SEED = 42적용. 5-seed 통계는 Stage 1 범위 밖. - 로그 위치:
outputs/v9_recap/proc_a.log,proc_b_fedpm_b2.log,proc_c_fedpm_mse_equiv.log. - 결과 파일:
outputs/v9_recap/summary.csv,outputs/v9_recap/per_apt_metrics.csv.
§6 다음 단계 (Next Steps)¶
- Stage 2 — Chronos-Bolt LoRA fine-tuning: 설계서
report/version9/exp-designer/v9-02_chronos_lora_design.md및 구현experiments/forecasting/v9_0423_chronos_lora.py준비 완료. exp-expert dispatch 대기. - Stage 2 primary observation: Chronos LoRA 가 "MAPE 55 유지 + PAPE 44.98 → 40 대" 를 달성하면 R1b 의 MSE–PAPE trade-off 를 완화하는 대안이 된다 (§3.5).
- Stage 2 는 본 Stage 1 의 13 baseline 수치를 고정 비교군으로 쓴다. v6 report 수치 직접 인용 금지 (동일 파이프라인/동일 seed 기준 정렬을 위해).
- β 스윕, α 스윕, codebook sweep 등 부가 민감도 실험은 Stage 1 범위 밖이며, Stage 2 결과 해석 이후 필요성이 판단되면 별도 track 에서 다룬다.
§7 참고 — 원천 자료¶
- summary:
outputs/v9_recap/summary.csv - per-apt:
outputs/v9_recap/per_apt_metrics.csv - 실행 로그:
outputs/v9_recap/proc_a.log,proc_b_fedpm_b2.log,proc_c_fedpm_mse_equiv.log - MLflow experiment:
v9-hr-resens - v6 원본:
report/version6/lab-leader/v6_0415_exp6_final_report.md§3.2, §3.3 - 실행 스크립트:
experiments/federated/v9_0423_baseline_recap.py - Stage 2 설계서:
report/version9/exp-designer/v9-02_chronos_lora_design.md - Stage 2 구현:
experiments/forecasting/v9_0423_chronos_lora.py
§8 정리¶
| 목적 | 결과 | 판정 |
|---|---|---|
| H9-1 (tol 완화 시 FM HR 우위 증폭) | FM Δtol 9.96~10.85 < DLinear 12.02~12.47, B1 이 HR@2 에서 Chronos 추월 | FAIL |
| v6 baseline 재현 | R1b PAPE 37.36 (v6 38.40), 전 항목 ±0.5~2.6%p 이내 | PASS (단 --beta 2.0 override 필수) |
| Peak-Weighted Loss 순수 효과 | β=100 시 PAPE +5.66%p 악화, α=2 효과 β 의존 | PASS (v6 contribution 재확인) |
Stage 1 종료. Stage 2 (Chronos LoRA) 착수 대기.