문제 정의데이터 이해 모델 설계업무 판단
1 / 15
END-TO-END ML CASE STUDY

견적 일관성 · 예산 초과 · 수익성 관리를 위한
건설 프로젝트 비용 예측

주어진 문제를 업무 언어로 재정의하고, 데이터로 검증한 판단의 기록 — 역기획형 보고 흐름

0
대치의 비용 — RMSE 격차 실측 (933 ↔ 4,043)
0
실측 비교 모델 (기본 8 + 최신 5)
0
실물 데이터 검증 (가스터빈 NOx)
← → 이동 · r 리플레이 · t 테마 · ? 도움말
문제 정의

첫 장은 "왜 이 분석이 필요한가"에 답한다

주어진 문제(건설 비용 예측)를 내가 정의한 업무 문제처럼 재구성했다.

Q1 왜 필요한가견적 오차·예산 초과·수익성 저하를 줄이기 위해 — 견적 의사결정의 객관성 확보
Q2 무엇을 예측하나최종 견적 금액 Total_Estimate (연속형 → 지도학습 회귀)
Q3 어디에 쓰나초기 견적 검토 · 예산 시뮬레이션 · 리스크 판단
난이도의 실체이 문제의 진짜 난이도는 모델이 아니라 결측 대치다 — 5% 결측이 성능의 지배 요인 (슬라이드 6에서 실측)
"본 분석은 비용 요인으로 최종 견적 금액을 예측하되, 어떤 조건에서 얼마나 틀리는지까지 함께 보고해 견적 의사결정의 객관성을 높인다." 보고서 첫 장의 문제 정의 문장 — 결론(슬라이드 14)과 수미상관으로 연결된다
근거: 역기획형 보고서 원칙
데이터 이해

데이터는 변수 목록이 아니라 문제의 구조다

Construction Estimation Data — 1,000행 × 6열, train 800 / test 200 (random_state=42)

입력 변수 X자재비 · 인건비 · 이윤율(10~30%) · 할인/할증+ 도메인 파생 3 (기초원가·비용비율·이익금액) = 총 7피처
회귀 모델비용 요인 ↔ 견적 금액의 관계 학습
예측 대상 y최종 견적 금액 Total_Estimate
Total_Estimate = (Material_Cost + Labor_Cost) × (1 + Profit_Rate/100) + Discount_or_Markup 데이터셋에 명시된 생성 공식 — 데이터가 결정식 기반임을 뜻하며, 이후 모든 해석의 기준이 된다
컬럼의미비고
Material_Cost재료비결측 5% (54행)
Labor_Cost인건비결측 5% (51행)
Profit_Rate이익률 (10·15·20·25·30%)이산값
Discount_or_Markup할인(−)/할증(+) 조정값
Policy_Reason조정 정책 사유무정보 확인 → 모델 제외
Total_Estimate최종 견적 금액예측 타깃 y
근거: 데이터셋 명세 (생성 공식 정의 포함) · EDA 노트북 결측 카운트
데이터 이해EDA

시각화마다 "그래서 무엇을 알 수 있는가"를 남겼다

의사결정에 쓴 발견 3가지만 보고한다 (전체 EDA는 분석 노트북 참조).

타깃과의 상관 (피어슨 r)

Material_Cost0.80
Labor_Cost0.50
Discount_or_Markup0.33
Profit_Rate0.17

Material_Cost 0.80 = 상관 1순위 — 이후 피처 선택과 계수 해석의 기준이 된다

결측이 실재한다 — 5%

수치 4개 열에 각 5% 결측 → 처리 전략이 곧 성능을 좌우한다는 신호 (슬라이드 5·6)

공식이 복원된다 — 오차 ≈ 2.5×10⁻¹¹

명시된 공식으로 재계산한 최대 오차가 사실상 0 → 노이즈 없는 결정식 데이터. 문제의 난이도는 "관계 찾기"가 아니라 "데이터 품질"

이상치는 구조적

