Home 대구 빅데이터 분석 경진대회 3회 후기
Post
Cancel

대구 빅데이터 분석 경진대회 3회 후기

제3회 대구 빅데이터 분석 경진대회
Repository Link


어떤 대회인가?

대구광역시에서 진행하는 빅데이터 분석 경진대회이다.

올해로 3회째 진행하였으며, 점점 경진대회의 규모가 커지고 있는 느낌이다.

대구광역시와 대구은행이 주최하기 때문인지 공공 또는 금융 두 부문 중 하나를 선택하여 참여할 수 있다.

금융분야는 금융과 관련된 주제를 진행해야 하며, 대구은행 고객데이터 를 필수로 활용해야 한다.

그리고 우리 팀은 금융분야로 참가하였다.


일정

내용 날짜 장소
분석 계획서 마감 2021.06.04 온라인 접수
서류 통과자 발표(3배수) 및 분석 계획 발표 준비 - -
분석 계획 발표 2021.07.27 SW융합테크비즈센터
발표 통과자 발표(2배수) 및 분석 진행 - -
분석 결과 발표 2021.09.27 SW융합테크비즈센터
시상식 2021.10.14 대구은행 본점

대회의 일정은 위와 같았다.



분석 내용

주제 요약


(디자인 정말 이쁘다!!)

딥러닝을 통해 경제변수 변화에 따른 금융시장 참여자의 행동 변화를 예측·분석하여 초개인화된 금융상품과 서비스를 추천 및 개발할 수 있도록 한다

우리가 분석 목적으로 적어 놓은 문장.

거창하게 요약하긴 했지만, 실제로는 복잡하지 않다.

핵심은 경제 변수(환율, 금리 등)에 민감한 사람을 라벨링 하고, 이를 예측하는 것. 두가지로 나누어 볼 수 있다.


계획과 구현의 변경점

실 데이터를 보기 전 분석 계획서가 통과되어야 실 데이터를 만질 수 있다.

데이터 설명서만 보고 기대한 것과, 실 데이터 사이 간극이 존재하다 보니 방법에서 약간의 변경점이 있었다.

방법을 약간 바꾼 가장 큰 이유는 데이터에 대한 우리 기대가 너무 컸다는 점이다.

예로, 우리는 데이터 기간이 2018.01 ~ 2019.12이기에 매달의 존재할 것으로 기대했다.

하지만 실제로는 단 3시점의 데이터만 있었기에 기준 시점으로 2달 전까지의 데이터를 생성하여 활용하였다.

여기 표가 다 채워져 있기를 바랐었다.

그래서 그랜저 인과관계 검정 대신 상관관계를 통해 민감 고객 분류를 시도한 점이 가장 큰 변경점이다.

