본 프로젝트는 수도권 아파트 전세 실거래가를 예측하는 모델을 개발하는 것을 목표로 했습니다.
시계열 데이터 분석, 머신러닝 모델링 등 다양한 기술을 실제 문제에 적용하여, 예측하는 것이 주요 과제였습니다.
제공된 데이터셋은 아파트 전세 실거래가 예측을 목표로 하며, 학습 데이터와 테스트 데이터에는 각 건물의 기본적인 정보와 전세 실거래가로 구성됩니다.
또한 지하철, 공원, 학교, 금리 데이터가 추가적으로 제공됩니다.
- 학습 데이터: 2019년 4월 1일 ~ 2023년 12월 31일 (1,801,228개)
- 평가 데이터: 2024년 1월 1일 ~ 2024년 6월 20일 (150,172개)
- 금리 데이터: 2018년 12월 ~ 2024년 7월 (68개)
- 공원 데이터: 위도, 경도, 면적 (17,564개)
- 학교 데이터: 위도, 경도 (11,992개)
- 지하철 데이터: 위도, 경도 (700개)
.
├── README.md
├── config
│ ├── cluster_dudep.pkl
│ ├── ensemble.yaml
│ ├── index_list.pkl
│ ├── lgbm_params.yaml
│ ├── radii_values.yaml
│ ├── radii_values_lgbm.yaml
│ └── xgb_params_info.pkl
├── data
├──src
├── ensemble.py
├── feature-extraction.py
├── models
│ ├── lgbm_cluster.py
│ ├── xgb_cluster.py
│ ├── xgb_dedup_tuning.py
│ └── xgb_valid_test.py
├── preprocessing
│ ├── remove_duplicates.py
│ └── xgb_dedup_grid_search.py
└── utils
├── HuberLoss.py
├── age_group.py
├── compute_place_metrics.py
└── config_loader.py
-
config 폴더
raddi_values_lgbm.yaml은lgbm.py에 들어가는 데이터를 만들기 위한 파일입니다.raddi_values.yaml은xgb_depoist.py,xgb_deposit_per_area.py에 들어가는 데이터를 만들기 위한 파일입니다.index_list.pkl,cluster_dedep.pkl,xgb_params_info.pkl파일들은xgb_deposit_per_area.py를 실행할 때 사용하는 파일들 입니다.ensemble.yaml은ensemble.py를 실행할 때 사용하는 YAML 파일입니다. 앙상블하고 싶은 CSV 파일과 각 모델에 할당할 가중치가 적혀 있습니다. -
results 폴더
xgb_deposit_per_area.csv,xgb_deposit.csv,lgbm.csv: 각 모델의 예측 결과가 저장된 파일들입니다.esemble.csv: 모델의 예측 결과로 앙상블 한 파일입니다. -
preprocessing 폴더
remove_duplicates.py: train data에서 중복 제거를 위한 코드입니다.xgb_dedup_grid_search.py:xgb_deposit_per.py에 사용 하기 위한 hyper parameter를 grid search로 찾는 코드입니다. -
src 폴더
ensemble.py: 여러 모델의 예측 결과를 soft voting 방식으로 앙상블해주는 코드입니다. YAML 파일을 읽어와 가중치와 함께 예측을 진행합니다.feature-extraction.py: 변수를 추가하는 코드입니다 -
models 폴더
lgbm.py: LightGBM 바탕으로 만든 모델입니다. 세부 내용은 #9 PR에서 확인할 수 있습니다.xgb_deposit_per_area.py: XGBoost를 바탕으로 만든 모델입니다. 자세한 내용은 #11 PR을 참고하세요.xgb_deposit.py: XGBoost 기반 모델로, 자세한 내용은 #10 PR에서 확인할 수 있습니다. -
Utils 폴더
HuberLoss.py: 모델을 돌리기 위한 custom loss, custom metric이 구현된 코드입니다.age_group.py:feature-extraction.py에 사용되는 건물의 연도로 특정 숫자를 부여합니다.compute_place_metric.py:feature-extraction.py에 사용되는 거리 계산을 해주는 코드입니다.config_loader.py:feature-extraction.py에 사용되는 코드입니다.
-
개별 모델 실행:
src폴더에 존재하는feature-extraction을 실행하면 모델 실행을 위한 데이터 파일(train_aftercountplace.csv,test_aftercountplace.csv)이 생성됩니다.실행 시,
config폴더에 있는 적용할radii_valuesYAML 파일을 입력으로 제공해야 합니다.python feature-extraction.py radii_values.yaml이후
src/models폴더에 존재하는 각 모델을 실행하면 예측 결과 파일(xgb_deposit.csv,xgb_deposit_per_area.csv,lgbm.csv)이 생성됩니다.python model_file_name.py -
앙상블(Ensemble) 실행:
src/ensemble.py는 각 모델이 예측한csv파일을 읽어 가중치에 따른 앙상블을 진행합니다.앙상블 실행 시,
config폴더에 있는ensemble.yaml파일을 읽으며, 해당 YAML 파일은 예측에 사용될 CSV 파일과 각 파일의 가중치를 정의합니다.python ensemble.py
-
제출 파일:
results/Ensemble.csv -
Private MAE: 4262.3147
-
최종 순위: 3등
파이널로 제출한 파일은
ensemble.py스크립트를 실행하여 생성할 수 있습니다.다음 명령어를 사용하여
Ensemble.csv파일을 생성하세요:python ensemble.py