<대회 회고>
Upstage AI 부트 캠프에 참여한 이후, 처음으로 참여하게 된 경진대회가 드뎌 마무리되었습니다.
경진대회 기간이 12월 23일부터 1월 7일까지였으니 AI 부트캠프 시작하고 한달 조금 넘은 시점에 시작환 경진대회라서 아직 관련지식이 많이 부족한 상황이어서 걱정도 많이 되었지만, 경진대회 팀이 꾸려지고, 같이 스터디도 하면서 진행을 하니, 팀원들로부터 많은 것을 배우면서 같이 목표를 완수할 수 있었던 것 같습니다. 길다면 길수도 있고, 짧다면 짧을 수도 있는 기간이 끝나고 나니 다행스러운 마음과 함께 아쉬움도 많이 드는 경진대회였습니다.
경진대회의 주제는 ‘서울시의 아파트 실거래가 예측’이라는 주제로 치러졌습니다. 어찌보면 집값이라는 것은 가장 친숙한 주제이기도 하고, 우리나라 인구의 상당수가 아파트에 살고 있어서 상당히 실용성이 있는 주제라는 생각도 들었습니다.
<대회 개요>
대회는 주어진 데이터를 활용하여 서울의 아파트 실거래가를 효과적으로 예측하는 모델을 개발하는 대회입니다. 기본 데이터셋은 Upstage 경진대회 사이트에서 기본 데이터를 활용할 수 있고, 필요하다면 추가로 외부 데이터셋을 활용할 수도 있습니다. 참가자들은 대회에서 제공된 데이터셋을 기반으로 모델을 학습하고, 서울시 각 지역의 아파트 매매 실거래가를 예측하는데 중점을 둡니다. 이를 위해 선형 회귀, 결정 트리, 랜덤 포레스트, 혹은 딥러닝과 같은 다양한 regression 알고리즘을 사용할 수 있습니다.
<작업 프로세스>
저희 팀에서는 우선 크게 4단계로 진행했습니다. 1) 데이터 수집 및 분석 2) 데이터 전처리 3) 피쳐엔지니어링 4) 모델 선택 학습 및 평가
<대회 진행 상황>
우선 대회 기간 중에 온라인 강의를 이용하여 관련 지식들을 학습하면서 매일매일 그날 배운 것들을 활용하며 응용하는 식으로 진행해보았습니다. 저희 팀은 컴퓨터 공학과 전공자는 한명도 없는 팀이었지만, 같이 팀원들끼리 그룹 스터디를 진행하면서 서로 모르는 것을 물어보기도 하면서 스터디를 하니 실력향상에 많은 도움이 되었습니다.
프로젝트를 진행함에 있어서 팀원들끼리 앞으로의 일정에 대해서도 어떤 식으로 진행할 것인지 어떤 식으로 분업이 이루어질 것인지데 대해서도 토의를 하였습니다. 처음엔 시작 단계에서부터 역할을 분담하자는 의견도 있었지만, 우선 이 프로젝트의 목표가 높은 순위를 얻는 것도 좋겠지만, 머신러닝의 전반적인 프로세스를 경험해보고, 이해하는 것에 큰 의의가 있다고 생각해서 시작 단계에서는 역할을 분담하지 않고 다같이 프로세스의 전반적인 부분을 학습하고 어느 정도 시도해 본 후에 대회 절반정도 지날때쯤에 역할을 분담하여 작업을 하는 것으로 의견을 모았습니다.
<데이터 수집 분석 및 전처리>
우선 데이터를 분석하고 수집하는 작업부터 시작해보았습니다. 이미 기본적으로 제공되는 데이터셋은 총 4가지였습니다. 첫번째는 국토교통부에서 제공하는 아파트 실거래가 데이터로 아파트의 위치, 크기, 건축 연도, 주변 시설 및 교통 편의성과 같은 다양한 특징들을 포함하고 있었습니다. 두번째와 세번째 데이터는 추가 데이터로, 서울시에서 제공하는 지하철역과 버스정류장에 대한 다양한 정보들을 포함하고 있었습니다. 마지막 네번째 데이터는 평가 데이터로, 최종 모델성능에 대한 검증을 위해 사용되는 데이터셋이었습니다. 아파트 정보에 대한 데이터셋에는 여러 피쳐들이 포함이 되어있었는데, 몇몇 중요한 피쳐들이 결측치가 많이 발견되었습니다. 전체 1,128,094개의 Row 중에서 평균 87.6만개(78%)의 결측치가 확인되었습니다. 이 부분은 외부 데이터를 이용하여 결측치를 보완하는 작업을 하기로 했습니다. 서울시 공동주택 아파트 정보 외부데이터를 활용하여, 데이터를 Merge 하는 작업을 수행하였습니다. 그리고 또한 가장 중요하다고 생각되는 피쳐 중의 하나가 바로 아파트의 위치에 대한 정보인 X,Y좌표(경도, 위도)에 대한 좌표였는데, 이것은 Naver Maps의 Geocoding API를 활용하기로 하였습니다. 그 결과, X,Y 좌표의 결측값이 65개로 대폭 감소하였고, 나머지 주요 칼럼들은 결측값이 평균 30만개로 감소하였습니다.

