본문 바로가기

데이터 경진대회

LG Aimers 4기 후기

   1월 2월간 진행된 LG aimers가 종료되었다. 지난 해 3기를 이어서 두 번째 참여였다. 저번 회차에는 머신러닝에 아는 것이 많이 없어서 적극적으로 참여하지 못했다. 그래서 이번엔 더 열심히 참여하고 오프라인 본선에도 진출하고 싶은 마음이 컸다. 

   최대 5인까지 팀 결성을 할 수 있기 때문에 팀을 찾아보게 되었다. 나를 포함한 4명이 한 팀을 이루게 되었고 첫 번째 화상회의를 통해서 일정과 진행 방식을 정했다. 나를 포함한 팀장은 신촌에 거주중이고 나머지 두 명은 각각 의정부와 노원구쪽에 거주중이여서 오프라인 회의 장소는 회기로 정했다. 지난 3기에 참여했을 때 보다는 조금 더 체계적으로 진행되었긴 하지만 결과적으로는 이번에도 본선 진출에는 실패했다. 

 

   한 달의 기간동안 대회에 참여하며 느낀점이 많았다. 먼저 나의 실력이 많이 부족하다는 것을 알게 되었다. 작년부터 시작해서 구글 머신러닝 부트캠프도 참여하고 여러 강의를 듣고 그리고 데이터 경진대회도 나갔었지만 처음 데이터를 받고 나서부터 눈 앞이 캄캄해졌다. 쓰이는 용어가 좀 어렵긴 해도 이해가 안 되는 것은 아니었다. 그런데 결측치가 엄청 많았다. 이전 데이콘 대회에서 이리 많은 결측치가 있던 대회가 없어가지고  당황스러웠다. 아마 회사에서 실제로 사용하는 데이터라 그런 거 같았다. 다른 팀원들도 어려워 하며 대회 기간의 상당 부분을 전처리와 결측치 처리에 힘을 쏟았다. 베이스라인 코드가 결측치를 모두 0으로 채우는 간단한 방법을 택하여 예측을 진행했기 때문에 이 부분을 보완하면 어느 정도 점수가 좋아질 것이라 생각했었다. 물론 다른 팀들의 코드가 공개되지 않았기 때문에 우리팀의 계획이 완전히 틀렸다 보긴 힘들지만 개인적으로 생각해 보았을 때는 전처리와 결측치 처리를 진행하면서 모델링도 같이 했으면 더 좋은 결과가 있었을 것 같다. 

  한 번의 오프라인 회의 뒤에 설 연휴가 있어서 그 주에는 온라인 회의를 진행하게 되었다. 우리 나름의 전처리 코드를 작성하고 적용한 결과를 제출했지만 점수가 오르지 않고 계속 떨어지기만 했다. 그래서 그 후로는 결측치 처리 외에도 특성공학을 진행했다. 나는 서로 연관성이 있는 특성들을 결합하여 새로운 특성들을 추가해 나갔다. 그러다보니 점수도 조금씩 오르긴 했었다. 

  특성공학에 힘을 쏟으며  점수 향상을 위해 최선을 다했고 시드 앙상블, 모델 앙상블을 추가로 시도했다. 2월 26일 오프라인 예선이 끝나는 날 까지 팀원들과 화상회의를 하며 본선 진출을 위해 최선을 다했지만 아쉽게도 본선 진출에 실패했다. 대회 초반(팀 구성을 거의 마친 1월 말 쯤)에는 팀원들도 다 머신러닝 초보자가 아닌 공모전 수상 이력도 있고 통계학 석사 졸업을 앞두고 있고 대학원에 합격한 이도 있고 해서 당연히 본선에 진출할 줄 알았다. 그래서 나만 잘 하면 되겠다고 생각하고 이전의 어느 데이터 경진 대회보다 열심히 참여했다. 근데 지금 생각하면 너무 부끄럽고 어리석은 생각이었다. 데이콘 대회도 꽤 참여하고 케글 대회들도 참여했고 이 정도면 되겠지?라고 혼자 생각 했었는데 나보다 잘 하는 사람들은 훨씬 많았고 대회 참여하면서도 내 자신의 실력이 많이 부족함을 느꼈다.

   여러 차례 스스로를 되돌아보고 반성하게 된 순간들이 있었다. 가장 먼저 적절한 CV 방법을 찾지 못 했을 때이다. 새로운 아이디어나 특성공학을 적용했을 때 점수 향상에 영향을 주는 방향인 지 확인을 해야 하는데 그냥 sk-fold를 적용했다. 다른 팀들은 더 정교한 CV 방법을 적용했을텐데 나는 몰랐다. 그래서 케글의 여러 코드 혹은 토의를 보면서 다양한 CV방법을 알아봐야겠다고 생각했다. 그리고 팀원들에게 내 아이디어를 적용하고 설명하는데 어려움을 느꼈을 때 내 능력이 부족함을 깨달았다. 예를 들어 A,B열을 결합해서 새로운 열 혹은 특성을 만드는 아이디어를 적용하려면 왜 이러한 아이디어를 떠올렸는 지 논리적으로 설명해야 한다. 그래야 다른 이들도 이해할 수 있고 그 이해를 바탕으로 찬반의견을 내거나 추가 아이디어를 적용해서 모델 성능을 향상시킬 수도 있기 때문이다. 그런데 나는 물론 특성공학을 진행하면서 CV가 개선 되었기 때문에 이를 근거로 설명하긴 했지만 더 도메인 지식과 관련되거나 전문적인 근거를 토대로 논리적인 설명을 하는 것이 부족했다. 그냥 대충 설명을 하면서 다른 팀원들이 이해하길 바랐고 만약 그러지 못 하면 너무 힘이 들었다. 물론 겉으로 드러내거나 하진 않고 최대한 자세히 내 의견을 전달하려고 노력했다.  하지만 지금에서 생각해보면 아마 온전히 나의 아이디어가 다른 팀원들에게 전해지지 못 한 부분들이 많았을 것이다. 만약 더 의사소통이 활발하고 의견 교류가 원만했다면 더 좋은 결과를 얻었을 수도 있었겠다.

   마지막으로 내 사고가 편협하고 열려있지 않다는 것을 알게 되었다. 나는 이전까지 분류 문제는 회귀에 비교해 볼 때 다중 공선성의 영향을 많이 안 받기 때문에 여러 열(특성)들을 많이 추가해도 된다고 믿고 있었다. 하지만 팀원들 중 한 명이 VIF을 적용하여 특성 선택을 진행하고 모델을 통한 예측을 진행하니 성능이 이전보다 더 오르게 되었다. 그 전까지는 VIF등 특성 선택을 적용할 생각을 안 하고 있었었다. 이를 계기로 편협한 사고에서 벗어나서 다양한 방법을 시도해봐야 한다는 것을 깨달았다.  

  대회 끝나기 한 3일 전부터 기대만큼 등수가 높지 않아 사실 많이 힘들었었다. 그래도 이번 대회를 반면교사 삼아서 부족한 부분들을 공부하고 이전에 참여한 대회들을 다시 분석하면서 실력을 키워야겠다고 생각했다. 데이터 분석, 머신러닝이 물론 어렵긴 하지만 적성에 그나마 잘 맞고 재미있기 때문에 차근차근 알아가야 할 거 같다.