데이터 부트캠프 - Project

[머신러닝 심화 프로젝트] 영국 내 현대 중고차 가격 예측 모델링

onion95 2025. 2. 9. 18:41

PROJECT GOAL : 중고차 가격 예측을 위한 머신러닝 모델링

 

 

[프로젝트 개요]

 

  • 프로젝트 명 : 영국 내 현대 중고차 시세 예측 모델링(현대 중고차 서비스 해외 진출을 위한 가격 예측 모델 비교)
  • 기간 : 2025년 1월 24일 ~ 2025년 2월 6일
  • 인원 : 팀 (5명)
  • 역할 : 프로젝트 흐름 기획, 데이터 전처리를 위한 EDA , 머신러닝 학습 및 성능 비교
  • 작업 도구 : 파이썬(pandas, sklearn-선형회귀, 랜덤포레스트, XGBoost)

 

 

[데이터 개요]

 

출처 : https://www.kaggle.com/datasets/adityadesai13/used-car-dataset-ford-and-mercedes/data

 

100,000 UK Used Car Data set

100,000 scraped used car listings, cleaned and split into car make.

www.kaggle.com

  • 총 13개의 테이블 존재

  • unclean 데이터는 전처리 전 데이터
  • cclass & focus는 수집 시점도 다르며, merc와 ford 테이블에서 중복이 있으므로 분석 대상에서 제외
  • 최종적으로 9개의 브랜드 데이터만 활용(컬럼 구성은 동일)

 

브랜드명.csv : 브랜드별 중고차 정보

Columns   설명
model 차량 모델  
year 차량 연식  
price 차량 가격 단위 : 파운드
transmission 변속기  
mileage 주행거리 단위 : 마일
fuelType 연료  
tax 자동차세(도로세) 단위 : 파운드
mpg 연비 단위 : mpg(mile per gallon)
engineSize 엔진 크기 단위 : 리터(예상)

 

 

[분석 목적 및 방법]

 

1. 분석 목적

  • 1차 : 전체 브랜드 대상 분석 및 모델 학습(방향성 부재)
  • 2차 : 스토리 라인 기획 및 타겟 브랜드 대상 분석 및 모델 학습(방향성 수립)

 

2. 분석 방법

① 시장 분석

  • 영국 내 자동차 시장, 특히 현대차 현황 파악을 위한 시장분석

② EDA(현대차 vs 영국 내 선호 브랜드 3사)

  • 현대차 데이터 파악 및 선호도 상위 브랜드 대비 현대차의 시장 포지션 확인을 위한 분석

③ 머신러닝 학습 및 성능 비교

  • 정확도 높은 중고차 가격 예측을 위한 회귀 분석 기반의 다양한 머신러닝 학습

 

 

[분석 과정 및 결과]

 

1. 시장 분석

  • 영국 내 현대차 현황을 조사한 결과, 2020년대 부터 현대차의 판매량 및 점유율이 높아지는 추세를 확인하였고, 이를 기반으로 중고차 수요도 함께 증가할 것으로 예상
  • 영국에서 차량 브랜드 중 가장 선호도가 높은 상위 3사를 파악하였고, 폭스바겐/포드/복스홀이 꾸준히 상위에 올라옴
  • 국내 현대 중고차 서비스를 운영하는 현대차그룹, 현대캐피탈 등은 글로벌 확장의 비전을 가지고 있는 상황으로, 영국 현대 중고차 서비스 진출을 위한 가격 예측 모델 개발을 상황을 가정함

 

2. EDA

① 현대차 vs 상위 3사

  • 상위 3사의 중고차 가격대와 현대 중고차의 가격대 비교 등
  • 담당 파트 X > 스토리 라인에 맞는 EDA 구성이 이루어지지 않아 아쉽다는 피드백으로 인해 추후 디벨로 해볼 예정

① 현대차 EDA(학습용 모델 전처리)

  • model(범주형 변수) : 10개 이하 차량 모델 제거

  • year(수치형 변수) : 불가능한 차량 연식 없음, 데이터 유지

  • price(수치형 변수) : 가격의 최대값은 출고가(모델 I10)를 뛰어넘는 수치로 삭제, 모델별 가격 분포를 확인한 결과 각 모델별 최대값이 출고가와 비슷한 수준으로 확인되어 데이터 유지

  • transmission(범주형 변수) : Other은 기타 값으로 특성을 파악할 수 없고, 수가 너무 적어 삭제

  • mileage(수치형 변수) : 이상치 값들의 평균 차량 연식은 8년 이상으로 집계, 상한 한계선인 64,870마일 이상(최대값인 140,000마일의 연식은 2008년으로 12년)의 주행거리를 이상치로 보기 어려움

  • fuelType(범주형 변수) : Other은 기타 값으로 특성을 파악할 수 없고, 수가 너무 적어 삭제

  • tax(수치형 변수) : 구간별로 나뉘어 분포하는 특징, 실제 영국 도로세는 구간별로 부과되는 사실에 기반하여 범주형 변수로 변환함(tax 중앙값 기준 low/high로 재설정)

  • mpg(수치형 변수) : 일반적인 차량 연비와 비교했을 때, 이상치는 가능성이 낮은 수치이며, 특히 최대값으로 나타나는 수치는 테스트 환경에서 나오는 수준으로 현실적인 수치가 아닌 것으로 판단하여 삭제

  • engineSize(수치형 변수) : 불가능한 수치로 판단할 수 없어 데이터 유지

 

