휴먼 러닝은 무엇을 해왔는가?(2) 3줄 요약 1. 경제학에서 계량으로 데이터를 분석하는데 재미를 느낌. 2. 머신러닝을 알게 되고, 공모전에 나가서 경험을 쌓음. 3. 취업준비를 하려고 하는데, 친구들과 창업의 이야기를 나눔.
Chapter. 4 스타트업
시작
나는 그날 토익 공부를 하고 있었다. 800점은 넘어야 이력서에 쓸 수 있지 않을까 하는 생각이었다.
(그 당시 점수 = 735점)
스터디 카페에서 공부를 하다가 친구들이 잠깐 얼굴을 보자는 말에 술을 한잔하러 갔다. 거기에는 나처럼 창업에 관심이 많은 친구들이 있었는데, 한 친구는 창업을 시도하다가 피봇팅 방향을 고민하고 있었다. 이런저런 아이디어들을 던지다가, 한 친구가 스타일링 서비스는 어떠냐고 아이디어를 냈다.
스타일리스트들은 저임금에 열악한 노동환경에 놓여있고, 소비자들은 의류 구매에 어려움을 느낀다. 이 둘을 이어서 플랫폼을 만들고, 나중에는 의류 브랜드도 입점시키면 좋지 않을까? 이런 이야기를 하였다. 거기에 있던 친구들은 좋은 아이디어라고 생각을 했고, 그다음 날부터 스타트업은 시작되었다.
사무실 알아보기
여러 곳의 사무실을 찾아보았다. 어플로 사무실을 알아본 뒤, 괜찮아 보이는 곳을 뽑아 리스트를 추려 방문해보았다. 상봉역, 군자역, 성수역까지 총 5곳의 공유 오피스를 가보았고 그중에서 저렴하면서 좋은 상태의 사무실에 들어갔다. 성수라서 위치도 좋았다. 스타트업 시작부터 사무실에 들어갈 때까지 일주일 정도 걸렸다...
오피스가 많은 건물이었다....4인실인데 커피 머신도 있고 꽤나 괜찮은 사무실, 멀리 롯데타워도 보인다.갬성뷰 ^^*
내가 했던 일 : 1. 상품 추천을 위한 수집 데이터, 모델 선정
나는 여기서 AI 리서처를 했다.(?) 말만 거창하지 추천 시스템에 대해서 아는 것도 없고, 수학도 리서처들보다 엄청 못해서 "어떻게 해서든지 초기에 문제가 없을 만큼 추천 시스템을 만들어 놓으면, 그다음은 고도화는 내가 공부를 더 해서 하거나 누군가 와서 해주겠지?" 이런 생각으로 추천 시스템에 대해서 공부를 했다.
고도화 과정에서 문제가 없으려면 모아놓은 데이터가 문제가 없어야한고 생각했다.
그래서 사실 추천 시스템보다는 수집 데이터를 선정하는데 공을 들였다.
책임감이 강한 나로서는 나때문에 팀에 문제가 생기는 것을 극도로 싫어해서, 이때 스트레스를 엄청 많이 받았다. 내가 능력 이상의 일을 맡으면 어떻게 해서든지 결과를 만들긴 하지만, 스트레스를 많이 받는다는 것을 처음 알았다. 정말로 내 인생에서 가장 힘들었던 순간이 언제냐 물어보면, 난 이때라고 바로 이야기할 수 있다.
여기서 수집 데이터는 이야기하고 싶지만 나 말고 다른 친구들이 진행 중인 스타트업이라서 언급은 하지 않겠다.
서비스의 초반에는 이용자도 많이 없고, 추천할 상품들도 많이 없을 것이라 생각해 고객 데이터 기반 추천과 Contents based filtering이 잘 작동할 것이라 생각했다.
그 이후에 어느 정도 상품과 고객이 생기고 행동 데이터가 많아지고 나서는, 카테고리컬한 데이터가 많은 특성을 고려하여 FFM으로 추천할 생각을 했다.
그 이상의 딥러닝 기법들은 MAU를 고려했을 때 도입할 수 없을 것이라 생각했다. (내가 잘 모르기도 한다...) 이 모델들은 로컬에서 학습시킨 뒤, AWS EC2에 모델만 올려 예측만 시키게 만들거나 배포에 문제가 생긴다면 Sagemaker를 이용하여 학습 및 배포를 시키려고 했다. 만약에 추천에 정말 실패했을 경우, AWS의 Personalize를 사용하려 했다.
이렇게 이야기하면 되게 간단해 보이는데, 아예 개념이 없는 상태라 정말 애를 먹었다. 저 생각을 하는데 2달 정도 걸렸다.....
한 가지 모델을 배우려면 수학적인 것도 중요하지만 직접 데이터에 실험해보는 것이 중요하다고 생각한다. 하지만 이 때는 고객은커녕 어플도 없었고, 실험할 것이 없었다. 그래서 Recsys 대회에 나왔던 문제들 중에서 커머셜 데이터를 자주 사용했었다. 그래도 그 데이터는 우리 데이터가 아니고 내가 쓰려는 피쳐들과는 아예 다르고 고객도 다르기 때문에 큰 의미는 없어 보였다. 그냥 답답한 하루하루를 보내고 있었다....
추천 시스템에 대해서는 위처럼 계획을 세워 놓고, 새로운 할 일을 찾았다.
내가 했던 일 : 2. App 프론트 엔드 개발 및 Web MVP 모델을 위한 프론트 백엔드 서버 구축
App 프론트 엔드 개발
추천 시스템을 하면서 스트레스를 정말 많이 받았는데, App 프론트엔드를 만들면서는 좀 괜찮아졌다. 어도비로 시안을 그려오면 내가 Reactnative로 옮겼다.
처음에 자바스크립트를 배우면서, 이 언어는 정말 파이썬이랑 너무 다르다고 생각이 들었다. 파이썬은 위에서 아래로 순서대로 실행되는 반면, 자바스크립트는 한 번에 실행이 된다. 그래서 위에서 변수를 할당해도 밑에 있는 코드가 동시에 실행되어 값이 비었다고 에러가 나는 경우가 있다. 이 특성을 비동기라고 하던데, 아직도 난 이해를 하지 못했다.
하지만 리액트 네이티브로 화면을 만들기에는 어렵지 않은 작업이었다. 코딩으로 그림을 그리는 느낌이었다. (물론 100프로 어도비와 똑같은 그림이어야 하지만)
Web MVP 모델을 위한 프론트 백엔드 서버 구축
[성동-HYU 예비 창업 패키지]에서 발표심사를 받기 전에 MVP 테스트를 진행해야 했고, 내가 개발에 관한 모든 과정을 맡아서 진행했다. 프론트엔드는 리액트로 만들었고, 백엔드는 AWS의 EC2와 RDS의 조합으로 만들었다. 이 과정에서 AWS는 스타트업을 하는 데 있어서, 없으면 안 될 요소라는 것을 몸소 느꼈다. 그리고 UI/UX에 대해서 다시금 생각하였다. 전에 빅콘테스트 공모전 POC에서 만든 어플 화면에 좀 더 신경을 썼으면 어땠을까 생각이 들었다. (그때 내가 만든 화면이 아니라서 이런 말은 사실 하면 안 된다.....)
(좌) 빅콘테스트 POC 어플 화면 (우 2개) 리액트로 만든 웹 화면
저 화면 하나를 만드는데 글자도 이것저것 써보고, 위치도 여기저기 바꿔보았다. 상품에 대한 정보의 수도 줄여보고, 늘여도 보고, 글자 크기도 바꿔보고 여러 가지를 하였다. 소비자들이 어떻게 하면 더 편하게 볼 수 있을까? 어떻게 하면 더 좋은 경험으로 다가올 수 있을까? 고민을 많이 했다.
그러면서 고객에 대해서 고민하는 것이 재미있다는 것을 느꼈었다. 이후에 이 계기로 그로스 해킹에 대해서 관심을 가지게 되었고, 고객들이 들어오면 그로스 해킹을 해보고 싶다는 생각을 했다.
[성동 HYU 예비 창업 패키지] 선정
예비 창업 패키지가 안됐으면 시간을 좀 버렸네 싶었을 텐데, 그래도 선정이 되어서 아예 가능성 없는 일을 하지는 않았구나 생각했다. 하지만 나는 패키지가 되던 말던, 나갈 생각을 하고 있었다. 고객층에 대한 의심, 스타일리스트에 대한 의심, 데이터 사이언티스트로서의 나 자신에 대한 의심이 이유였다.
좋은 경험이었다. 재미난 생각들을 현실로 옮기려는 시도였고, 그 과정에서 배우는 것들이 많았다. 그중에서도 가장 크게 배운 것은 나는 스타트업에 남아야 할 사람이고, 아직은 공부할 것이 많다는 것이다. 라는 것이다.
버는 돈 없이 내가 가진 돈을 다 쓰면서도 세상에 필요하다고 생각한 서비스를 새벽부터 밤까지 만들어가는 과정이 즐거웠고, 살아있음을 느꼈다.
그 이후
휴식기를 가졌다. 여행도 다녀오고, 그냥 누워있기도 했다. 스타트업을 할 때 바쁘게 살아서인지, 뭔가 좀 해야할 것 같은 기분이었지만 쉬었다.
그러다가 어느 순간 이제 쉬는 것도 재미없다고 느껴질 때, 공부를 시작했다. 통계 공부도 다시하고, 계량 공부도 하고, 모델링도 보는 중이다. SQL도 공부하고, 개인 프로젝트도 하나 할 예정이다. (바빠 보이는데, 조금씩 하고 있어서 안 바쁘다.)
그리고 4-2학기를 다니고 졸업을 할 것이다. 더 나아가 스타트업에서 데이터를 하는 사람이 될 것이다.
누가 이 글을 읽을지는 모르겠지만, 여기까지 읽었다면 내 20살부터 27살까지의 인생을 보았다. 나에 대해 어떻게 생각할까?
다음에 이 카테고리에 글을 쓸 때쯤에는 난 어디서 뭘 하고 있을지 궁금하다. 지금보다 더 멀리 나아갔기를 바랄 뿐이다.
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: 우리의 플랫폼은 가격에는 관여하지 않는다. 자영업자들이 감내가능한 가격과 소비자들이 매력적이라고 생각하는 수준의 가격은 플랫폼 이용자들 사이에서 정해진다. 따라서 그 문제는 시장이 해결해 줄 것이라고 생각한다.
발표가 끝난 후, 든 생각
우리가 제일 마지막 발표라 다른 팀들이 발표하는 것을 지켜보았는데, 딥러닝을 들고와서 모델링을 한 팀들이 많았다. 정말 모델이 제대로 작동하는지 궁금하다. (딥러닝을 하기에 충분하지 않은 관측치이지 않았나 싶다.)
또 다른 팀에게는 어떠한 질문을 했는지 궁금하다.(질문은 들을 수 없었다.)
그래도 본선 진출만 하면 절반 조금 안되게 상을 주던데, 우리도 받을 수 있지 않을까 생각을 했다...