발표 중 받았던 일부 질문

  1. train/test set을 다 합쳐서 7:3 하지 않고 왜 19,20/21로 나누었는가?


    미래참조 문제 때문인데, 7:3으로 나누면 왜 안되는지를 위주로 답변하였다.

    • 모델이 21년 샘플로 학습하고, 19년 샘플로 검증을 시도할 가능성이 생긴다.
    • 이 경우, 19년 시점에선 절대 알 수 없는 데이터로 검증이 이루어진 셈이다.
    • 위의 경우, 결과가 왜곡될 수 있으므로 피하는 것이 좋다.
  2. 예측하는데 있어 따로 pre trained model은 활용하지 않았는가?


    pre trained model. 딥러닝, 특히 자연어 처리와 이미지 처리에서 매우 중요한 개념이 아닐 수 없다.

    근래 자연어 처리 프로젝트를 진행하며 BERT를 접해볼 기회가 있었다.

    이에 깊게 파고든 것은 아니었지만, 써먹기 위해 대략적인 개념에 대해 찾아보았었다.

    그리고 내가 이번 공모전을 준비하며 했던 생각은, BERT정도는 아니어도 대구은행 고객 데이터로 어느정도 유의미한 User Embedding을 만들어 활용할 수 있지 않을까? 하는 욕심이었다.

    물론 위 질문에 대한 답변은 대구은행 고객데이터와 같은 형식의 input을 활용해 금융데이터를 학습시킨 pre trained 모델은 없기 때문에, 초기화된 모델의 weight들을 직접 학습시켰다고 답변했다.

    내가 조금 더 공부하고, 시간이 넉넉하여 활용 가능성에 대한 검증까지 진행했다면, 내 욕심까지 덧붙여서 센스 있는 답변까지 가능했을지도 모르겠다.

    하지만, 아직도 내 욕심에 대한 답변은 못 내겠다.

    난 소프트웨어 전공이고, 아직은 겉핥기로 통계를 만져봤을 뿐이기에, 확신이 없는 것 같다.

    사실 난 그저 개발이 재미있고, 모델링은 알고리즘만으로 해결하기 힘든 문제를 해결해 주기에 재미있게 느꼈던 것이 아닌가 싶은 생각도 한다.

    개발을 좋아하지만, 빅 데이터 시대에 개발과 통계의 유착관계(?)는 점점 더 심해지지 않을까.

    그렇다면 더 공부를 하면 이 욕심에 대한 내 스스로 마음에 드는 답변을 할 수 있지 않을까 기대해 본다.

  3. 시계열 데이터는 계절성을 가질 가능성이 높은데, 이는 어떻게 처리하였나?

    위의 슬라이드와 어느정도 이어진다.

    이에 대한 답변은 내가 19년 12월, 20년 12월 시점 데이터로 학습한 모델을 21년 4월 시점으로 검증하였으니 크게 문제되지 않을 것이다

    라고 한 것을 같이 발표 갔던 친구가 받아서, input으로 해당 시점의 경제변수 시계열 데이터도 함께 넣어 주어 모델이 계절성에 대응할 수 있도록 했다고 정정해 주었다.

    이 질문을 받고선, 내 통계 실력은 정말 겉핥기 수준밖에 안되는구나! 싶을 정도로 뒤통수를 쎄게 얻어맞은 듯한 느낌이었다.

    ‘계절성’ 이란 것을 알고는 있었는데, 내게 모델링을 할 때 있어 계절성은 전혀 고려하지 않은 개념이었기 때문이다.

    input으로 해당 시점의 경제변수 시계열 데이터도 함께 넣는 것이 내가 낸 아이디어이긴 했지만, 나는 input이 너무 부족한 상황에서 그 상황을 표현할 수 있는 정보를 더 추가하려는 취지였기 때문이다.

    내게 있어 그건 그저 모델 성능을 높이기 위한 추가적인 데이터에 지나지 않았었다. 그래서 중요하지 않게 생각했고, 모델 구조 그림에서도 따로 표현하지 않고 생략으로 대체했다.

    그저 LSTM에 다 때려넣는다고 답이 나오는게 아닌데.. 통계가 전공인 그 친구는 내 말을 듣고 계절성부터 떠올리지 않았었을까?

    시계열 공부 할 필요성도 크게 느꼈고, 더 많은 경험이 필요하겠다 싶었다. 언제쯤 할 수 있을지는 잘 모르겠지만..


내가 아쉬웠던 사항

모델 활용 방안에서의 디테일

우리의 주제는 초 개인화 서비스 제안으로 딱 박혀 있는데 정작 이 부분은 너무 부실하다.



정교한 데이터 분석 및 예측은 앞단인 라벨링모델링에만 집중되어 있고, 활용인 제안부분은 그냥 모델이 예측한 것의 정성적인 활용 방안에 불과하다.

약간의 변명을 해 보자면

일단 앞단이 되어야 다음 단계가 진행이 되는데, 라벨링 과정에서도 데이터가 우리 예상과 달라 다른 해결 방안을 고안하느라 진행이 더뎠다.

