경기 AI 멤버십 채용연계형 교육

[경기AI멤버십] Day 13. 모델 검증

a-zer0 2026. 8. 29. 23:11

긍정 확언

지금 하는 프로젝트 모두 잘 완성해서 미래에 도움이 된다.

1. 오늘 배운 내용

Day 13에서는 지난 시간에 배운 Random Forest와 XGBoost 같은 모델을 어떻게 검증하고 조정할지 공부했다.

Train·Validation·Test 데이터의 역할, K-Fold 교차검증, 하이퍼파라미터 튜닝과 GridSearchCV의 흐름을 정리했다.

수업 이후에는 전기차 에너지 소비량 데이터를 활용한 프로젝트의 기획을 구체화하고 EDA와 전처리를 진행하면서 앞으로의 모델링 방향을 세웠다.

전체적인 진행 흐름은 다음과 같다.

Train·Validation·Test 구분 → K-Fold 교차검증 → 하이퍼파라미터 탐색 방법 → GridSearchCV
→ 전기차 에너지 프로젝트 기획 → 데이터 품질 점검 → EDA → 전처리 및 검증 전략 수립 → 모델 비교 방향 설정


2. Train, Validation, Test 데이터의 역할

출처: https://goatlab.tistory.com/entry/Train-Validation-Test-set

머신러닝 모델을 평가할 때는 학습 데이터와 테스트 데이터를 단순히 한 번 나누는 것보다 각 데이터가 어떤 목적으로 사용되는지 구분해야 한다.

  • Training Set: 모델이 데이터의 패턴을 학습하는 데 사용
  • Validation Set: 학습 중 모델과 하이퍼파라미터를 비교하는 데 사용
  • Test Set: 모든 학습과 검증이 끝난 뒤 최종 성능을 확인하는 데 사용

특히 데이터가 충분하지 않으면 데이터를 어떻게 나누느냐에 따라 모델의 성능이 크게 달라질 수 있다.

Test 데이터는 모델을 선택하거나 튜닝하는 과정에 반복해서 사용하지 않고 최종 평가 단계에서만 사용하는 것이 중요하다.

테스트 결과를 보면서 모델을 계속 수정하면 모델이 테스트 데이터에까지 맞춰질 수 있고 처음 보는 데이터에서의 실제 성능을 제대로 확인하기 어려워진다.


3. K-Fold 교차검증

출처: https://incodom.kr/k-%EA%B2%B9_%EA%B5%90%EC%B0%A8_%EA%B2%80%EC%A6%9D

K-Fold 교차검증은 학습 데이터를 K개의 폴드로 나눈 뒤 검증용 폴드를 번갈아 바꾸면서 학습과 평가를 반복하는 방법이다.

예를 들어 K=5라면 전체 학습 데이터를 다섯 부분으로 나눈다.

그중 네 부분으로 모델을 학습하고 나머지 한 부분으로 검증한다.

검증 영역을 바꾸어 이 과정을 총 다섯 번 반복한 뒤, 각 평가 결과의 평균을 최종 검증 점수로 사용한다.

K-Fold는 특정한 한 번의 데이터 분할 결과에만 의존하지 않고 모델의 일반화 성능을 보다 안정적으로 확인할 수 있게 해준다.

프로젝트에서는 전체 데이터를 Train과 Test로 먼저 분리한 뒤 Train 데이터 안에서 5-Fold 교차검증을 수행하는 방향으로 정했다.

전체 데이터 → Train 80% / Test 20% 분리 → Train 데이터에서 5-Fold 교차검증
→ 모델과 설정 선택 → Test 데이터로 최종 평가

이렇게 하면 모델을 선택하는 과정에서 Test 데이터의 정보가 사용되는 데이터 누수를 방지할 수 있다.


4. 하이퍼파라미터 튜닝

하이퍼파라미터는 모델이 학습 과정에서 자동으로 결정하는 값이 아니라 모델을 학습하기 전에 사용자가 설정해야 하는 값이다.

