Upstage AI LAB 부트캠프 5기/성장 기록

처음 나선 경진대회, 도전과 성취의 여정

김 도경 2024. 11. 15. 11:54

AI Upstage 부트캠프를 시작한 지 6주 차에 돌입하며 시작된 3주간의 경진대회가 드디어 끝을 맺었습니다.

많은 것을 배운 값진 첫 경진대회였습니다.

 

함께한 팀원들은 그만큼 대단한 사람들이어서, “내가 이런 사람들과 함께해도 괜찮을까?”라는 생각이 들 정도였죠.

노션, 깃, 인사이트 등 기본적인 부분조차 잘 몰랐던 저도 이번 대회에서 큰 성장을 경험했고,

마침내 1등이라는 값진 결과까지 얻었습니다.

 

이번 경험을 조금 더 정확히 기록하고 싶은 마음에 패리포터 활동에서도 이 경진대회를 남길 예정이지만,

먼저 간단히 회고를 작성해 보고자 합니다.

 

AI Upstage에서의 첫번째 경진대회

Upstage 부트캠프에서 팀으로 활동하는 4번의 경진대회가 있습니다.

각각 주제가 머신러닝, 딥러닝, 그 외에 다양한 주제로 다채로운데,

이번 대회는 그 첫 번째로 열리는 머신러닝에 대한 대회였습니다.

 

이번 경진대회는 서울시 아파트 부동산 가격을 예측하는 문제였다.

 

내가 참여한 부분

팀에서 End to End로 모든 것을 

 

- 데이터 전처리

처음에는 아파트 실거래가, 지하철역, 버스정류장 데이터셋이 제공되고, 제출 방법을 안내하는 가이드 데이터셋과 함께 베이스라인 코드도 주어졌습니다. 예측 문제라고 하니 “익숙한 문제지!”라는 생각이 들었지만, 그것은 큰 착각이었습니다...

  • 이전에 다뤄본 데이터 = 직접 얻은, 인사이트랑 모든 걸 아는 데이터...+ 일반적으로 얻은 시계열데이터를 직접 처리함
  • 이번 데이터 = 이게 뭐에요? +결측치 폭탄......

저는 서울에 살아본 적이 없어서 서울 집값에 영향을 미치는 세부적인 요인들을 전혀 알지 못했습니다.

가장 큰 문제는 결측치가 폭탄처럼 많았다는 점이었죠. “이게 맞는 건가?”라는 말을 수십 번은 더 했던 것 같습니다...

저는 주로 자연에서 직접 얻은 데이터를 사용해 왔기에, 결측치는 실험 오류로 간주하고 지워야 할 데이터였습니다. 스스로 얻은 데이터였기에, 남을 원망하기 전에 지워버리는 데이터....를 다루었던 저이기에 습관적으로 결측치를 가진 행을 모두 지웠습니다. 네, 그리고 결과는 깔끔하게 망했습니다...ㅎㅎㅎ

 

가장 큰 난관은 결측치를 채우는 문제였고, 지금까지 지우기만 하던 결측치를 채우는 방법을 다양한 면을 공부하면서 배울 수 있었습니다. 결측치를 채우는 방법으로 외부데이터를 가져와서 매칭 시키는 것도 했었고, 엄청나게 줄이게 되었습니다.

팀에 거의 X맨인가 싶을 정도로 잘하시는 분이...강의 듣는 느낌으로 다 알려주셨기에 할 수 있었던....제가 채운 게 아닙니다...

아직도 이 방법에 대해서 어떻게 하지?라는 생각이 많이 들고, 더 배워야겠다고 생각이 되었어요.

 

그리고 결측치가 채워지지 않은 컬럼은 삭제하고, 연속형 변수와 범주형 변수에 대해서 인코딩은 대회에서 준 베이스라인 코드로 라벨 인코딩을 진행하였습니다. 

 

- 데이터 EDA / 데이터 feature  선택

feature가 어디있는지도 확인을 해보고, target과 feature간의 상관관계도 확인을 하였습니다

이 부분에서는 많이 관여는 하지 못했는데, 그래도 제가 다뤄보지 못한 feature을 다루게 되면서, 이런식의 인사이트를 가질 수 있구나,를 많이 생각했고 정말정말 아쉬웠던 점은 도메인지식...! 이 정말 중요하다는 것을 또 느끼게 되었습니다.

 

- 데이터 모델 선택

모델 선택은 팀원들과 함께 토의하며 다양한 모델을 시도한 후 결정했습니다.

여러 시도를 거치는 동안 중간 리더보드에서는 LightGBM이 가장 좋은 성능을 보이는 것을 확인했지만, 데이터가 적고 복잡하며 결측치와 이상치가 많았기 때문에 “XGBoost가 더 잘 맞지 않을까?” 하는 막연한 생각으로 XGBoost를 고집해 보았습니다.

그러나 중간 리더보드 결과는 기대와 달리 좋지 않았습니다.

LightGBM과 XGBoost에 하이퍼파라미터 튜닝도 적용해 보았지만, 중간 결과는 끝까지 아쉬운 수준에 머물렀습니다.

 

그러나 놀랍게도 최종 리더보드에서는 기대했던 대로 XGBoost가 뛰어난 성능을 보여주며 좋은 결과를 얻을 수 있었습니다!

 

중간에 느낀 감정

중반기에 시도한 데이터...베이스라인코드를 raw 데이터로 돌리는 것보다 더 높은 RMSE값을 얻게 되었어요.

  • "나는 정말 아무것도 못하는 걸까...? 팀에 피해가 되면 어쩌지?"라는 생각이 많이 들었습니다.
  • 이전에는 전혀 다뤄보지 못한 데이터였기에 도메인 지식의 중요성을 절실히 느꼈습니다.
  • 팀으로 함께 작업해보니 대학 졸업 후 처음 느껴보는 즐거움이 있었어요. 이런 협업이 정말 재미있었습니다.
  • 하지만 짧은 기간 동안 더 많은 것을 해내고 싶다는 욕심이 들다 보니 가끔은 지치는 순간도 있었습니다.

마무리를 하면서 느낀 점

 

최종 순위!

  • 1등 달성! 순위가 꼭 중요한 것은 아니지만, 이렇게 좋은 결과를 얻을 수 있어 기뻤습니다.
    혼자서는 절대 낼 수 없었던 결과였어요. 결측치 채우기조차 혼자 힘으로는 어려웠는데, 훌륭한 팀원들을 만나 함께한 덕분에 가능했습니다.
  • 이번 경험을 통해 더욱더 노력하고, 더 많이 배우며 성장하고 싶다는 다짐을 했습니다.
    팀원 중 뛰어난 분들이 많아 많은 것을 배울 수 있었고, 생각하는 방식도 크게 배웠습니다.

처음 도전한 경진대회에서 좋은 성과를 얻었다고 생각합니다.
결과 그 자체보다 과정에서 배운 점들이 큰 의미였고,
이 기억을 발판 삼아 앞으로의 부트캠프에도 더 열심히 임해보겠습니다.