
이번 주는 회귀분석의 이론을 학습한 뒤 회귀모델을 활용한 실습을 하였습니다. 추가로 릿지와 라쏘 같은 규제 선형모델 및 군집분석을 배워 적용해 보았으며 데이터 플랫폼에 대한 이론을 공부하였습니다.
[회귀 분석과 규제 모델을 직접 실습해보며 예측 모델링의 기본기를 다지고, 군집 분석을 통해 데이터 분류 감각을 키우는 것 , 데이터 플랫폼 개념을 이해해 분석 시스템의 구조를 파악하는 것] 을 목표로 삼았습니다
결정계수, 오차 합 계산 방식 등 기본적인 개념과 용어들을 학습하였으며 회귀분석의 종류 및 선형 회귀모델을 위한 데이터 변환 방법들에 대해 배웠습니다.
규제에 대한 이해를 바탕으로 라쏘, 릿지, 엘라스틱넷을 사용해보고 비교해 보았습니다.
비지도 학습을 통한 데이터 분류 방법으로 K-means와 같은 대표 알고리즘을 학습하고 고차원 데이터를 저차원으로 줄이는 PCA에 대해 배웠습니다
클라우드 기반 데이터의 처리, 저장 그리고 관리 기술의 학습을 진행하였습니다.
이번 주에 실습하면서 겪었던 어려움이나 궁금증의 해결 과정을 기록하였습니다
다음은 회귀모델을 이용한 중고차 가격 예측 실습을 수행하면서 겪었던 문제점 입니다
아랍에미리트의 중고차 데이터를 가져와서 회귀모델을 통해 차의 조건에 따른 가격을 예측하는 실습을 진행하였습니다.
처음에 데이터를 받아 결측치를 확인하였을 때 결측치가 상당히 많다는 것을 확인하였고
특히 실린더의 갯수나 모터트림 같이 단순히 평균이나 최빈값으로 채워넣는 것이 아닌 자동차의 모델이나 마력에 따라 결정이 되는 변수들이 결측치로 되어 있는 것을 보고 난감했었습니다.
pd.isnull(df).sum()
title 5
...
no_of_cylinders 81
horsepower 0
...
year 970
color 0
emirate 0
motors_trim 28
company 0
model 0
따라서 먼저 마력과 실린더의 피어슨 상관계수를 먼저 체크하여 실제로 이 데이터에서 실린더와 마력이 확실한 관계가 있다는 것을 확인하였고 마력 구간에 따라 실린더의 널 값을 채워 넣기로 결정을 하였습니다.
corr_df = df[['horsepower_clean', 'no_of_cylinders_clean']].dropna()
corr_value = corr_df.corr().iloc[0, 1]
print(f"horsepower와 no_of_cylinders 간의 피어슨 상관계수: {corr_value:.3f}")
horsepower와 no_of_cylinders 간의 피어슨 상관계수: 0.745

df['no_of_cylinders_clean'].value_counts().sort_index()
no_of_cylinders_clean
3.0 56
4.0 2993
5.0 53
6.0 3325
8.0 2986
10.0 53
12.0 366
이 과정에서 3,5,10 기통의 차량 분포가 매우 희소하다는 것을 발견 하였고 범위도 각각 4기통, 12 기통과 겹친다고 생각을 하여 3,4,5 기통을 4기통 그룹으로 묶어주고 10기통을 12기통에 통합을 시켜주는 데이터 처리를 하였습니다.
추가로 자동차 연식의 널값이 전체 데이터의 10퍼센트 정도였는데 평균이나 최반값으로 채워 넣으면 데이터의 왜곡이 발생할 수 있겠다는 판단이 들어 각 브랜드 + 모델별 최빈값으로 채워넣었습니다.
이러한 데이터 전처리 및 피쳐 엔지니어링 과정을 몇가지 더 거쳐서 모델을 학습시키고 교차검증을 통해 성능을 평가하였습니다.
🔍 사용한 모델
RandomForestRegressorXGBoostRegressor📊 성능
| 모델 | RMSE | R² |
|---|---|---|
| Random Forest | 0.3338 | 0.9154 |
| XGBoost | 0.3030 | 0.9303 |
📊 5-Fold 교차검증 결과 비교 (R² 기준)
| Fold | Random Forest | XGBoost |
|---|---|---|
| 1 | 0.9062 | 0.9219 |
| 2 | 0.9041 | 0.9243 |
| 3 | 0.9121 | 0.9283 |
| 4 | 0.9062 | 0.9209 |
| 5 | 0.9208 | 0.9340 |
| 평균 | 0.9099 | 0.9259 |
회귀모델을 이용한 중고차 가격 예측 실습을 수행하면서 느낀점
처음에 데이터를 확인하였을 때 결측치를 다른 독립변수들과의 관계를 생각하지 않고 무작정 채워 넣었다가 모델의 성능이 좋지 않게 나와서 다시 생각을 깊게 해보는 계기가 되었던 것 같습니다.
특히 도메인 지식이 EDA를 진행하는 과정에 있어서 상당히 중요하다는 것을 몸소 체험하였으며 전처리와 피쳐 엔지니링에 따라 모델의 속도와 결정계수가 크게 영향을 받는다는 것을 경험하며 값지니 인사이트를 얻을 수 있었습니다.
이번 주말에는 정보처리기사의 필기 시험을 대비하여 4과목 이론 스터디와 4과목 기출문제 3개년을 풀 계획이며, 회귀모델을 기반으로 EDA 과정을 보다 세밀하게 하여 자전거 대여량 예측 모델을 개선할 예정입니다.