Random Forest의 트리 개수나 최대 깊이, XGBoost의 학습률처럼 같은 알고리즘이라도 하이퍼파라미터 설정에 따라 모델의 복잡도와 성능이 달라질 수 있다.

적절한 값을 찾는 대표적인 방법은 다음과 같다.

Grid Search 지정한 모든 조합 탐색 탐색 범위가 작을 때 적합
Random Search 일부 조합을 무작위 탐색 탐색 범위가 넓을 때 효율적
Halving Grid Search 모든 조합에서 성능이 낮은 조합을 단계적으로 제거 Grid Search보다 계산량 절감 가능
Halving Random Search 무작위 조합을 단계적으로 제거 넓은 범위를 빠르게 탐색할 때 유리
Bayesian Optimization 이전 탐색 결과로 다음 조합 결정 복잡하고 학습 비용이 큰 모델에 적합

하이퍼파라미터 튜닝의 목적은 학습 데이터에서 가장 높은 점수를 만드는 것이 아니라 새로운 데이터에서도 안정적으로 작동할 설정을 찾는 것이다.


5. GridSearchCV의 학습 흐름

출처: https://sungmin93.tistory.com/88

GridSearchCV는 사용자가 지정한 하이퍼파라미터 조합을 교차검증으로 평가하고 가장 좋은 조합을 선택하는 기능이다.

전체적인 흐름은 다음과 같다.

모델 정의 → 하이퍼파라미터 후보 설정 → 필요한 전처리 Pipeline 구성 → GridSearchCV 설정

→ Train 데이터로 학습과 교차검증 → 최적 파라미터와 Best Model 선택 → Test 데이터로 최종 성능 평가

Pipeline을 사용하면 스케일링이나 인코딩 같은 전처리가 각 교차검증의 학습 데이터 안에서만 수행되도록 구성할 수 있다.

이렇게 전처리와 모델을 하나의 흐름으로 묶으면 검증 데이터의 정보가 학습 과정에 미리 반영되는 데이터 누수를 방지하는 데 도움이 된다.


6. 전기차 에너지 소비량 프로젝트 기획

수업 이후에는 전기차 주행 데이터를 활용한 프로젝트의 방향을 구체화했다.

프로젝트의 대상은 차량 제조사의 전기차 내비게이션으로 정했다.

전기차는 같은 거리를 주행하더라도 도로 경사도, 속도, 적재량, 외부 기온, 냉난방 사용량과 운전 습관 등에 따라 실제 에너지 소비량이 달라질 수 있다.

따라서 하나의 고정된 평균 전비만 사용하면 각 경로의 실제 주행 조건에 따른 차이를 충분히 반영하기 어렵다.

이번 프로젝트의 목적은 다음과 같다.

주행·환경 조건으로 100km당 에너지 소비량을 예측하고 그 값을 내비게이션의 후보 경로별 에너지 비용 계산에 활용할 수 있는 모델을 만드는 것

모델이 예측할 목표변수는 energy_consumption_kwhper100km이며 단위는 kWh/100km다.


7. 프로젝트에서 해결하려는 문제

프로젝트를 진행하기 전에 다음 네 가지 질문을 기준으로 문제를 정리했다.

왜 필요한가

전기차의 에너지 소비량은 주행거리뿐 아니라 경사도, 속도, 기온, 공조 부하 등 여러 조건에 따라 달라진다.

이 차이를 충분히 반영하지 않으면 목적지 도착 시 예상 배터리 잔량과 충전 필요 시점에 오차가 발생할 수 있다.

무엇을 예측하나

주행 및 환경 조건에 따른 100km당 에너지 소비량을 예측한다.

예측 전비와 경로 거리를 결합하면 다음과 같이 경로의 총 예상 소비량도 계산할 수 있다.

경로 총 예상 소비량(kWh) = 예측 전비(kWh/100km) × 경로 거리(km) ÷ 100

