캐글필사 - Regression of Car Prices

Sooin Yoon·2025년 3월 13일

Overview

  • 중고차 가격예측 모델을 만들기 위해서 LightGBM과 CatBoost 머신러닝 모델을 어떤 모델이 더 좋은 성능을 내는지 실험하였음
  • LightGBM vs CatBoost 모델 성능을 비교할 때는 RMSE
  • LightGBM 내부적으로 MAE vs MSE를 비교할 때는 예측값 차이를 분석하는 방식
  • 마지막으로 Autogluon의 TabularPredictor를 사용하여 LightGBM(GBM)과 CatBoost(CAT) 모델을 학습하고 평가하는 과정

Evaluation Matrix

RMSE(Root Mean Squared Error)

  • 평균 제곱근 오차로 회귀 모델의 성능을 평가하는 지표
  • 실제값과 예측값 간의 차이를 제곱하여 평균을 낸 후, 다시 제곱근을 씌운 값
  • 오차의 크기를 측정 → RMSE 값이 작을수록 모델이 더 정확하게 예측한 것
  • 이상치(outlier)에 민감 → 큰 오차가 있을 경우 RMSE 값이 급격히 증가
  • MSE(Mean Squared Error)의 단점을 보완 → MSE는 오차를 제곱하여 값이 커지므로, 다시 제곱근을 씌워 단위를 맞춰줌

MAE(Mean Absolute Error)

  • 각 오차의 절댓값을 평균한 값
  • 이상치(outlier)에 강함
  • 직관적이고 해석이 쉬움
  • 실제 가격 예측이 중요할 때 유용

MSE(Mean Squared Error)

  • 각 오차의 절댓값을 평균한 값
  • 이상치(outlier)에 강함
  • 직관적이고 해석이 쉬움
  • 실제 가격 예측이 중요할 때 유용

Autogluon

  • LightGBM과 CatBoost를 자동으로 튜닝하고, 어떤 모델이 더 성능이 좋은지 비교하려는 목적
  • Autogluon의 TabularPredictor를 사용하여 회귀(regression) 문제를 학습하는 객체 생성
  • RMSE 평가 지표를 사용하여 성능을 비교
  • 시간 정해서 그 시간동안 테스트하면서 최적의 성능을 내는 모델 찾도록 설정

왜 MAE와 MSE를 비교할까?

: MAE와 MSE로 학습했을 때 예측값이 어떻게 차이가 나는지 비교하기 위해 두 번 학습한것

EDA

  • brand : 자동차 브랜드 'MINI', 'Lincoln', 'Chevrolet', 'Genesis', 'Mercedes-Benz', 'Audi', 'Ford', 'BMW', 'Tesla', 'Cadillac', 'Land', 'GMC', 'Toyota', 'Hyundai', 'Volvo', 'Volkswagen', 'Buick', 'Rivian', 'RAM',
    'Hummer', 'Alfa', 'INFINITI', 'Jeep', 'Porsche', 'McLaren',
    'Honda', 'Lexus', 'Dodge', 'Nissan', 'Jaguar', 'Acura', 'Kia',
    'Mitsubishi', 'Rolls-Royce', 'Maserati', 'Pontiac', 'Saturn',
    'Bentley', 'Mazda', 'Subaru', 'Ferrari', 'Aston', 'Lamborghini',
    'Chrysler', 'Lucid', 'Lotus', 'Scion', 'smart', 'Karma',
    'Plymouth', 'Suzuki', 'FIAT', 'Saab', 'Bugatti', 'Mercury',
    'Polestar', 'Maybach'
  • model: 자동차 모델 'Cooper S Base', 'LS V8', 'Silverado 2500 LT', ..., 'e-Golf SE', 'Integra w/A-Spec Tech Package', 'IONIQ Plug-In Hybrid SEL'
  • model_year : 자동차연식
  • milage : 주행거리
  • fuel_type : 연료유형 'Gasoline', 'E85 Flex Fuel', nan, 'Hybrid', 'Diesel',
    'Plug-In Hybrid', '–', 'not supported'], dtype=object)
  • engine : 엔진 크기 및 유형 ['172.0HP 1.6L 4 Cylinder Engine Gasoline Fuel',
    '252.0HP 3.9L 8 Cylinder Engine Gasoline Fuel',
    '320.0HP 5.3L 8 Cylinder Engine Flex Fuel Capability', ...,
    '78.0HP 1.2L 3 Cylinder Engine Gasoline Fuel',
    '139.0HP 1.6L 4 Cylinder Engine Plug-In Electric/Gas',
    '313.0HP 2.0L 4 Cylinder Engine Plug-In Electric/Gas'],
    dtype=object)
  • transmission : 변속기 종류 'A/T', 'Transmission w/Dual Shift Mode', '7-Speed A/T',
  • ext_col : 외장 색상
  • int_col : 내장 색상
  • accident : 사고여부 ['None reported', 'At least 1 accident or damage reported', nan]
  • clean_title : 차량의 타이틀 상태, ['Yes = 사고없음', nan = 사로기록있음]
  • price : target 중고차 예측값!

