[패스트캠퍼스 Upstage AI Lab 2기 기자단] #6 AI Stages ML 경진대회 회고💻

156·2024년 4월 3일
post-thumbnail

AI Stages ML 경진대회를 마치고

캐글, 데이콘 등의 데이터 기반 대회 플랫폼과 비슷하게 Upstage에서 자체 운영하는 플랫폼인 AI Stages에서 지난 일주일 동안 경진대회에 참여했고, 막을 내렸다.

이번 글은 본 대회에 대한 회고이다. 즉, 나에 대한 피드백이다. 내가 뭘 잘했고 뭘 잘하지 못했을까? 어떤 점에서 아쉬웠고 그로부터 성장했을까?

1. 대회 개요: House Price Prediction

개요

부동산은 의식주에서의 주로 중요한 요소 중 하나로, 이러한 부동산은 아파트 자체의 가치도 중요하고, 주변 요소(강, 공원, 백화점 등)에 의해서도 영향을 받아 시간에 따라 가격이 많이 변동한다. 사람들은 더 싼 가격에 좋은 집을 찾고 싶고, 적절한 가격에 집을 판매하기를 원한다. 이러한 시세를 예측하게 되면 적정한 가격에 구매/판매 할 수 있다.

House Price Prediction 경진대회는 주어진 데이터를 활용하여 서울의 아파트 실거래가를 효과적으로 예측하는 모델을 개발하는 대회이다.

4개의 데이터셋이 제공된다.

  • 아파트 실거래가 데이터
    - 국토교통부 제공, 아파트의 위치, 크기, 건축 연도, 주변 시설 및 교통 편의성과 같은 다양한 특징들 포함
  • 지하철역 데이터
  • 버스정류장 데이터
  • 평가 데이터

팀 환경

팀 구성: 5인 4인 1팀 (총 8팀)
컴퓨팅 환경: Upstage GPU 서버 환경 제공 (VSCode와 SSH로 연결하여 사용)
협업 환경: Slack, GitHub
의사 소통: Zoom, Slack, 카카오톡

2. 프로젝트 팀 구성 및 역할

박주혁(본인): 모델 리서치, 모델 성능 실험, 모델 최적화, 모델 앙상블
김정헌(팀장): EDA, 시계열 데이터 전처리, 발표
유현지: EDA, 데이터 전처리, 모델 성능 실험
지수영: 데이터 전처리, 모델 성능 실험

3. 프로젝트 수행 절차 및 방법

  • 매일 10:00, 16:00 회의
    - 진행 상황 공유, 다음 목표 수립
  1. 프로젝트 개발 환경 구축 (VSCode + SSH, Slack, GitHub)
  2. EDA 진행, 데이터 구조 파악
  3. Gradient Boosting 계열 모델들의 성능 분석
  4. 모델 앙상블
  5. feature 데이터 범위를 기준으로 4개의 독립 모델 구축
  6. Optuna 사용하여 Hyper Parameters Tuning
  7. 4개의 독립 모델로 최종 submission 제출

4. 프로젝트 수행 결과

Public #5
RMSE: 16714.4593

Private #7
RMSE: 14179.4697

우리 팀은 target(집값)이 높은 데이터에 대한 예측력이 떨어지는 것을 확인, target이 높은 데이터에 대한 예측력을 올리기 위해 feature importance, 상관관계, EDA 등을 근거로 '전용면적' feature를 key로 가정하였다.
전용면적을 4개의 구간으로 나누어 데이터 분할, 각 데이터마다 모델을 학습해 총 4개의 독립 모델을 구축했고, 각 모델의 predict를 합치는 방식으로 예측했다.

4개의 독립 모델은 성공적이었다.
각 모델은 전용면적이 낮은 데이터, 높은 데이터에 맞춰서 학습했고, 예상대로 target이 높은 데이터를 포함, 모든 범위에서 예측력이 상승했다.
(Public RMSE: 18271.0504 -> 16714.4593)

4개의 독립 모델을 이용해
대회 종료 3시간 전 Public 8위(최하위) -> 대회 종료 직전 Public 5위까지 끌어올릴 수 있었다.

그러나
4개의 독립 모델은 결과적으로 실패했다.
'Public RMSE 개선'이라는 단면적인 관점에선 성공적이었으나, 전용면적 feature 하나만을 기준으로 target을 설명하려 했고, 절대로 충분하지 못한 EDA, 실험 횟수 등의 이유들이 합쳐져 Private 데이터에 약한 모습을 보였다.
그 결과로 shake-up이 크게 일어나지 않은 대회였음에도 2개의 순위를 내주며 뒤에서 2등이라는 만족스럽지 않은 결과를 얻었다. Public RMSE 대비, 모든 팀 중에서 Private을 가장 설명하지 못한 팀이 되었다.

5. 자가 피드백

잘했던 점

  • EDA/데이터 전처리를 맡은 다른 팀원들과 모델 리서치, 실험, 최적화 등을 맡아 효율적으로 분업하여 진행했다.
  • 다른 팀원들과의 협업을 위해 리서치, 실험 등의 결과를 정리해서 지속적으로 공유했다.
  • 시간이 부족했던 대회 종료 직전까지 성능을 끌어올리며 종료 날의 목표였던 Public RMSE 중위권 도달에 성공했다.
  • 마감 12시간도 남지 않은 시점에서 전용면적을 4개의 구간으로 나눈 feature를 보고 4개의 독립 모델 idea를 고안, 직접 구축하여 결과 제출까지 성공적으로 완수했다.

시도 했으나 잘 되지 않았던 점

  • 모델 앙상블. 사실 위의 '4개의 독립 모델'이 앙상블인 줄로만 알았다. 대회가 끝나고 나서야 앙상블 모델이 아니라 독립 모델을 결합한('Ensemble'이 아닌) 형태였다는 걸 깨달았다.

아쉬웠던 점

  • 팀원간의 소통이 원할하지 않았다. 그룹 스터디 기간도 가졌으나, 서로 친해지지 못하고 끝내 어색한채로 마치게 되었다.
  • 시간을 효율적으로 사용하지 못했다. 프로젝트 기간이 일주일로 짧았음에도 하루하루를 느슨한 긴장감으로 흘려보냈다.
  • EDA를 소홀히 했다. 머신러닝 모델과 파라미터 튜닝이 모든 걸 해결해줄 거라는 어리석음이었다.

프로젝트를 통해 배운 점 또는 시사점

  • 개발 문화에서 팀원간의 커뮤니케이션을 강조하는 이유를 피부로 이해했다. 더 좋은 팀워크는 더 좋은 결과를 만든다. 의사 소통, 의견 공유, 더 나아가 일이 재밌어진다.
  • EDA가 매우 중요하다는 것을 이해했다. 다른 조의 발표를 보며 EDA를 소홀히 했던 점을 깊이 반성했다.
  • submission 결과를 토대로 '강건한' 모델을 만드는 법을 배웠다.

0개의 댓글