어디에 쓰나

  • 후보 경로별 예상 에너지 소비량 비교
  • 목적지 도착 가능 여부 판단 지원
  • 도착 예상 배터리 잔량 계산
  • 충전소 경유 필요성 판단
  • 경로별 예상 전기요금 산출

누가 쓰나

모델을 직접 활용하는 주체는 차량 제조사의 내비게이션 개발·기획 부서이며, 최종 사용자는 전기차 운전자다.


8. 프로젝트 범위 정하기

현재 데이터에는 실제 지도, 도로망, 경로 좌표와 실시간 교통정보가 포함되어 있지 않다.

따라서 이번 프로젝트에서 경로를 직접 생성하거나 완성된 최적 경로 안내 시스템을 구현한다고 표현하면 실제 데이터 범위를 넘어선다.

이번 프로젝트의 범위는 내비게이션이 생성한 후보 경로의 조건을 입력받아 경로별 예상 에너지 소비량을 계산하는 비용 모델을 개발하는 것으로 정했다.

또한 경사가 낮은 경로를 무조건 에너지 최적 경로로 판단해서는 안 된다.

경사가 완만하더라도 우회 거리가 길어지면 총소비량이 더 증가할 수 있기 때문이다.

경로의 효율성은 전비 하나가 아니라 예측 전비와 실제 경로 거리를 결합한 총 예상 소비량으로 비교해야 한다.


9. 데이터 구성과 품질 점검

프로젝트 데이터는 총 8,000건이며, 9개의 입력변수와 1개의 목표변수로 구성되어 있다.

주요 입력변수는 다음과 같다.

  • 주행 속도
  • 적재량
  • 외부 기온
  • 냉난방 사용 전력
  • 도로 경사도
  • 배터리 온도
  • 운전 스타일 지수
  • 타이어 공기압
  • 주행거리

데이터를 확인한 결과 결측치는 존재하지 않았다.

다만 결측치가 없다는 이유만으로 바로 모델을 학습할 수 있는 것은 아니다.

변수별 데이터 타입과 범위, 중복값, 이상치 후보와 물리적으로 비정상적인 값도 함께 확인해야 한다.

이상치는 모델 성능을 높이기 위해 자동으로 삭제하지 않고 실제 오류인지 의미 있는 극단 조건인지 먼저 판단하기로 했다.


10. 목표변수와 전비 변동성

데이터에서 100km당 에너지 소비량은 약 11.62~35.00kWh/100km 범위로 나타났다.

최대값과 최소값 사이에 약 3배의 차이가 있어 주행 조건에 따른 전비 변동이 상당히 크다는 것을 확인할 수 있었다.

60kWh 배터리를 기준으로 단순 환산하면 예상 주행가능거리는 약 171~516km 범위가 된다.

다만 이 값은 60kWh 전체를 사용할 수 있다고 가정한 단순 계산이다.

실제 차량에서는 배터리의 가용 용량, 현재 SOC, 안전 잔량과 배터리 열화 상태 등을 추가로 고려해야 한다.

이번 EDA에서 확인한 전비의 넓은 범위는 주행 조건을 반영한 예측 모델이 필요한 이유를 보여준다.


11. EDA에서 확인한 주요 관계

상관관계를 확인한 결과 목표변수와 상대적으로 관련성이 크게 나타난 변수는 다음과 같았다.

  • 도로 경사도: 약 0.50
  • 적재량: 약 0.47
  • 주행 속도: 약 0.45
  • 냉난방 사용 전력: 약 0.37

구간별 평균에서도 차이를 확인할 수 있었다.

조건 평균 에너지 소비량
내리막 구간 약 22.15kWh/100km
경사도 4% 이상 약 26.42kWh/100km
저적재 조건 약 22.13kWh/100km
고적재 조건 약 26.19kWh/100km
저속 조건 약 22.08kWh/100km
고속 조건 약 26.04kWh/100km

