TIL(Today I Learned)
1️⃣실전 프로젝트 대시보드(9)
BMW i3 주행거리 예측 대시보드 개선 기록
- Streamlit 기반의 EV 주행거리 예측 대시보드를 실사용 관점에서 점검하면서 발견된 문제들을 수정하고, UI를 일반 사용자 친화적으로 개편
1. 데이터 누수(Data Leakage) 제거
- 문제: 피처 중요도를 확인하니 Duration, SOC_Consumed, Battery_State_of_Charge_End 세 컬럼의 중요도가 비정상적으로 높게 나왔습니다. 이 값들은 주행이 끝난 후에야 알 수 있는 결과값이기 때문에 예측 모델에 포함X

- 해결: 세 컬럼을 LEAKAGE_COLS로 분리하고 모델 학습과 예측에서 완전히 제외
2. SHAP 기반 최종 피처 13개로 교체
SHAP 분석에서 선정된 13개 피처로 모델을 재구성
- 1위 SoC_lag1_std — SoC 변화율 편차
- 2위 Elevation_MA3_std — 고도 이동평균(MA3) 편차
- 3위 Battery_Current_max — 배터리 최대 전류
- 4위 Velocity_mean — 평균 속도
- 5~13위 Throttle 관련 lag 피처, 경로·날씨 범주형 변수
3. 모델 성능 수치 업데이트
GridSearch 튜닝 후 실제 계산값으로 대시보드 KPI를 고정

| R2 | 0.7687 |
| rmse | 4.69km |
| mae | 3.39km |
4. UI 개선
- 8개 슬라이더가 전문 용어와 함께 나열되어 일반 사용자가 값을 입력하기 어려움

- 기본 조건 (3개, 한 줄씩 전체 너비)
평균 속도: 수치 슬라이더
가속 강도: 부드럽게 / 보통 / 강하게 / 아주 강하게
에어컨 사용: 끔 / 약하게 / 보통 / 강하게
고급 변수 (접어두기, 전문가용)
개선 방안
- 경로 및 날씨 조건 선택 체크박스 크기 키우기
- 트립 예시 데이터 생성 및 시연 준비
2️⃣실전 프로젝트 발표 자료
핵심: "누수 변수 제거" 슬라이드 신규 추가
"중요도 상위 변수가 사후(post-trip) 변수"라는 점이 데이터 누수임을 파악하고 흐름을 정리하였다.
- 상위 중요 변수가 사후 변수라는 점을 지적하고 4종 제거
- 제거한 4개 변수와 각각의 누수 사유 기재
- 누수 포함 R² 0.883 → 제거 후 R² 0.767, 성능 하락

데이터에 따른 목표 구체화

최종 결론 및 향후 방향성

PPT 개선 사항
- 전기차 토탈을 다루는 내용 추가하는건 어떤지
- 구체화한 목표를 확장하는 방안
💡 느낀점
높은 R²가 항상 좋은 신호는 아니라는 점. 누수 변수를 넣었을 때 0.883이던 성능이 제거하니 0.767로 떨어졌는데, 처음엔 이 하락이 아쉽게 느껴졌지만 결국 그 0.883이 트립이 끝나야 알 수 있는 정보로 만든 잘못된 결과였다.
또한 변수 제거의 기준은 중요도가 아니라 도메인 판단이라는 점. SHAP나 feature importance는 누수를 의심하게 만드는 진단 도구일 뿐임을 알았다. 대시보드 또한 UI를 개선하면서 사용자의 시각을 생각하며 고민을 해볼 수 있는 시간이었다.
'실전 프로젝트 대시보드' 카테고리의 다른 글
| Chapter.7 실전 프로젝트 대시보드(10) (0) | 2026.06.15 |
|---|---|
| Chapter.7 실전 프로젝트 대시보드(8) (0) | 2026.06.09 |
| Chapter.7 실전 프로젝트 대시보드(7) (0) | 2026.06.08 |
| Chapter.7 실전 프로젝트 대시보드(6) (0) | 2026.06.05 |
| Chapter.7 실전 프로젝트 대시보드(5) (0) | 2026.06.04 |