모델링에서도 input으로 이걸 활용해도 되는지, 논리적으로 문제는 없는지, 불균형한 데이터셋 처리와 같은 디테일에 대한 고민은 물론, 코딩하며 무수한 OOM과도 만나게 되다 보니 빠르게 진행하지 못했다.

무엇보다 나는 그저 모델의 성능을 어떻게든 더 높일 방안만 생각하고 있었고 제안을 고민해야 한다는 사실은 전혀 내 머릿속에 없었다.

이건 ‘딥러닝’을 활용해 보고 싶었던 내 욕심이 너무 반영되어 버린 결과가 아닌가 싶다.

텐서플로우로 MLP만 만들어 보았었는데, CLOVA AI RUSH를 거치며 토치로 신경망을 자유롭게 만드는 방법을 막 인힌 상황에 몸이 달아서, 이걸로 신경망 모델링을 해보고 싶었던 욕심이 너무 컸던 것 같다.

다시말해, ‘신경망 구조를 이렇게 하면 모델 성능이 개선 될 것이고 실제로 더 좋다!’ 같은 모델링 챌린지 마인드였다. 공모전의 목표를 보았어야 하는데..

팀의 SW 전공자인 내가 이러고 있으니 진행이 잘 될리가 있나.. 이는 팀원들에게 매우 미안한 부분으로 남아있다.


발표 자료 준비에서의 디테일



분석 결과 발표 시 예시를 들 때 고용률을 활용하였다.

고용률은 우리가 임의로 1달 lagging하여 사용하였다 보니, 분석 방법과 활용 방안에서의 이미지를 잘 보면 상관관계가 거꾸로 뒤집혀 있다.

그리고 PPT에 이에 대한 설명이 아예 없었다.

왜 이렇게 했나? 어쩌면 당연히 들어갔어야 할 부분인데 보고서랑 발표자료 후다닥 만들어 낸다고 미처 챙기지 못한 부분 같다.

고용률에 대해서만 1달 lagging 한 이유는 정량적이라기 보단 정성적인 이유에 가깝다.

정성적인 이유라지만 나름의 논리는 있었다.

먼저, 우리의 원래 계획으로는 그랜저 인과관계 검정을 활용하는 것이었기에 정상 시계열임을 확인하기 전 일단 그랜저 인과관계 검정을 시도해 봤었다.

그랜저 인과검정은 시차(lags)를 주어 두 시계열의 인과관계를 검정할 수 있으며, 적정한 시차를 찾아내는 것 역시 중요하다.

그리고 이 시차는 과거 n달 전의 사건이 영향을 끼친다 라고 할 수 있다.

우리는 가능한 여러 시차를 주어(많이는 못했다. 시계열이 짧았기 때문) 검정을 해 봤고, 고용률은 가장 설명력이 좋은(p-value가 가장 작은) 시차가 1달이었던 것으로 기억한다.

이후 그랜저 인과검정의 선행요건이 정상 시계열을 만족해야 함을 확인하고, 우리의 대부분의 시계열이 이를 만족하지 않았기에 이 자료는 내가 따로 기록하지 않았다..

또한, 논리를 생각해 봤을때, 고용률은 월급과 관계 있을 것 같다는 1차원적인 상상을 했는데, 그렇다면 한달 lagging 하는게 맞지 않나? 라는 생각을 했다.

또한 상관관계도 한달 lagging한 상관관계는 설명이 너무 잘되는데 lagging 하기 전의 상관관계는 도무지 설명되지 않았던 이유도 있다.

이런 나름의 논리는 있었지만 결국은 정성적이다 보니 어쩌면 무의식적으로, 정성적 기준을 도입했다는 이유 때문에 이 부분을 생각하는 것에 거부감이 들었을지도 모르겠다.

이를 증명이라도 하듯 모든 것이 담겨 있어야 할 보고서에도 1달 시차 주었다 한줄만 달랑 들어가 있고 왜 그랬는지에 대한 이유는 아예 없다.