도로 경사도, 적재량과 속도가 높아지는 구간에서 평균 에너지 소비량도 높아지는 경향을 확인했다.

하지만 상관관계는 인과관계를 의미하지 않는다.

각 변수가 직접적인 원인이라고 단정하지 않고 비선형 관계와 변수 간 상호작용을 모델링 과정에서 추가로 확인해야 한다.


12. 통제 가능한 조건과 통제하기 어려운 조건

EDA 결과에서 도로 경사도가 전비와 가장 높은 관련성을 보였지만 운전자가 도로의 경사를 직접 바꿀 수는 없다.

이를 정리하면서 변수를 두 가지 관점으로 구분했다.

통제하기 어려운 조건

  • 도로 경사도
  • 외부 기온
  • 경로 거리
  • 배터리 온도

일부 조절할 수 있는 조건

  • 주행 속도
  • 냉난방 사용량
  • 적재량
  • 운전 스타일
  • 타이어 공기압

통제하기 어려운 변수도 예측에서는 중요하다.

사용자가 변경할 수 없더라도 모델이 실제 소비량을 정확하게 계산하려면 반드시 반영해야 하는 조건이기 때문이다.

내비게이션은 경사도와 기온처럼 바꾸기 어려운 조건을 소비량 예측에 사용하고 운전자에게는 속도나 냉난방 설정처럼 조절 가능한 요인을 중심으로 안내할 수 있다.


13. 전처리와 검증 방향

EDA 이후에는 다음과 같은 전처리와 검증 원칙을 정했다.

  • 입력변수 X와 목표변수 y 분리
  • Train/Test 80:20 분할
  • random_state=42 적용
  • Train 데이터에서 5-Fold 교차검증 수행
  • Test 데이터는 최종 평가에만 사용
  • 이상치는 근거 없이 자동 제거하지 않음
  • 전처리와 모델 설정은 Train 데이터에서 결정
  • 필요한 전처리는 Pipeline 내부에서 수행

의사결정나무와 Random Forest는 변수 사이의 거리를 계산하는 모델이 아니므로 스케일링이 필수적이지 않다.

반면 선형 모델에 스케일링이 필요하다면 Pipeline 내부에서 적용하는 방향으로 정했다.

전처리 과정에서도 전체 데이터의 정보를 미리 사용하지 않고 학습 데이터 안에서 처리하여 데이터 누수를 방지하는 것이 중요하다.


14. 앞으로 비교할 모델

이번 단계에서는 아직 최종 모델을 선정하지 않았다.

먼저 다음 모델들을 동일한 검증 기준으로 비교할 계획을 세웠다.

  • DummyRegressor
  • LinearRegression
  • 기본 DecisionTreeRegressor
  • 튜닝된 DecisionTreeRegressor
  • RandomForestRegressor

Dummy Regressor는 복잡한 모델이 단순 평균 예측보다 실제로 나은지 확인하기 위한 기준선으로 사용한다.

기본 의사결정나무에서는 학습 데이터에 과적합되는 현상이 나타나는지 확인하고 GridSearchCV를 이용해 최대 깊이, 최소 분할 표본 수, 최소 리프 표본 수와 가지치기 강도 등을 조정할 예정이다.

Random Forest는 여러 결정 트리를 배깅 방식으로 결합했을 때 단일 트리보다 성능이 개선되는지 그리고 그만큼 추론 시간과 모델 크기가 증가하는지를 확인하기 위한 비교 모델로 사용한다.


15. 모델 평가 기준

모델은 하나의 점수만으로 선정하지 않고 다음 항목을 함께 비교할 예정이다.

  • Train R²
  • 교차검증 RMSE
  • Test R²
  • Test MAE
  • Test RMSE
  • Train과 Test 성능 차이
  • 추론 시간
  • 모델 파일 크기
  • 해석 가능성
  • 내비게이션 적용 가능성

