← → 슬라이드 이동 · 화면 좌/우 클릭
r 현재 슬라이드 애니메이션 리플레이
t 라이트/다크 · f 전체화면 · ? 이 도움말
모든 수치는 실행 산출물(results/)에서 인용 — 창작 0
주어진 문제를 업무 언어로 재정의하고, 데이터로 검증한 판단의 기록 — 역기획형 보고 흐름
주어진 문제(건설 비용 예측)를 내가 정의한 업무 문제처럼 재구성했다.
Construction Estimation Data — 1,000행 × 6열, train 800 / test 200 (random_state=42)
| 컬럼 | 의미 | 비고 |
|---|---|---|
| Material_Cost | 재료비 | 결측 5% (54행) |
| Labor_Cost | 인건비 | 결측 5% (51행) |
| Profit_Rate | 이익률 (10·15·20·25·30%) | 이산값 |
| Discount_or_Markup | 할인(−)/할증(+) 조정값 | — |
| Policy_Reason | 조정 정책 사유 | 무정보 확인 → 모델 제외 |
| Total_Estimate | 최종 견적 금액 | 예측 타깃 y |
의사결정에 쓴 발견 3가지만 보고한다 (전체 EDA는 분석 노트북 참조).
Material_Cost 0.80 = 상관 1순위 — 이후 피처 선택과 계수 해석의 기준이 된다
수치 4개 열에 각 5% 결측 → 처리 전략이 곧 성능을 좌우한다는 신호 (슬라이드 5·6)
명시된 공식으로 재계산한 최대 오차가 사실상 0 → 노이즈 없는 결정식 데이터. 문제의 난이도는 "관계 찾기"가 아니라 "데이터 품질"
큰 금액 = 큰 프로젝트(정상 관측) → 제거보다 보존 + 모델로 설명을 선택
전처리는 모델이 학습 가능한 형태로 바꾸는 설계 과정이다 — 판단 3가지.
결측 5%(Material 54행·Labor 51행)를 행 제거·역산 복원도 가능했지만 대치를 유지했다. 실제 데이터는 구멍이 나기 마련이고, 실무에서는 결측 행을 버릴 수 없는 경우가 많기 때문. 대신 그 비용을 측정해 보고한다(다음 장).
대치 중앙값·스케일러 전부 train 800건으로 fit → test에 동일 적용. split 전에 전체 데이터로 fit하면 test 정보가 새는 data leakage — 전 파이프라인에서 위반 0.
공식 구조를 아는 도메인 지식으로 Total_Base_Cost·Cost_Ratio·Profit_Amount 파생. 기여는 실험으로 검증: LR +1.91%, RF +5.82% (ablation, 4→7피처).
"점수가 낮아졌다"가 아니라 "현실적 전처리를 선택했고, 그 비용을 정량적으로 안다".
933.34 · 6,925.35 = 원본 4피처 기준 재현 실험 / 4,043.42 = 채택 트랙(7피처) — 전부 동일 분할(random_state=42)
동일 분할(rs=42)에서 5% 결측 + median 대치만 넣어도 933 → 6,925. 파생피처 순서 등 다른 요인이 아니라 대치가 오차의 대부분을 만든다 (레드팀 재현 실험으로 입증).
성능 개선 투자는 모델 고도화보다 데이터 수집·정합성(결측 원천 차단)에 먼저 — 결측 0이면 선형 모델만으로 RMSE ~933 수준 도달 가능.
Baseline → Compare → Improve. 그리고 이번엔 기준 모델이 이겼다.
5-fold CV
R² 0.9673 ± 0.0124
RMSE 3,104.07 ± 592.65
MAE 1,081.00
5-fold CV
R² 0.9403 ± 0.0133
RMSE 4,242.82 ± 447.79
MAE 2,803.35
27조합 × 5-fold
best: n_estimators 200 · max_depth 20 · min_samples_split 2
CV RMSE 4,226.53 (개선 +16)
모델을 더 확장해도 같았다: Poly(deg2) 4,014.37 · Ridge 4,043.43 · GBR 4,396.09 — 최고 개선 +0.7% 한계 (7피처 통합 리더보드 실측)
최종 모델(Linear Regression, holdout 200건) — 숫자엔 "그래서 좋은가"까지.
오차가 고르지 않고 소수 관측(대치된 행)에 집중 — 아래 잔차 분포의 0 주변 스파이크 + 두꺼운 꼬리가 그 증거. 결측이었던 건은 개별 검토가 필요하다는 운영 규칙 도출.
실제 실행 산출물 — data/dashboard.png 하단 2패널 (실제vs예측 · 잔차 분포)
learning curve에서 train/validation 곡선 수렴, CV(3,104)와 holdout(4,043)의 격차도 대치 행 오차로 설명됨 → 과적합 아님. 격차가 크면 과적합을 의심하라는 기준을 적용해 확인.
실제 실행 산출물 — 모델링 노트북 learning curve (LR · 튜닝 RF)
결측 0 재구축 트랙(같은 800/200 분할)에서 기본 모델 8종 전수 실측 — Test RMSE.
| 모델 | Test RMSE | MAE | R² |
|---|---|---|---|
| Polynomial (deg2) | 0.00 | 0.00 | 1.000000 |
| Linear | 933.34 | 624.79 | 0.996983 |
| Lasso | 933.34 | 624.79 | 0.996983 |
| Ridge | 933.37 | 624.83 | 0.996982 |
| ElasticNet | 936.53 | 628.11 | 0.996962 |
| XGBoost | 1,254.60 | 965.76 | 0.994548 |
| RandomForest | 2,710.37 | 2,097.05 | 0.974555 |
| DecisionTree | 5,019.12 | 3,856.49 | 0.912744 |
공식에 (M+L)×PR 2차 상호작용이 실존 → degree 2가 생성 공식을 그대로 복원한 것 (재계산 오차 1.1×10⁻¹¹).
부트스트랩 95% CI(2,000회)가 전부 겹침 [~800, ~1,065] → 소수점 순위 경쟁은 무의미하다고 보고.
Ridge 고정, 피처셋만 4→8개로 확장 — Test RMSE의 극적 변화.
트리 계열은 동일 실험에서 소폭 개선(RF 2,710→2,394) — 파생의 수혜는 선형 계열에 집중
계수 복원 실측: Material 1.192 (이론 1.197) · Labor 1.190 (1.197) · Profit_Rate 474.494 (474.751) · Discount 1.000 (정확) — 모델이 공식을 실제로 복원했다
| 피처셋 | Ridge | RandomForest | XGBoost |
|---|---|---|---|
| FS0 (4피처) | 933.37 | 2,710.37 | 1,254.60 |
| FS1 (+합계) | 933.35 | 2,412.07 | 981.20 |
| FS2 (+도메인) | 0.11 | 2,430.22 | 1,011.47 |
| FS3 (+공식근사) | 0.09 | 2,393.88 | 865.78 |
933.37 → 0.11 — 공식의 곱셈 항을 아는 순간 회귀는 산수가 된다.
knowledge injection(도메인 지식 주입)이며 test 정보 누수(leakage)와 구분됨 — 파생은 train 통계 없이 행 단위 계산.
deep-research(105 에이전트, 인용 검증) 권고에 따라 5종 직접 실행 — MLX 트랜스포머는 MacMini M4 Pro(Apple Silicon)에서 직접 구축. 원본 4피처, Test RMSE.
TabPFN 197.39는 조건부 — 1,000행은 스위트스팟(≤10k) 안. 36,733행 실물에선 서브샘플 강제·순위 역전 (다음 장)
| 모델 | RMSE | MAE | R² | 학습(초) |
|---|---|---|---|---|
| TabPFN v2 | 197.39 | 71.39 | 0.999865 | 8.46 |
| MLX TF (PLE) | 223.90 | 162.46 | 0.999826 | 9.04 |
| MLX TF (linear) | 423.23 | 300.88 | 0.999380 | 5.47 |
| MLP sklearn | 992.71 | 763.56 | 0.996587 | 13.37 |
| LLM LoRA | 3,571.01 | 2,745.30 | 0.955830 | 181.04 |
"PLE 임베딩은 문헌 권고와 달리 열세" — 그럴듯하지만 틀린 결론
적대 검증이 "피처별 투영이 공유돼 피처 정체성 소실" 구현 결함을 적발 → 수정 후 문헌 권고 재현. 구현 디테일이 방법론 결론을 좌우한다
UCI 가스터빈 36,733행(2011–15)에 같은 방법론 적용 — NOx 예측 RMSE(mg/m³), 같은 모델·두 가지 분할.
| 모델 | E1 랜덤 | E2 시간외삽 | 격차 |
|---|---|---|---|
| Ridge | 7.560 | 10.119 | +2.56 |
| Linear | 7.559 | 10.127 | +2.57 |
| RandomForest | 3.910 | 12.645 | +8.74 |
| MLX-PLE | 4.030 | 12.700 | +8.67 |
| TabPFN v2 | 3.715 | 12.838 | +9.12 |
| XGBoost | 3.899 | 13.055 | +9.16 |
| Polynomial | 5.577 | 22.472 | +16.90 |
표시 7종 = 양 분할 공통 대표 (전체 11종은 results/gasturbine 원장). Polynomial: 합성 데이터의 0.00(공식 복원)이 실물 시간외삽에선 22.47 최악 — 공식이 없는 세계에서 다항의 몰락
E1에선 TabPFN 3.715·XGB 3.899가 상위 — E2에선 전부 12~13대로 추락하고 Ridge 10.119가 최고. XGB는 CV 3.78이 Test 13.06으로 — 랜덤 CV의 이중 낙관을 정량 입증.
성공 기준(≤5 mg/m³)에 E2는 미달. 오라클 편향 보정을 실측해도 7.681로 여전히 미달 → "연 단위 재학습 + 드리프트 모니터링"을 처방으로 제시 (연도별 Ridge RMSE 2014 8.62 → 2015 11.39).
모델 선택은 성능 · 해석 가능성 · 활용성을 함께 고려했다.
① holdout 최고 성능(4,043) ② 계수가 곧 설명 — 자재비 1원↑이 견적에 미치는 영향을 그대로 읽음 ③ 재학습·배포 비용 최소. 트리의 추가 복잡성이 이 데이터에선 보상되지 않음을 실험으로 확인.
① 초기 견적 검토 — 입력 4개로 즉시 산출, 평균 오차 MAE ≈1,407 ② 예산 시뮬레이션 — 이윤율·할인 시나리오(계수 기반 what-if) ③ 리스크 판단 — 예측-실제 격차 큰 건(잔차 ±2만 꼬리) 우선 검토, 결측 대치된 건은 별도 플래그.
모델 튜닝의 개선은 +16 RMSE, 결측 제거의 개선은 ≈3,000 RMSE — 다음 투자는 모델이 아니라 데이터 수집·정합성. 실물(가스터빈)에선 시간 드리프트 대응(재학습 주기)이 추가된다.
같은 문제를 푸는 동료가 많다 → 애매한 지점을 6렌즈 적대 검증으로 선제 점검, 답변은 전부 실측 근거.