다 잘해놓고..

왜 그렇게 했나에 대한 집착은 또 하고 또 해도 부족하지 않나. 결국 이게 어떤 프로젝트를 진행해도 퀄리티(품질)의 핵심이 아닌가.

그리고 이것을 다시 봐도 바로 내가 이해하도록, 다른 사람도 이해하도록 잘 만들어야 하는데, 이건 너무 큰 실책이었다.

장려상에서 그친 것도 이 부분을 논리적으로 설명하지 못한 것이 너무 크지 않았나.. 나는 그렇게 생각이 든다.


발표 중에서의 디테일

이건 발표 태도의 문제에 가까운 것 같은데, 발표를 하면서 중간중간 청중(심사위원)분들과 아이컨택도 하며 반응 봐가며 진행을 했어야 하는데 그러질 못했다.

일단 많은 내용을 다 담으려다 보니 열심히 말만 해야 겨우 10분 내외로 들어오는 분량의 스크립트였기에 이걸 어떻게든 10분 안에 다 말해야 한다는 압박이 있었던 것 같다.

또한 이것은 어투의 문제에 가까운데, 질문에 답변할 때 너무 단호하게 대답하는 경향이 있었다..

그냥 유들유들하게 대답하면 되는 문제인데 쓸데없이 각 세워서 전달하는 느낌.. 너무 긴장해서 그런건가.. 왜이러니.. 내가 말하면서도 깜짝 놀랐었다.

그리고 위의 고용률 관련 질문을 받고는 가장 약한 부분을 받고 멘탈이 반쯤 깨져서 어버버버.. 하면서 다음 질문들 답변한 기분인데 같이 발표 갔던 친구가 잘 수습해 준 덕분에 잘 마무리 하고 나올 수 있었다.

발표도 나에겐 아직 더 많은 경험이 필요할 듯 싶다..


대회를 마치고

가장 먼저, 같이 해준 팀원 친구들에게 너무 고맙다.

‘딥러닝을 통해’역시 우리의 목표 중 하나였지만 저 상황에서 제일 성능 좋은 모델은 랜덤 포레스트였다.

모델링 경험치도 부족하고, 데이터도 부족하고 하다 보니 발생한 상황인데 오히려 전화위복이라고 feature importance를 끌고 와서 활용 방안으로 넣어버렸다.

다만 딥러닝 모델은 ‘시계열 길이를 늘리면 딥러닝이 더 성능이 좋아질 것이다’로 마무리하고 데이터가 부족해 증명하지 못한 것은 약간 아쉽다.

어떤 프로젝트를 끝내고도 하는 생각이지만, 내가 좀 더 열심히 했으면.. 미리 비슷한 프로젝트를 해봤으면.. 발표 경험이 좀 있었으면.. 이번 프로젝트를 더 완벽하게 끝내지 않았을까 싶은 생각이 든다.

있을 수 없는 일이지만 이런 아쉬운 생각은 항상 드는 듯 하다..

그렇지만 이렇게 모두 다른 전공 셋이 모여 하나만 바라보고 달려서 혼자서는 절대 못해낼 프로젝트를 완료하고, 수상까지 했다는 데에서 너무 만족스럽다.

또한 AI RUSH 이후로도 느꼈던 것이지만 모델링에 석사 이상을 선호하는 이유도 확실하게 느낄 수 있었다.

아무래도 학사는 이런 일련의 과정들에 대해 경험치가 부족할 가능성이 높을 수 밖에 없지 않나..

그래도 계속 공부해나가면 백엔드부터 모델링까지 아우를 수 있는 개발자가 될 수 있지 않을까?

최종 결과는 장려상이다.

우리 팀장님이 서울로 인턴을 가버려서 저 자리는 내가 갔다.

This post is licensed under CC BY 4.0 by the author.