가장 높은 정확도를 기록한 모델이 반드시 차량 환경에 가장 적합한 모델은 아니다.

차량 내비게이션에 적용하려면 예측 성능뿐 아니라 빠른 응답 속도, 제한된 저장공간, 모델의 안정성과 결과를 설명할 수 있는지도 함께 고려해야 한다.


16. 오늘의 핵심 정리

  • Validation 데이터는 모델과 설정을 비교하기 위한 데이터다.
  • Test 데이터는 모든 학습과 검증이 끝난 뒤 최종 평가에만 사용해야 한다.
  • K-Fold는 학습 데이터를 여러 폴드로 나누어 학습과 검증을 반복한다.
  • 교차검증을 사용하면 한 번의 데이터 분할에 따른 성능 변동을 줄일 수 있다.
  • GridSearchCV는 지정한 하이퍼파라미터 조합을 교차검증으로 비교한다.
  • 전처리와 모델을 Pipeline으로 묶으면 데이터 누수 방지에 도움이 된다.
  • 전기차 프로젝트는 주행 조건별 에너지 소비량을 예측하는 회귀 문제로 정의했다.
  • 현재 프로젝트의 범위는 경로 생성이 아니라 경로별 에너지 비용 산정 모델 개발이다.
  • 전비는 약 11.62~35.00kWh/100km 범위로 크게 달라졌다.
  • 도로 경사도, 적재량, 주행 속도와 냉난방 사용량이 전비와 상대적으로 높은 관련성을 보였다.
  • 상관관계를 인과관계로 단정하지 않아야 한다.
  • 이상치는 자동으로 삭제하지 않고 의미와 발생 원인을 먼저 확인해야 한다.
  • 최종 모델은 정확도, 과적합, 속도, 크기와 해석 가능성을 함께 비교해 선정해야 한다.

17. 오늘의 느낀 점

그동안 모델을 학습하고 Test 점수를 확인하면 평가가 끝난다고 생각했는데 오늘은 모델을 선택하는 과정과 최종 평가를 분리해야 하는 이유를 이해할 수 있었다.

특히 K-Fold 교차검증은 같은 데이터라도 분할 위치에 따라 결과가 달라질 수 있다는 문제를 줄여준다는 점이 기억에 남았다.

프로젝트에서는 코드를 작성하기 전에 무엇을 예측하고 그 결과를 어디에 사용할지 먼저 정하는 과정이 중요했다.

처음에는 경사도가 낮은 경로를 추천하는 방향을 생각했지만, 경사가 완만하더라도 우회 거리가 길어지면 총소비량이 더 커질 수 있었다.

이를 통해 하나의 변수만 보고 결론을 내리지 않고 프로젝트의 최종 목적에 맞는 계산 기준을 만들어야 한다는 점을 배웠다.

아직 모델 학습과 최종 선정은 남아 있지만 오늘은 문제 정의부터 EDA, 전처리와 검증 전략까지 연결하면서 프로젝트의 전체 방향을 세울 수 있었다.


마무리

Day 13에서는 K-Fold 교차검증과 하이퍼파라미터 튜닝의 필요성을 학습하고 GridSearchCV의 전체적인 흐름을 정리했다.

이후 전기차 에너지 소비량 데이터를 활용한 프로젝트에서 차량 제조사의 내비게이션이라는 활용 대상을 정하고 주행 조건별 전비를 예측해 후보 경로의 에너지 비용을 계산하는 방향으로 문제를 구체화했다.

EDA에서는 전비의 변동 범위와 주요 변수의 관계를 확인했고 이상치를 임의로 삭제하지 않으며 Train 데이터 안에서 교차검증과 전처리를 수행하는 원칙도 정했다.

다음 단계에서는 동일한 검증 조건에서 여러 회귀 모델을 학습하고 예측 성능과 과적합뿐 아니라 추론 속도, 모델 크기와 실제 내비게이션 적용 가능성까지 함께 비교해 최종 모델을 선정할 예정이다.