큰 금액 = 큰 프로젝트(정상 관측) → 제거보다 보존 + 모델로 설명을 선택

근거: EDA 노트북 출력 · 도메인 피처 리서치 노트 (r=0.7989/0.4972/0.3251/0.1724)
데이터 이해전처리 전략

처리 방법보다 "왜 그렇게 처리했는가"

전처리는 모델이 학습 가능한 형태로 바꾸는 설계 과정이다 — 판단 3가지.

① 결측 5% → median 대치 유지

결측 5%(Material 54행·Labor 51행)를 행 제거·역산 복원도 가능했지만 대치를 유지했다. 실제 데이터는 구멍이 나기 마련이고, 실무에서는 결측 행을 버릴 수 없는 경우가 많기 때문. 대신 그 비용을 측정해 보고한다(다음 장).

② 기준은 train에서만 결정

대치 중앙값·스케일러 전부 train 800건으로 fit → test에 동일 적용. split 전에 전체 데이터로 fit하면 test 정보가 새는 data leakage — 전 파이프라인에서 위반 0.

③ 파생 7피처

공식 구조를 아는 도메인 지식으로 Total_Base_Cost·Cost_Ratio·Profit_Amount 파생. 기여는 실험으로 검증: LR +1.91%, RF +5.82% (ablation, 4→7피처).

Raw Data결측 5% · 원본 4피처
Clean Datamedian 대치 (train 기준)
Model Ready파생 3피처 · 표준화(선형계열)
Validationtrain 800 / test 200 · 5-fold CV
근거: 전처리 노트북 셀 · ablation 출력 (RMSE_4feat→RMSE_7feat)
데이터 이해핵심 판단

전처리 선택의 비용을 실험으로 측정했다 — ≈ 3천 RMSE

"점수가 낮아졌다"가 아니라 "현실적 전처리를 선택했고, 그 비용을 정량적으로 안다".

결측 0 원본 (탐구 상한)0
채택 트랙 (5% 결측 + 대치)0
격차 ≈3,110 = 대치의 비용
대치 단독 효과 (재현 실험)0

933.34 · 6,925.35 = 원본 4피처 기준 재현 실험 / 4,043.42 = 채택 트랙(7피처) — 전부 동일 분할(random_state=42)

격차의 지배 요인 = 결측 대치

동일 분할(rs=42)에서 5% 결측 + median 대치만 넣어도 933 → 6,925. 파생피처 순서 등 다른 요인이 아니라 대치가 오차의 대부분을 만든다 (레드팀 재현 실험으로 입증).

업무적 함의

성능 개선 투자는 모델 고도화보다 데이터 수집·정합성(결측 원천 차단)에 먼저 — 결측 0이면 선형 모델만으로 RMSE ~933 수준 도달 가능.

근거: results/defense_checks.json (decomposition: 933.34 → 6925.35) · 모델링 노트북 해설
모델 설계

모델은 하나만 쓰는 게 아니라 비교 기준을 만든다

Baseline → Compare → Improve. 그리고 이번엔 기준 모델이 이겼다.

Baseline · Linear Regression

5-fold CV
0.9673 ± 0.0124
RMSE 3,104.07 ± 592.65
MAE 1,081.00

Compare · Random Forest

5-fold CV
R² 0.9403 ± 0.0133
RMSE 4,242.82 ± 447.79
MAE 2,803.35

Improve · RF GridSearchCV

27조합 × 5-fold
best: n_estimators 200 · max_depth 20 · min_samples_split 2
CV RMSE 4,226.53 (개선 +16)

Holdout(200건): Linear 4,043.42 vs 튜닝 RF 4,378.07 — 격차 334.65 (≈8%). 데이터가 준선형 구조인 데다 대치 노이즈가 트리의 분할 이점을 상쇄 → 단순한 모델이 구조적으로 유리했다.
Linear4,043.42
튜닝 RF4,378.07
"가장 좋은 모델"이 아니라 "왜 이 모델이 적절한지"의 비교 논리 — 튜닝(+16)보다 데이터 품질(≈3천)이 지배 요인이라는 결론과 일관