<피쳐 엔지니어링>
아파트 시세에 중요한 영향을 미치는 요소 중의 하나가 역세권이라는 요소입니다. 아파트 주변에 지하철이 있고 가까울수록 아파트 시세가 높은 시세를 형성하는데에 영향을 미칠거라고 생각하여 아파트 위치와 지하철 역과의 거리를 산출하는 작업을 하여 ‘거리값‘ 피쳐를 데어터셋에 추가해보기로 하였습니다. 거리값을 산출하려면 아파트와 지하철의 X,Y의 좌표값이 필요한데, 앞서 진행한 데이터 전처리 작업에서 이미 Naver API를 이용하여 X,Y 좌표값의 결측값을 많이 줄여놓은 상태라서 거리값 구하는 코드만 추가하면 되었습니다. X,Y 좌표가 둥근 지구위의 좌표를 나타낸 경도, 위도 값이다보니 이것을 이용하여 직선거리를 구하기 위해선 별도의 공식이 핅요하였고, 이것이 하버사인 공식이라는 것을 검색을 통해 알 수 있게 되었습니다. 하버사인 공식을 적용하여 모든 아파트와 지하철의 최단 거리값을 구해서 나온 거리값을 ’거리값‘이라는 별도의 피쳐를 추가하여 입력하여 성능 향상 효과가 있는지 테스트해보았습니다. LGBM 모델에서 테스트해본 결과, 성능이 오히려 떨어지는 결과가 나와서 혹시 가까운 거리일수록 적은 수의 피쳐값이 아닌 높은 수치의 피쳐값을 적용하면 높은 가격에 영향을 주지 않을까 하는 추측이 들어서 3에서 거리값을 뺀 값(3-거리값)을 거리값에 입력하도록 코드를 수정해보았습니다. 3에서 거리값을 뺀 이유는 거리값의 최고값이 2.8정도로 나왔기 때문에 양수의 값이 나오도록 하기 위해서 그렇게 적용하였습니다. 이렇게 수정후에 테스트해보니 성능이 약간 오르는 효과는 있었습니다. 성능이 조금 오르긴 했지만, 너무 적은 차이만큼 향상되는 효과가 있어서 역세권이라는 영향력이 크게 미치지 않는 것처럼 느껴져서 다시 한번 코드를 수정해보았습니다. 이번에는 좀 더 거리값 수치에 가중치를 주는 것이 어떨까해서 3-거리값에 제곱을 하여 np.power(3-distance, 2) 와 같이 코드를 작성해보니 오히려 성능이 떨어져서 지수값을 수정해보면 저금 다른 영향이 있지 않을까 하는 생각이 들어 지수값을 수정해보면서 테스트해보다가 1.4 정도로 지수값을 수정해서 np.power(3-distance, 1.4) 이렇게 코드를 작성후에 테스트해보니 가장 RMSE 값이 좋은 값이 나왔고, 실제로 Upstage 리더보드 중간 제출에서도 RMSE 값이 16876.1254에서 16202.9025로 670점 이상 상승하는 효과가 있었습니다.

<모델 선택 학습 및 평가>
마지막으로 머신러닝 알고리즘을 구현해보았습니다. 먼저 다양한 머신러닝 기법들 중에서 가장 가격 성능 예측이 좋은 머신 러닝 기법을 검색 후 적용하기로 하였습니다. 우선 단일 ML 알고리즘 중에서 LGBM(Light GBM)이 성능이 가장 좋아서 LGBM을 적용해보았습니다. 그리고 단일모델만 적용하는 게 아니라 앙상블 기법을 구현해서 성능향상을 유도해보았습니다. Voting Regressor를 이용해서 Light GBM 과 XGBoost의 예측값을 평균내어 최종 결과로 도출하는 앙상블 모델을 구현해 보았습니다.


<대회 결과>
저희 팀은 중간 제출에서는 4위를 기록하였지만, 최종 제출에서는 3위를 기록하였습니다.
<소감>
16일간의 대회기간이 처음에는 여유가 있을거라고 생각했는데, 막상해보니까 생각외로 작업할 것도 많고, 막판에 가서는 시간에 쫓겨서 작업을 해서 좀 걱정도 되었지만, 팀원들간의 협업이 잘 이루어져서 작 마무리된 것 같습니다. 저희 팀에는 컴퓨터 공학 전공자는 단 한명도 없지만 모두가 열정적으로 대회에 참여하여 3위라는 좋은 결과를 만들어 낼 수 있었던 것 같습니다. 저 또한 이번 경진대회를 통해서 많이 배울 수 있었고, 단순히 강의만 듣는 것보다 이렇게 실전과 같은 경진대회를 체험하고 나니 실력이 더욱 향상되고 한단계 더 성장하는 것을 느낄 수 있었습니다. 아직은 많이 미흡하지만 더 공부해서 다음 경진대회에서는 팀에 있어서도 하드캐리할 수 있는 멤버가 되어야겠다고 생각하게 되었습니다. 다음 경진대회는 딥러닝 기술도 활용되는 경진대회가 될 것으로 예상되는데, 딥러닝도 지금부터 열공해서 잘 준비해야겠습니다.
#AI 부트캠프 # 딥러닝 #패스트캠퍼스 #부트캠프 #국비지원취업 #국비지원
'AI 부트캠프' 카테고리의 다른 글
| <패스트 캠퍼스 강의 학습 블로그> – AI로 정복하는 인디 게임 개발 – 방치형 RPG편 (1) | 2025.10.18 |
|---|