휴먼 러닝은 무엇을 해왔는가?(1) 요약
- 경제학이 재미있어 보여, 경제학과에 갔다가 흥미가 떨어져 패션 과목을 들어봤음.
- 패션이 재미있어, 패션 학원과 패션 스타트업 과목을 거치며 나는 옷을 팔아야 하는 사람이라고 판단.
- 그 후 패션 이외의 재미난 것을 찾으러 다니는데...
Chapter 3. 데이터 과학
(엄청 발전한 척하지만 지금보면 오른쪽 보고서도 문제가 많다...)
계량경제학과 화폐금융이론
스타벅스 텀블러를 만든(?) 3학년 2학기에 들은 다른 과목, 계량경제학...
이전까지 배웠던 경제와는 완전 다른 신세계였다...
(한번 놓치면 종강때까지 아무것도 못하는 수업이다...가슴이 웅장해진다...)
경제 분석을 위한 도구를 배우는 과목이라 그런지 경제 이야기는 하나도 안 나오고 통계에 대해서만 배웠다.
교수님께서도 학생들이 어려워하는 것을 아셔서 그런지 기초부터 다시 가르쳐주셔서 재미있게 들었던 수업이다.
다만, 이 수업을 들으면서 생각난 과목이 있었다.
그 과목은 화폐금융이론인데, 그때는 기초 통계밖에 몰라서 아예 틀린 보고서를 쓴 것으로 기억한다.
주제는 금 가격 결정요소와 실증분석이었다.
(회귀 분석의 원리, 회귀 분석시 유의할 점도 몰랐고, 회귀 분석표도 무슨 의미인지 몰랐다고 한다...)
계량 경제학을 수강하면서, 계속 그 잘못된 보고서가 떠올라서 계량 경제학 보고서로 화폐금융이론의 보고서를 보완하여 제출하였다.
(보완은 했지만, 시계열 특성은 반영을 하나도 못했다... 그래도 전보다 더 나은 것을 제출해서 뿌듯했다고 한다😋)
그 과정 동안, 정말 재미도 있었고 내 나름대로의 분석을 하는 것에서 성취감이 느껴졌다.
이렇게 고전적인 데이터 분석 방법을 조금이라도 알게 되니, 학기가 끝나고 데이터 분석을 위한 더 좋은 방법이 알고 싶어 졌다.
패션 대신하고 싶은 일이 생긴 순간이었다.
그리고 내 옆에는 데이터 과학을 일찍부터 시작한 동기가 있었다.
"머신러닝 하지마."
"그게 뭔데."
"머신러닝 하지말라고."
"그거 어떻게 하는건데."
핸즈온 머신러닝과 스타크래프트 승률 예측 공모전
동기는 딜리버리 히어로에서 인턴을 하고 있었다.
그 당시에 공대의 데이터 마이닝 수업도 듣고, SAS 데이터 분석 공모전에서 입선도 했던 친구이다.
내가 머신러닝을 시작하려면 어떤 책을 봐야 하냐고 물었을 때, 핸즈온 머신러닝을 추천해줬다.
그날 바로 책을 구입하고, 책을 보는데 재미있는 내용이 정말 많았다.
머신러닝이 왜 필요한지, 분류와 회귀의 과정, 선형 회귀, SVM, 트리 모델 등 새로운 것들을 많이 배웠다.
(뒷부분은 딥러닝인데, 동기가 뒷 부분은 내용이 좋지 않다고 해서 안 읽었는데 읽어볼 걸 그랬다.)
그렇게 이 책을 몇 번씩 보며, 책에 파이썬이 나와서 점프 투 파이썬을 공부하였다.
조금씩 이제 책에 나온 예제가 아니라 무언가 해보고 싶다는 생각이 들 때쯤, 동기들이 공모전을 나가자고 제안을 했다.
공모전의 풀네임은 행동 데이터 분석 인공지능 AI 경진대회인데, 그냥 스타크래프트 승률 예측 공모전이다.
(이름은 정말 거창하다.)
이 공모전은 간단히 요약하면 다음과 같다.
- 스타크래프트 게임에 Player1과 Player2가 존재.
- 이 둘은 게임 동안 행동(ex. 지도에서 특정 지역을 보기, 유닛 뽑기, 유닛 이동 등)을 함.
- 이 행동들은 행동 로그로 남아있으며, 경기 시작 후 10분까지 만의 정보로 승자 예측.
책만 보고 나는 내가 다 안다고 생각했으나, 공모전을 시작하니 아무것도 모른다고 생각이 들었다.
책은 쉽게 시각화도 하고 모델링도 하던데, 나는 하나도 쉽게 할 수가 없었다.
코딩 자체에 익숙지 않았고, 다양한 시각화를 본 적이 없고, 스타크래프트도 잘 몰라 피쳐 생성에도 인사이트가 떨어졌다.
게다가 해당 시점의 플레이어의 행동이 줄글로 주어져, 정규표현식을 써야 해서 더욱 어려웠다.
그래도 패션학원에서와는 다르게, 같이 고민할 수 있는 팀원들이 있어서 힘들어도 재미있었다.
모델 학습시켜 놓고 점심 먹으러 가면 밥 먹는 내내 모델 성능이 기대가 되었고, 새로운 아이디어가 떠오르면 그 아이디어는 모델 성능에 얼마나 영향을 줄까 궁금했다.
반면 기대와는 다르게 모델 성능이 더 떨어지거나, 이전과 비슷한 성능을 내면 아쉬웠다.
그렇게 대회가 끝나고 18등(94팀 중)을 기록했다.
https://github.com/seobseobseobseob/DACON_StarCraft
데이콘 스터디
4학년 1학기 중간고사쯤에 동기들에게 2020 빅콘테스트에 나가자고 이야기를 하였다.
결과에 상관없이 데이터 공모전을 한번 맛보니, 입상에 대한 욕심이 났다.
다른 사람들이 얼마나 머신러닝을 잘하는지, 내 수준이 어디인지도 궁금했다.
동기가 나포함 3명이었고, 빅콘테스트 공모전은 5명까지 한 팀으로 나갈 수 있었다.
경제학과 3명이라 팀 자체가 코딩에는 약한 편이었다.
그래서 우리 학교 컴공에서 한 명 정도를 뽑기로 결정했다.
에브리타임과 학교 홈페이지에 구인 글을 올렸고, 생각보다 뜨거운(?) 반응이 있었다.
3~4명의 사람들이 문의를 해왔었는데, 컴공과 연구실에서 학부 연구생으로 있던 학우를 팀원으로 함께 하게 되었다.
공모전에 나가기에 앞서, 팀원들끼리 스터디를 하기로 했다.
월수금 저녁 8시에 하루에 한 사람씩 하나의 데이콘 공모전에서 1, 2, 3등의 코드 중 하나를 골라 리뷰하고 질의응답하는 형식으로 진행하였다.
그렇게 7주 동안 7개의 공모전의 1, 2, 3등의 코드를 보았다.
(중간에 리뷰하기 애매하다고 판단된 것들은 건너뛴 것들도 있다.)
(ex. 파이썬이 아닌 다른 언어로 진행한 경우...)
스터디를 하면서, 내가 맡은 수상작이 어려울 때는 스트레스를 많이 받기도 했지만 팀원들에게 받은 만큼 나도 주고 싶어서 어떻게든 책임을 지고 공부해서 리뷰를 했다.
그래서 지금 생각해보면 능력 이상의 것에 도전하다 보니 이때 실력이 많이 늘었던 것 같다.
수상자의 솔루션을 보며 파이썬의 모르던 내장 함수를 배우기도 하고, 시각화의 기술, 피쳐를 생성하는 아이디어를 얻었다.
신기한 것은 좋은 분석을 보았을 때도 많은 것을 배웠지만, 나쁜 분석을 보았을 때 더 많은 것을 배웠다.
나쁜 분석을 보며, 왜 이 방법이 틀렸고 이 방법보다는 왜 다른 방법을 쓰는 게 더 타당했는지 많이 생각했다.
그렇게 7주가 지나고 2020 빅콘테스트가 얼마 남지 않았다.
2020 빅콘테스트
빅콘테스트는 한국에서 대학생들이 참가하기에 적당한 가장 큰 대회인 것 같다.
이 대회는 한국정보화진흥원에서 주최하며, 데이터 분석 분야와 혁신 아이디어 분야로 나누어진다.
데이터 분석 분야의 경우, 어떠한 타겟값을 맞추거나, 목표 지표를 극대화하는 모델링을 제시하는 것이 대회의 큰 틀이다.
반면, 혁신 아이디어 분야의 경우, 다양한 주관 기업들의 데이터를 제공받아 새로운 비지니스 아이디어를 제시하는 것이 대회의 큰 틀이다.
참가 분야
데이콘 스터디에서 공부했던 것은 데이터 분석 분야의 틀과 비슷했고, 따라서 데이터 분석 분야의 퓨쳐스 리그에 참가하려했다.
하지만 주제가 발표된 뒤 좀 당황스러웠다...
2020년의 퓨쳐스 리그 주제는 KBO 정규시즌 팀별 승률, 타율 및 방어율(평균자책점) 예측이었다.
제공 받은 데이터는 2016년~2020년(~7/20)까지의 경기별 결과 및 팀/선수 기록이고, 예측해야하는 타깃은 대회 종료 이후 경기의 값들이었다.
다시 말해서, 학습 데이터의 피쳐를 그대로 타깃에 사용할 수 없다는 것을 의미한다.
(미래의 경기에 누가 언제 나오고 상대 선수로 누가 나올지 등은 현재 시점에서 알 수 없다.)
이러한 제약 조건이 부담스러웠다.
그리고 챔피온리그에 나가기에는 입상하기에 실력이 부족하다고 생각이 들었다.
남은 분야는 이노베이션 분야인데, 이 분야는 위에서 서술한 것처럼 지금까지 데이콘 스터디에서 공부해온 것과는 좀 다른 느낌의 대회였다.
그래도 챔피온리그에 나가는 것보다는 이노베이션 분야에 나가는 것이 입상 확률이 더 높다고 판단했고, 실제로 나중에 필드로 나갔을 때, 데이터 분석가로서 더 많이 접하게 되는 일은 이노베이션 분야에서 요구하는 분석과 방향이 비슷하다고 생각했다.
따라서 이노베이션 분야에 나가기로 결정했다.
주어진 문제 및 데이터
빅콘테스트 공식 홈페이지에 있던 이노베이션 분야의 주제는 뉴노멀 시대 준비를 위한 서비스 아이디어 및 POC(Proof Of Concept) 결과 제시이다.
구체적으로 말하면, 주어진 데이터로 코로나 19로 인한 사회적 영향력을 분석 및 예측 모델링하고, 이를 통해 초기 비즈니스 아이디어를 제공하는 것을 의미한다.
주어진 데이터는 유동인구데이터(SK텔레콤), 카드매출데이터(신한카드), SNS데이터(와이즈넛), 유통데이터(GS리테일), 물류데이터(CJ올리브네트웍스)이다. 이 밖에 팀 자체에서 수집한 외부 데이터는 날씨, 거주인구통계, 일별 코로나 확진자 수이다.
분석 주제 및 TimeLine
우리 팀은 코로나 19 확진자 수가 사람들의 이동량에 영향을 끼쳐, 그 결과 얼마나 소비에 영향을 끼치는가를 주제로 데이터를 분석하였다.
초반에 이러한 방식의 분석을 해본 적이 많지 않다보니, 많은 시행착오를 겪었다.
이 공모전은 기간이 2달인데, 그 기간을 정리하면 다음과 같다.
- 1 week - EDA 및 목표 설정, Word Cloud 구현 (소비에 관한 내용으로 결론을 내기로 결정)
- 2 week - 지역 군집화 (파생변수 생성 + 군집화가 잘 되었는지에 대한 검증)
- 3 week - 매개효과 모델 (매개효과 논문 스터디 + 부트스트래핑 구현) (코로나 19 확진자 수가 이동량에 영향을 주어 소비가 변한 지역만 추출)
- 4 week - 부분상관계수 (20년과 19년의 소비패턴의 움직임이 같았음에도 불구하고, 우연히 코로나 19 확진자 수의 움직임이 20년 소비에 영향을 준 것처럼 보이는 지역 제외)
- 5 week - 모델링 (다중 회귀 분석으로 코로나 19 확진자 수가 각 지역의 소비에 유효한 영향을 주었는가 검증)
- 6 week - POC 아이디어 구체화
- 7~8 week - PPT 제작 및 코드 정리
데이터 분석 부분
생각보다 지역 군집화에서 많이 힘들었고, 매개효과 모델과 부분상관계수에서는 모르던 개념이지만 공부를 하니 그렇게 어렵지 않게 이해 및 적용했다.
지역 군집화는 두 가지 파생변수를 통해 2개의 축으로 진행하였고, 파생변수는 인구유입률(유동인구/거주인구)과 1인 구매력(카드매출건수/생활인구)이라는 변수를 만들었다.
위의 변수의 값으로 시각화를 하였을 때, 2개의 축에서 비슷한 값을 갖는 지역이 많아서 군집화를 시도하는 데 어려움을 겪었다.
그래서 생각한 방법이 각각의 축의 값으로 순위를 부여하고 이것으로 군집화를 하는 방법이었다.
이렇게 진행한 결과, 지역들의 분포를 퍼트려 군집화를 진행할 수 있었다.
매개효과 모델은 X라는 독립변수가 어떻게 Y라는 종속변수에 영향을 끼치는가 설명할때 쓰이는 모델이다. 이를 이용하여 코로나 19 확진자 수가 사람들의 이동량을 변화시켜, 사람들의 소비에 영향을 끼쳤던 지역을 추출하였다.
그리고 추출된 지역 중에서 부분상관계수를 이용하여 정말로 우연히 코로나 확진자 수의 움직임과 20년의 소비가 관련이 있었던 지역을 제거하고, 다중회귀분석을 이용하여 오프라인 소비에 대한 모델링을 진행하였다.
POC 부분
POC는 공모전에서 제출할 수 있는 뻔한 것(어느 기업을 겨냥한 비즈니스 아이디어)보다는 실제로 비즈니스를 할 수 있는 것을 제출하고 싶어서 고민을 많이 했다.
우리의 POC는 '선결제 후구매' 플랫폼. 코로나 확진자 수가 늘어날 때, 자영업자들은 영업제한으로 인해 손해가 컸고, 자금조달이 힘든 상황이었다.
반면 소비자들의 소비 추세는 코로나 확진자 수 추세와 반대의 방향으로 움직였고, 소비가 늘어날 때에는 2019년 동시점만큼 소비를 회복하기도 했다.(오프라인 기준)
우리 팀은 자영업자들은 자금이 필요하고, 소비자들은 안전한 소비가 필요하다는 점에서 착안하여, 코로나 확진자 수가 많을 때는 온라인 선결제하여 할인된 가격으로 쿠폰을 구입하고, 코로나 확진자 수가 적을 때는 선결제한 쿠폰을 오프라인에서 이용하는 흐름의 비즈니스 아이디어를 구상했다.
또한 앞에서 진행한 모델링으로 자영업자들에게는 미래의 매출에 대해서 참고지표를 제공하고, 가게마다 거리두기 지킴 현황라는 것을 제공하여 소비자들에게 안전한 오프라인 소비에 대한 참고지표를 제공하여 플랫폼을 사용할 유인을 더욱 늘리려 시도를 하였다.
예선 통과가 가능했던 이유
내 생각에 우리 팀이 예선을 통과한 이유는 분석의 단계마다 단순히 당연히 그렇게 되었겠지라는 식의 전개를 하지 않고, 통계의 도구를 통해 검증을 했기 때문이라고 생각한다.
그 검증을 요약하면 다음과 같다.
- 전통적인 인식에 있는 지역 분류가 있겠지만 -> 그것보다는 데이터를 통해 지역 분류를 하기 위해 파생 변수 생성 및 군집화
- 코로나 19가 당연히 소비에 영향을 끼쳤을 것이라 생각하지만 -> 그것보다는 어떠한 경로로 코로나 19 확진자 수가 소비에 영향을 끼쳤는지 설명하기 위해 매개효과 모델 사용
- 20년과 19년의 소비 패턴이 같았음에도 불구하고 우연히 코로나 19 확진자 수와 연관있는 지역을 시각화로 확인해서 분석에서 제외할 수 도 있겠지만 -> 부분상관계수라는 틀을 이용해 객관적으로 그러한 지역을 제외
위의 세 가지 검증이 우리 팀의 키포인트였다.
입상을 하지 못한 이유
본선에서 발표를 했으나 상을 받지 못한 이유는 두 가지라고 생각한다.
- 지루할 수 있는 분석 진행 - 전염병의 확진자 수가 사람들의 이동량에 영향을 끼쳐 소비 패턴이 변화하였다. 이를 통계로 증명하였으나, 누구나 추론 가능하다. 더 재미있는 분석을 진행했다면 어땠을까? (ex. 코로나 확진자 수 예측) 혹은 조금 더 최신 기법을 사용했다면 어땠을까?(관측치가 적어 불가능했을 것이긴 하다.) 발표 순서가 마지막이었는데, 임팩트있게 심사위원분들의 머릿 속에 남기에는 다소 지루한 분석의 진행이었다. 그래서인지 분석과정에 대해서는 아무 질문도 하시지 않았다.
- 주관사에게 매력적이지 않은 POC - 위에서 실제로 비즈니스가 가능한 POC를 제공하기 위해서 어느 기업을 타깃으로 POC를 구성하지 않았다고 했는데, 그것이 상을 못 받은 원인이 아닐까 싶다. 기업들에서 나온 팀장님들이 심사위원으로 많이 있으셨는데, 본인들이 몸담고 있는 회사에서 바로 쓸 수 있는 POC가 더 흥미롭고 좋아보이지 않았을까 생각이 든다.(이건 내 개인적인 생각이다. 아닐 수도 있다.)
발표 후 Q&A
우리 팀은 POC에 대해 두 가지 질문을 받았다.
- Q: '카카오 기프티콘'과 휴먼러닝의 '선결제 후구매'는 어떻게 다른가? - A: 카카오 기프티콘의 경우, 프렌차이즈와 같은 기업들을 상대로 비즈니스를 하는 반면, 우리의 선결제 후구매는 골목 상권까지 비즈니스의 대상이다. 또한 결제의 정산 주기도 바로 정산이라 카카오 기프티콘보다 더 자영업자들의 자금 조달에 도움이 된다.
- Q: 소비자들이 재화 및 서비스의 가격이 많이 떨어지기 전까지 구입하지 않아, 시장에서 상품의 가격이 많이 떨어지면 어떻게 하나? - A: 우리의 플랫폼은 가격에는 관여하지 않는다. 자영업자들이 감내가능한 가격과 소비자들이 매력적이라고 생각하는 수준의 가격은 플랫폼 이용자들 사이에서 정해진다. 따라서 그 문제는 시장이 해결해 줄 것이라고 생각한다.
발표가 끝난 후, 든 생각
우리가 제일 마지막 발표라 다른 팀들이 발표하는 것을 지켜보았는데, 딥러닝을 들고와서 모델링을 한 팀들이 많았다. 정말 모델이 제대로 작동하는지 궁금하다. (딥러닝을 하기에 충분하지 않은 관측치이지 않았나 싶다.)
또 다른 팀에게는 어떠한 질문을 했는지 궁금하다.(질문은 들을 수 없었다.)
그래도 본선 진출만 하면 절반 조금 안되게 상을 주던데, 우리도 받을 수 있지 않을까 생각을 했다...
하지만 우리 팀은 본선 진출에서 더 나아가지 못했다...ㅜㅜ
https://github.com/seobseobseobseob/Big_Conteset_2020_Innovation
태양광 발전량 예측 공모전
그 이후 한달 정도 SQL을 공부하고 있는데, 동기가 공모전에 나가야 무언가 얻고 공부하는게 있는 것 같다고 이야기를 해왔다.
나도 그 이야기에 동의했고, 12월에 공모전을 찾다고 때마침 따끈따끈하게 대회를 연지 얼마 안된 태양광 발전량 예측 공모전을 발견했다.
이 공모전에서는 코딩도 어느정도 자유롭게 가능해서 생각한 피쳐들을 모두 생성하는 것이 가능해서 수월했다.
이렇게 피쳐를 만드는 시간을 줄여, 모델링에 더 많은 시간을 쓸수 수 있었다
생각보다 초반에는 점수가 많이 올라가 4등까지 갔었는데......
막판에 public 리더보드에서 39위까지 떨어지고, private에서는 shake-up을 당했다...
(사실 뭐 당했다기보다는 우리가 강건한 모델을 못 만든게 아닐까 싶다...)
https://github.com/seobseobseobseob/DACON_Photovoltaics
그렇게 공모전을 정리하고 슬슬 취업준비를 하려는데.......
친구들과의 술자리에서 창업에 대한 이야기를 나눈다.
다음 글에서 계속......
휴먼 러닝은 무엇을 해왔는가?(2) 3줄 요약
1. 경제학에서 계량으로 데이터를 분석하는데 재미를 느낌.
2. 머신러닝을 알게 되고, 공모전에 나가서 경험을 쌓음.
3. 취업준비를 하려고 하는데, 친구들과 창업의 이야기를 나눔.
'섭섭의 기록 > 지나온 길' 카테고리의 다른 글
섭섭이는 무엇을 해왔는가?(3) (4) | 2021.07.06 |
---|---|
섭섭이는 무엇을 해왔는가?(1) (0) | 2021.06.12 |