모델을 더 확장해도 같았다: Poly(deg2) 4,014.37 · Ridge 4,043.43 · GBR 4,396.09 — 최고 개선 +0.7% 한계 (7피처 통합 리더보드 실측)

근거: 모델링 노트북 · 확장 리더보드 출력 (전 수치 실측)
모델 설계평가와 해석

회귀는 "정확도"가 아니라 지표 3종으로 설명한다

최종 모델(Linear Regression, holdout 200건) — 숫자엔 "그래서 좋은가"까지.

0
R² · 설명력 — 견적 변동의 94.3%를 설명. 초기 검토용으로 충분
0
MAE · 평균 오차 — 절반 이상의 예측이 이 수준 안쪽
0
RMSE · 큰 오차 민감 — MAE의 2.9배 = 소수의 큰 실패가 존재

RMSE ≫ MAE 비대칭이 말하는 것

오차가 고르지 않고 소수 관측(대치된 행)에 집중 — 아래 잔차 분포의 0 주변 스파이크 + 두꺼운 꼬리가 그 증거. 결측이었던 건은 개별 검토가 필요하다는 운영 규칙 도출.

실제 vs 예측 산점도와 잔차 히스토그램 (dashboard.png 하단 2패널)

실제 실행 산출물 — data/dashboard.png 하단 2패널 (실제vs예측 · 잔차 분포)

과적합 진단

learning curve에서 train/validation 곡선 수렴, CV(3,104)와 holdout(4,043)의 격차도 대치 행 오차로 설명됨 → 과적합 아님. 격차가 크면 과적합을 의심하라는 기준을 적용해 확인.

Learning curve — train/validation RMSE 수렴 곡선

실제 실행 산출물 — 모델링 노트북 learning curve (LR · 튜닝 RF)

근거: 모델링 노트북 출력 (R² 0.943371 · MAE 1,407.42 · RMSE 4,043.417497)
모델 설계확장 ① 기본 모델 8종

데이터 구조가 모델 순위를 결정한다

결측 0 재구축 트랙(같은 800/200 분할)에서 기본 모델 8종 전수 실측 — Test RMSE.

표로 보기
모델Test RMSEMAE
Polynomial (deg2)0.000.001.000000
Linear933.34624.790.996983
Lasso933.34624.790.996983
Ridge933.37624.830.996982
ElasticNet936.53628.110.996962
XGBoost1,254.60965.760.994548
RandomForest2,710.372,097.050.974555
DecisionTree5,019.123,856.490.912744

다항 RMSE 0.00은 누수가 아니다

공식에 (M+L)×PR 2차 상호작용이 실존 → degree 2가 생성 공식을 그대로 복원한 것 (재계산 오차 1.1×10⁻¹¹).

선형 4종은 통계적 동률

부트스트랩 95% CI(2,000회)가 전부 겹침 [~800, ~1,065] → 소수점 순위 경쟁은 무의미하다고 보고.

근거: results/classic_results.json · leaderboard_classic.csv · defense_checks.json
모델 설계확장 ② 피처 엔지니어링

도메인 공식은 가장 강한 피처다

Ridge 고정, 피처셋만 4→8개로 확장 — Test RMSE의 극적 변화.

FS0 원본 4피처933.37
FS1 +비용 합계933.35
FS2 +도메인 파생0.11 핵심 — 곱셈 항의 선형화
FS3 +공식 근사항0.09

트리 계열은 동일 실험에서 소폭 개선(RF 2,710→2,394) — 파생의 수혜는 선형 계열에 집중

계수 복원 실측: Material 1.192 (이론 1.197) · Labor 1.190 (1.197) · Profit_Rate 474.494 (474.751) · Discount 1.000 (정확) — 모델이 공식을 실제로 복원했다