3. 머신러닝 학습 및 성능 비교

① 학습 단계 요약

  • 베이스라인 모델 학습 - 차원 축소한 데이터 적용 - 앞선 EDA 기반 이상치 제거 데이터 적용 - 파생변수를 추가한 데이터 적용 - 하이퍼 파라미터 튜닝

② 학습 조건

  • 선형회귀, 랜덤포레스트, XGBoost 세가지 모델 학습
  • 공통적으로 범주형 변수는 원-핫 인코딩을 적용하고, 5-Fold 교차검증을 수행하여 과적합 확인
  • 선형회귀 모델의 경우, 변수간 스케일 차이를 줄이기 위해 독립변수는 Standard 스케일링, 종속변수는 로그변환 후 학습하고, 지수함수로 종속변수 복원 후 성능지표를 도출함

 

③ 학습 단게별 결과 요약

  • ⓐ 베이스라인 : 교차검증 결과 과적합 의심 모델은 없었음
  • ⓑ 차원 축소 : 상관관계가 높은 year와 mileage를 연 평균 주행거리로 함축하여 차원을 축소하여 학습, 베이스라인보다 성능이 떨어지는 결과 확인
    • year와 mileage는 강한 선형관계에 있으나, 같은 연식의 차량에서도 주행거리는 넓게 분포할 수 있다는 중고차 특성이 반영되어 무조건적인 차원 축소가 성능 개선의 결과를 가져오지 않은 것으로 보임
  • ⓒ EDA 기반 이상치 제거 : 앞선 과정은 페기, 이상치를 제거한 데이터 적용 결과 세가지 모델 모두 베이스라인 대비 성능 지표가 개선됨(과적합 또한 없음)
  • ⓓ 파생변수 추가 : 선형회귀 모델은 성능이 미세하게 개선되었으나 랜덤포레스트와 XGBoost 모델 성능은 미세하게 저하됨(과적합 없음)
  • ⓔ 하이퍼 파라미터 튜닝 : 이상치를 제거한 3번째 단계에서 하이퍼 파라미터 튜닝(GridSearchCV 활용)을 수행한 결과, 튜닝 전 모델 대비 성능이 소폭 개선되었음

각각 랜덤포레스트, XGBoost 파라미터 설정 내용

⑤ 최종 성능 비교 요약

  • 세가지 모델 모두 각 단계를 거치며 점차 성능이 개선된 것을 확인함
  • 세 모델 모두 최적 파라미터가 적용된 모델의 성능이 가장 좋음
  • 가장 성능이 좋은 모델은 파라미터 튜닝이 완료된 XGBoost 모델로 선정, 모델의 설명력(R^2)은 0.964로 설명력이 높으며, MAE 지표를 기준으로 해당 모델에서 평균적으로 780.3파운드의 오차를 보임

 

 

[배운 점]

 

모델 학습을 위해서는 집요한 이상치 조사가 필요하다

 

  • 통계적인 이상치는 IQR 기법으로 파악할 수 있지만, 실제로 그 값이 이상치인지는 구체적인 조사가 필요함
  • 이번 프로젝트처럼, 차량의 평균 수명은 주행거리 20만km라고 통요되고 있지만, 10여년 간 주행한 차량은 주행거리가 그 이상이 되는 경우도 충분히 가능함
  • 연비 또한 차량 모델별 가능 범위를 파악해야하며, 가격 또한 중고차 가격이라는 점에서 출고가와 큰 차이가 없는지 확인할 필요가 있음
  • 이처럼 통계적 이상치와 실제 이상치는 다른 것이므로 학습용 데이터를 구축하기 위해서는 많은 조사가 필요함

 

머신러닝은 무조건 이렇게 적용해야한다는 매뉴얼이 없다(고려할 요소가 넘쳐난다.. 수많은 경우의 수를 비교하는 과정)

 

  • 처음 모든 브랜드의 중고차 데이터를 이용하여 선형회귀 모델을 학습했을 때, R^2 값이 음수가 나오는 비정상적인 결과가 나왔음
  • 차량 모델은 크기나 순서가 있는 범주형 변수가 아니기 때문에 원-핫 인코딩을 적용하였으나, 이로 인해 200여개 모델이 모두 변수로 변환되면서 차원의 저주가 발생한 것으로 해석됨
  • 차원 축소를 위해 종류가 많은 범주형 변수인 모델과 브랜드에 라벨인코딩을 적용하였고, 선형회귀 모델 학습 결과 정상적인 성능지표가 도출됨
  • 이처럼 이론상으로 크기나 순서가 없는 범주형 변수는 원-핫 인코딩을 적용하는 것이 맞으나, 모델을 학습하는 과정에서 그 이론이 적용되지 않으면 다양한 경우를 비교할 필요가 있음 

 

 

[향후 보완점]

 

  • EDA는 좀 더 스토리라인에 맞춰 분석(스토리가 있는 분석이거나, 데이터 전처리 근거를 위한 컬럼별 EDA를 자세하게 넣을 필요가 있음)
  • 그래프를 잘 보이게 하는 방법을 고민해야 함(발표시 시각적 표현)
  • 그래프를 이용한 시각화에 집착하지 않고, 때로는 기술통계 수치를 직접적으로 보여주는 것이 더욱 효과적이기도 함(box plot이 오히려 한번에 이해하기 어려운 것 같은..)