Notebook 필사

google colab 이요

링크텍스트

LightBGM?

  • Gradient Boosting 기반(여러개의 결정 트리)를 순차적으로 학습하여 예측 성능을 향상
  • 속도가 빠름(대구모 데이터셋에서도 빠르게 학습 가능)
  • 메모리 효율적(GPU 지원 및 최적화된 데이터 구조(lgb.Dataset)
  • 정확도가 높음(데이터 불균형이 있거나 복잡한 패턴도 잘 학습)
  • 과적화 방지 기능(regulation or early stopping 지원)
  • 일반적인 pandas DataFrame을 직접 훈련하지 않고 자체적으로 최적화된 데이터구조(lgb.Dataset)을 사용하여 모델 학습 => 메모리 효율성 높이고, 학습 속도 빠름
  • LightGBM의 기본 학습 방식은 lgb.Dataset를 사용해야 함
  • 결측값 자동으로 처리(데이터 전처리 편해짐)

여기서 LightBGM이 사용된 이유?
빠르고 강력한 부스팅 모델을 사용하여 중고차 가격을 예측하고자

CatBoost(categorical boosting)

  • gradient boosting 기반 머신러닝 라이브러리
  • LightGBM과 유사하지만, 범주형(카테고리) 데이터 처리에 강점을 보임

OOF(Out-Of-Fold)?

  • K-Fold 교차검증이란? 데이터를 k개의 조각으로 나누고 각 fold를 validation set으로 사용하면서 K번 반복하여 학습하는 방법
  • 전체 데이터를 여러번 검증해볼수 있기 때문에 모델 성능을 더 잘 평가할 수 있음

K-Fold OOF 예측 과정 (예제: 5-Fold)
데이터를 5개의 Fold로 나눔 -> 각 Fold를 한 번씩 검증셋으로 사용하고, 나머지를 학습셋으로 사용하여 총 5번 학습 -> 각 Fold에서 검증 데이터에 대한 예측을 저장 (OOF 예측 생성) -> 모든 Fold에서 나온 예측값을 합쳐서 전체 데이터에 대한 OOF 예측 생성

Lesson Learned

  • LightGBM과 CatBoost를 비교할 때는 RMSE, MAE, MSE 모두 확인하면 더 정확한 성능 비교가 가능하다(꼭 어떤걸 써야 좋다는게 아니란걸!)
  • MAE와 MSE는 평가 방식이 다르므로, 예측값이 어떻게 변하는지 비교함 할 필요가 있었음
  • OOF 예측을 활용하면 데이터의 전체적인 일반화 성능을 평가할 수 있음을 배움
  • LightGBM은 빠르고 수치형 데이터에 강하며, CatBoost는 범주형 데이터에 최적화되어 있음
  • K-Fold 교차 검증을 통해 모델이 학습하지 않은 데이터에 대한 예측 성능을 검증할 수 있음
  • Mean RMSE(73,482.00)로 모델 예측 성능 판단
  • MAE (검증 데이터) 17,656.9, MSE (검증 데이터) 약 5.4억

0개의 댓글