표로 보기
피처셋RidgeRandomForestXGBoost
FS0 (4피처)933.372,710.371,254.60
FS1 (+합계)933.352,412.07981.20
FS2 (+도메인)0.112,430.221,011.47
FS3 (+공식근사)0.092,393.88865.78

Ridge Test RMSE

933.37

933.37 → 0.11 — 공식의 곱셈 항을 아는 순간 회귀는 산수가 된다.
knowledge injection(도메인 지식 주입)이며 test 정보 누수(leakage)와 구분됨 — 파생은 train 통계 없이 행 단위 계산.

근거: results/feature_set_comparison_day5.csv (Ridge FS0~FS3 · RF · XGB 전 수치)
모델 설계확장 ③ 최신 방법론 (2024–2026)

최신 방법론은 검증 문화와 함께 쓸 때 의미가 있다

deep-research(105 에이전트, 인용 검증) 권고에 따라 5종 직접 실행 — MLX 트랜스포머는 MacMini M4 Pro(Apple Silicon)에서 직접 구축. 원본 4피처, Test RMSE.

TabPFN v2197.39
MLX Transformer (PLE)223.90
MLX Transformer (linear)423.23
MLP (sklearn)992.71
LLM LoRA (Qwen2.5-0.5B)3,571.01

TabPFN 197.39는 조건부 — 1,000행은 스위트스팟(≤10k) 안. 36,733행 실물에선 서브샘플 강제·순위 역전 (다음 장)

표로 보기
모델RMSEMAE학습(초)
TabPFN v2197.3971.390.9998658.46
MLX TF (PLE)223.90162.460.9998269.04
MLX TF (linear)423.23300.880.9993805.47
MLP sklearn992.71763.560.99658713.37
LLM LoRA3,571.012,745.300.955830181.04

1차 결론 (오류)

6,370.74

"PLE 임베딩은 문헌 권고와 달리 열세" — 그럴듯하지만 틀린 결론

품질 게이트가 뒤집은 결론

6,370.74 → 223.90

적대 검증이 "피처별 투영이 공유돼 피처 정체성 소실" 구현 결함을 적발 → 수정 후 문헌 권고 재현. 구현 디테일이 방법론 결론을 좌우한다

근거: results/modern_*.json (PLE notes에 게이트 이력 기재) · research/modern_methods_report.md
모델 설계실물 검증 · 가스터빈 NOx

랜덤 분할은 신기루였다 — 시간외삽이 진짜 시험이다

UCI 가스터빈 36,733행(2011–15)에 같은 방법론 적용 — NOx 예측 RMSE(mg/m³), 같은 모델·두 가지 분할.

E1 랜덤 분할E2 시간외삽 (2011–13 학습 → 2014–15 예측)
표로 보기
모델E1 랜덤E2 시간외삽격차
Ridge7.56010.119+2.56
Linear7.55910.127+2.57
RandomForest3.91012.645+8.74
MLX-PLE4.03012.700+8.67
TabPFN v23.71512.838+9.12
XGBoost3.89913.055+9.16
Polynomial5.57722.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).

근거: results/gasturbine/classic_results.json · modern_results.json · defense_checks.json (oracle 7.681)
업무 판단

마지막 장은 모델 결과를 업무 활용으로 연결한다

모델 선택은 성능 · 해석 가능성 · 활용성을 함께 고려했다.

선택: Linear Regression

① holdout 최고 성능(4,043) ② 계수가 곧 설명 — 자재비 1원↑이 견적에 미치는 영향을 그대로 읽음 ③ 재학습·배포 비용 최소. 트리의 추가 복잡성이 이 데이터에선 보상되지 않음을 실험으로 확인.

활용 3가지

① 초기 견적 검토 — 입력 4개로 즉시 산출, 평균 오차 MAE ≈1,407 ② 예산 시뮬레이션 — 이윤율·할인 시나리오(계수 기반 what-if) ③ 리스크 판단 — 예측-실제 격차 큰 건(잔차 ±2만 꼬리) 우선 검토, 결측 대치된 건은 별도 플래그.

