아파트 실거래가 예측 프로젝트 회고록
해당 글에서는 아파트 실거래가 예측 Report에 대해 소개합니다.
프로젝트 개요
개요
본 대회는 House Price Prediction 경진대회는 주어진 데이터를 활용하여 서울의 아파트 실거래가를 효과적으로 예측하는 모델을 개발하는 대회이다.
데이터
- 국토교통부에서 제공하는 아파트 실거래가 데이터(아파트 위치, 크기, 건축년도, 주변시설 및 교통 편의성 등)
- 서울시에서 제공하는 지하철역 데이터
- 서울시에서 제공하는 버스정류장 데이터
- 평가 데이터(최종 모델 성능에 대한 검증을 위해 사용)
- input : 9,272개의 아파트 특징 및 거래정보
- output : 9,272개의 input에 대한 예상 아파트 거래금액
프로젝트 팀 구성 및 역할
팀 구성
프로젝트 팀원으로 배정된 인원은 총 5명이며, 팀원들은 다음과 같다.
역할 분담
- 데이터 확인 및 수집(Data Verification and Collection)
- 데이터 전처리 및 EDA(Data Preprocessing and Exploratory Data Analysis)
- 모델링 및 파라미터 튜닝(Modeling and Parameter Tuning)
- 결과 정리 및 보고서 작성(Summarization of Results and Report Writing)
모든 팀원이 위 Task를 수행했지만 각자 전문적인 역할을 수행하였다. 특히, 나는 모델링 및 파라미터 튜닝(Modeling and Parameter Tuning)에 비중을 크게 두고 프로젝트에 참여하였다.
프로젝트 진행 과정
우리 팀의 RMSE를 줄여나가는 자세한 Code 및 발표자료는 Github에서 확인할 수 있다.
RMSE 20000점 대
우선적으로 부동산 도메인과 관련된 외부데이터들 수집이 가장 중요하다고 생각하여 데이터를 수집하였다.
1
2
3
4
5
6
- 서울시 지하철역 데이터
- 서울시 버스정류장 데이터
- 서울시 교육환경 데이터(초중고, 학군)
- 서울시 문화 및 상관 데이터(대형소매점 판매액지수, 문화기반 시설 수)
- 사회통합지표(합계출산율, 취업률)
- 경제지표(기본금리, 회사채, CD금리)
모델링
각자 외부데이터를 하나씩 도맡아 수집하였고, 결측치가 100만개 이상인 컬럼변수들을 전부 drop하였다. 여기서 결측치가 남은 범주형 변수들을 ‘0’으로 채워주고 LabelEncoding
을 진행하였다. 외부 데이터와 기존데이터와 전부 병합한 데이터에서 target값과 가장 상관관계가 높은 전용면적
컬럼을 면적단위로 나누어서 XGBRegressor
모델을 사용하여 학습을 진행하였다.
RMSE 점수를 올리는데 있어 가장 중요했던 파생변수 생성 부분에서는 코로나 이후인 ‘2020년’ 이후 데이터를 활용하여 코로나 이후의 부동산 시장의 특성만을 반영하는 것이 가장 좋다고 판단하였으며, 서울시 집값 중 가장 비싸고 투기성이 가장 높은 강남구 주변지역을 따로 묵어 강남여부
라는 파생변수를 생성하였다. 이외에도 탑급아파트
, 아파트연식
, 로얄층
등의 파생변수를 생성하였다.
결과
RMSE 19000점 대
RMSE 20000점대 달성 이후, 다양한 방법으로 RMSE를 줄이기 위해 노력하였다. 하지만 성능이 생각보다 좋아지지 않았고, 의외로 모델이 중요하지 않고 데이터에 문제가 있을 것이라는 생각이 들엇다.
모델링
데이터에 문제가 있을 것이라는 생각이 든 이후, Correlation Matrix를 통해 음의 상관관계가 높은 변수들을 전부 제거하였고, 결측치가 6~70% 이상 존재하는 모든 컬럼변수들을 임의로 전부 drop하였다. 파생변수 부분에서는 이전 20000점대에서 생성한 파생변수들을 그대로 사용하였다. 여기서 19000점대로 갈 수 있게 해준 것은 강남여부
파생변수였다. 강남여부
파생변수가 target값과 상관관계가 생각보다 높아서 우리팀은 여기서 많은 힌트를 얻었다. 그렇다면 구
별로 나누어서 학습을 진행한다면 어떨까? 라는 생각이 들어서 구
별로 나누어서 학습을 진행하였다.
결과는 Public Score 19000점대로 나왔고, Private Score는 14000점대로 나왔다.
결과
자체 평가 의견
잘했던 점
- AutoML 같은 편리한 라이브러리가 있지만 직접 모델링을 진행하면서 모델의 성능을 높이는 방법에 대해 더 많은 고민을 할 수 있었다.
- 많은 스크럼시간을 통해 각자의 다양한 인사이트와 아이디어를 공유하고, 서로의 아이디어를 존중하며 프로젝트를 진행하였다.
시도 했으나 잘 되지 않았던 것들
- 데이터 무조건 많으면 성능이 잘 나온다는 생각으로 외부데이터를 많이 모아서 사용하였지만, 결국에는 데이터의 퀄리티가 중요하다는 것을 깨달았다. 이후 기본 데이터의 퀄리티를 높이기 위해 EDA, Feature Engineering을 통해 어떤 것이 중요한 지 알게되고 데이터 성능을 높이기 시작하였다. 처음부터 무작정 데이터 수집을 하며 시간을 허비했던 부분이 잘 되지 않아 아쉬웠다.
아쉬웠던 점들
- 생각보다 시간이 부족하여 더 많은 시간을 투자하지 못한 것이 아쉬웠다.
- 업스테이지 서버가 자주 끊기면서 모델 학습 중 끊기며 처음부터 다시해야하는 경우도 많아서 주최측에 약간의 아쉬움이 있다.
프로젝트를 통해 배운 점 또는 시사점
- EDA와 Feature Engineering이 인공지능분야에서 90%를 차지한다는 것을 깨달았다.
- 협업 스킬이 더 향상 되었다.
- 프로젝트 진행에 있어 시간 배분을 잘하는 것이 중요하다는 것을 깨닫게 되었다.
1
2
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