카테고리 없음

ML 경진대회 회고

AI_Student 2024. 7. 22. 04:58
개인 회고 작성 개요
  • 소개:
  • 이번 경진대회를 진행하며 받았던 피드백에서 가장기억에 남았던 부분은 데이터의 처리와 가공이 가장 중요하다는 피드백이었습니다. 하여 개인적으로 데이터의 결측치를 줄이고 이를 활용한 추가 피쳐를 만들어서 데이터를 다듬는데 집중했습니다. 또한 그 데이터를 공유하고 데이터의 활용여부를 논의했습니다.
  •  
  • 나는 내 학습목표를 달성하기 위해 무엇을 어떻게 했는가?
  •  
  •  
  • 개인 학습 측면
  • 앞서 말하였듯 기본적으로 데이터의 가공에 공을 들였고 또한 강의를 통해 배운 내용들을 실제로 적용해보는 시간을 가졌습니다. 실제로 데이터의 결측치를 처리하기 위해 외부 api까지 활용하였고 데이터들을 EDA하면서 결측치를 매꾸지 못한 변수들을 사용할지 버릴지 의논하였습니다.
  • 공동 학습 측면
  • 생각나는 전략이나 생성하는 피쳐등 생각나거나 처리가 완료된 데이터들을 모두 공유하며 유용성에 대해 논의하였고 이를 활용하여 모델링을 진행하였습니다.
  •  
  • 전과 비교해서, 내가 새롭게 시도한 변화는 무엇이고, 어떤 효과가 있었는가? (2번째 경진대회부터 해당)
  • 지금까지의 프로젝트에서는 각자 어떤 내용을 진행했고 이후에는 어떻게 진행 할 생각이다. 이런 식의 진행상황 공유에 더 가까웠다면 이번에는 진행의 결과물을 공유하고자 했습니다. 이를 통해 진행 방법과 결과 데이터에 대한 아이디어를 공유했고 채택하거나 버릴 데이터를 선정하고 향후 방향을 결정하는데 도움이 되었습니다.
  • 마주한 한계는 무엇이며, 아쉬웠던 점은 무엇인가?
  • 프로젝트를 진행함에 있어 시간 배분에서 아쉬웠습니다. 결측치를 매꾸기 위해 외부 api나 데이터를 사용했는데 이과정에서 시간을 상당히 사용하였고 이후에 잘못 짜여진 코드를 일부 발견하면서 이미 진행했던 내용을 다시 작업하기도 했습니다. 처음부터 잘했거나 시간배분을 더 잘했더라면 이라는 아쉬움이 남습니다. 또한 너무 데이터처리 측면에만 몰두했던것 같기도 합니다. 물론 데이터가 기본이 되는 것은 맞지만 이후 오류가 발생하며 다시 작업을 하게 되면서 시간을 사용했습니다.
  • 한계/교훈을 바탕으로 다음 경진대회에서 시도해보고 싶은 점은 무엇인가?
  • 이번 대회에서는 기본적으로 제공되던 베이스라인코드와 데이터에 의존하여 대회를 진행한 경향이 있었습니다. 또한, 데이터 자체를 분석하고 결측치를 채우거나 버리거나 혹은 다른 피쳐로 대체할지에 시간을 많이 할애했다는 생각이 듧니다. 하여 다음 대회는 시간 분배쪽을 좀더 신경써서 모델링 쪽을 더 신경 써 보려 합니다
  • 나는 어떤 방식으로 모델을 개선했는가?
  • 앞서 서술하였듯 모델의 데이터를 처리하고 가공하는데 집중을 하였습니다. EDA를 통해 피쳐들을 돌아보며 결측치가 심히 많은 데이터들을 확인 하였고 그중 일부 피쳐는 결측치가 있어도 의미가 있는 데이터 인지를 확인하는 작업을 거쳤습니다.
  • 이 중 k-세대타입(분양형태), 기타/의무/임대/임의=1/2/3/4를 통합해 임대 아파트 여부에 대한 피쳐를 생성하고 거래 유형에 대한 피쳐를 통해 직거래여부에 대한 피쳐를 생성했습니다. 계약년도를 기준으로 건축년도와의 차이를 시각화 하였고 통상적으로 판단하는 신축 아파트 기준인 5년, 5~10년, 10이상을 기준으로 신축, 준신축, 구축을 구분하는 피쳐를 생성하였습니다.
  • 특히, 한 아파트 단지 한층에서 3건이상의 계약 취소가 발생한 경우를 확인한 결과 123곳이 발견되는 등 동시 다발 적으로 계약이 취소되는 건들이 발견되었고 한단지에서 150건이 넘는 계약취소가 발생하는 등 해제사유발생일은 충분히 의미있는 피쳐라 생각 되어 계약취소여부라는 피쳐로 생성하였습니다.
  • 마지막으로 중요하다고 생각되었으나 결측치가 많았던 피쳐로 위도, 경도를 카카오map api를 활용하여 매꾸어주고 추가적으로 조원이 공유한 주변 지하철역 거리 데이터에 결측치를 보안해 50m, 100m, 500m, 1000m내의 지하철 개수와 가장 가까운 지하철역의 거리를 피처로 만들어 공유했습니다.
  • 이후 해당 피쳐들에 더해 다른 조원과 조장이 제공해준 피쳐를 더해 randomforest를 돌려본 결과 rmse 25000대였던 점수가 rmse 31700대로 오히려 떨어져 버린 모습을 확인 하였음
  • 이후 베이스라인에서 위도 경도에 대한 결측치만 보충한 데이터로 결측치 80만개의 피쳐를 모두 제거하고   randomforest를 돌려본 결과 31700대로 오히려 값이 떨어진 모습을 확인함
  • 제거된 피쳐들중 의미 있는 데이터가 존재했다는 생각으로 앞서 말한 피쳐들을 생성하여 데이터에 추가하고 조장의 강남여부 피쳐를 추가하여 모델링을 한결과 37400대로 오히려 값이 떨어진 모습을 확인했습니다.
  • 서로다른 모델을 스태킹하여 값을 향상시켜 보고자 randomforest, xgboost, lightgbm을 사용하여 스태킹을 진행하였고 mata model로 randomforest, xgboost를 사용하여 보았지만 각각 37600대와 36700대로 소량의 향상만으로 보여 유의미 해 보이진 않았습니다.
  •  
  • 내가 해본 시도 중 어떠한 실패를 경험했는가? 실패의 과정에서 어떠한 교훈을 얻었는가?
  • 모델링에서 가장 중요한 부분이 데이터라고 생각하여 데이터를 가공하여 결측치를 줄이는데 가장 많은 시간을 할애했지만 오히려 베이스라인 보다 값이 떨어진 모습을 확인했다. 매우 안타까웠고 이를 통해 데이터 가공뿐만아니라 모델링 쪽에도 상당히 시간을 할애하기 위해 시간분배를 신경쓰고자 한다.
  • 서로 다른 모델로 집값을 예측해보고 이 모델들을 스태킹하여 성능향상을 꾀했지만 역으로 값이 떨어지는 모습을 확인 했습니다. 역으로 조장의 timesplit을 사용한 lgbm모델과 다른 조원이 조장의 모델에 hill_climbing을 추가한 모델이 상당히 좋은 모습을 보이는 것으로 보아 데이터 가공보다는 데이터를 활용하는 측면과 모델링의 측면에서 놓친부분이 있는 것을 예상할 수 있었습니다.
  • 물론 데이터가공과 처리가 중요치 않은 것은 아니지만 실제 값을 예측하는 모델링 전략 또한 만만치 않게 중요하다고 생각이 들었습니다.
  •  
  • 협업 과정에서 잘된 점/ 아쉬웠던 점은 어떤 점이 있는가?
  • 나름 데이터를 정제하고 가공할 때에는 어떤 부분이 진행 될 때마다 완성된 데이터를 공유하고 이에 대한 의견을 주고받았습니다. 하지만 후반에 들어 시간에 쫓기기 시작하면서 의견 교환이나 데이터의 공유 등이 부족해 졌던것 같습니다. 또한, git의 사용이 미숙하여 코드를 공유하는 과정에서 약간의 버벅임이 있었던 부분이 아쉽기도 합니다.
  • #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #인공지능개발자 #ML #머신러닝 #경진대회 등
  •  
  •  
  • 프로젝트 발표 이후 회고(타팀의 발표를 지켜본 후 인사이트)

    대부분의 상위권팀이 해당 문제를 시계열적 문제로 해결한 모습을 확인했다. 경우에 따라서는 구, 동별로 나누어 각각 모델링을 하는 경우도 있었으며, 아예 시군구, 번지, 아파트를 합친후 개별 id화하여 해당 id에 대해 같은 지역의 아파트의 직전 거래 가격을 lag feature로 활용하는 등 아예 시계열 문제로서 문제를 해결하는 경우도 있었으나 시계열 문제로 보지는 않지만 시계열적 특성을 지닌 lag feature를 사용하는 경우도 있었고 아예 시계열적 특성을 배제하는 경우 또한 존재하였다.

    나의 경우 이 시계열적 특성을 배제한 경우에 해당하였다. 아마 내가 놓친 부분이 이 시계열적 특성에 대해 놓친것으로 생각했다.
  • 하지만 피쳐를 놔둔채로 피쳐들의 다중공선성을 vif를 통해 낮추고 결측치를 줄이고 여러 모델로 확인 후 hyperparameter를 튜닝함으로써 시계열적 특징을 더하지 않고 성능을 향상시키는 케이스도 존재 하였다.

    결론은 이 문제는 완벽한 시계열 문제는 아니지만 시계열적 특성이 어느정도 있다는 점을 인지했다. 따라서 데이터 전처리를 좀더 꼼꼼하게 진행하거나 시계열적 특성을 집어넣거나 이 둘 중 하나를 놓친것을 확인하였다.
  • 이 시계열적 특징을 가진다는 점이 내가 놓친 문제의 키포인트라 생각한다. 문제 해결을 위한 키포인트를 집는것 이것이 데이터 가공이나 모델링의 부분에서 상당히 큰 요소로 작용한다는 것을 알게되었다.