투자 우선순위

모델 튜닝의 개선은 +16 RMSE, 결측 제거의 개선은 ≈3,000 RMSE — 다음 투자는 모델이 아니라 데이터 수집·정합성. 실물(가스터빈)에선 시간 드리프트 대응(재학습 주기)이 추가된다.

튜닝 개선+16
데이터 개선≈3,000
교육용 데이터의 결론이 실물에서도 유지되는지 가스터빈으로 재검증했고, "평가 프로토콜(분할 설계)이 성능 숫자보다 중요하다"는 운영 원칙을 얻었다.
근거: 모델링 노트북 결론 · defense_checks.json · gasturbine 결과 전체
업무 판단한계 · 결론

좋은 보고서는 한계와 개선 방향까지 제시한다

한계

  • 교육용 결정식 데이터 — 실제 현장의 노이즈·비선형성 부재
  • 규모·지역·공정·계약 조건 변수 없음
  • 결측이 순수 무작위라 가정(MCAR) — 실제로 패턴이 있다면 대치 전략 재검토 필요
  • 실물 검증(가스터빈)에서 시간외삽 기준(≤5) 미달

개선

  • 현장 변수 추가 수집 (규모·지역·공정·계약)
  • 결측 원천 차단(입력 시스템 정합성) — 기대 효과 ≈3천 RMSE
  • 드리프트 모니터링 + 연 단위 재학습
  • 대치 건 플래그 운영 (개별 검토 루틴)
본 분석은 비용 요인으로 최종 견적 금액을 예측해 견적 의사결정의 객관성을 높인다는 첫 장의 문제 정의로 돌아온다 — R² 0.94의 예측과 함께, 어떤 조건에서 얼마나 틀리는지까지 아는 것이 이 보고의 결론이다. 문제 정의(슬라이드 2)와 수미상관
문제를 업무 언어로 재정의했는가
EDA 결과에 해석 문장이 있는가
모델 선택 이유가 분명한가
평가 지표를 정확히 설명했는가
현업 활용과 한계를 제시했는가
(자체 추가) 모든 수치가 실행 산출물 원장과 일치하는가 — 창작 0
역기획형 최종 체크리스트 5 + 자체 품질 게이트 1
부록예상 질문 사전 검증

까다로운 질문은 미리 받았다 — 레드팀 스웜 35플래그 중 발췌

같은 문제를 푸는 동료가 많다 → 애매한 지점을 6렌즈 적대 검증으로 선제 점검, 답변은 전부 실측 근거.

Q. 다항 RMSE 0은 과적합/누수 아닌가아니다 — 생성 공식의 2차 항을 복원한 것. 재계산 오차 1.1×10⁻¹¹, 파생에 train 통계 불사용 (누수 정의 불충족)
Q. 933 vs 4,043 어느 쪽이 진짜인가둘 다 — 933은 결측 0 원본의 상한, 4,043은 대치를 유지한 채택 트랙. 격차의 지배 요인(대치)을 재현 실험(6,925)으로 분해해 보고
Q. 선형 4종 순위 차이는 의미 있나없다 — 부트스트랩 95% CI 전부 겹침(통계적 동률). 순위가 아니라 "선형 계열이 동률 그룹"이 결론
Q. 가스터빈 E1에도 문제가 있지 않나있다 — 시계열 자기상관 누수 가능성을 인정하고, 그래서 E2(시간외삽)를 본 시험으로 채택. 오라클 보정 7.681도 기준 미달로 정직 보고
노트북 4권 · 에러 0대시보드 2종보고서 PDF 12쪽 (역기획형) deep-research 105 에이전트레드팀 6렌즈 35플래그방어 실험 3종 전 수치 = results/ 원장
근거: research/redteam_flags.json (7문답 전문) · defense_checks.json
건설비 예측 ML 케이스 스터디 · 2026 · Jinhyun An