Career

2021 데이터 분석가 첫 스텝

결론적으로, 
2021년 2월 퇴사, 그해 9월 컬리에 조인할 수 있었던
현 주니어 분석가의 커리어 전환 회고록🙂

 

왜 데이터 분석? 

    기억을 되짚어보면, (나름) 사회과학 분야를 전공한 내가 처음으로 데이터 분석을 접한 것은 '설문조사' 때문이었다. 데이터 분석가인데 전공이 사회학&신문방송학이라고 하면 다들 의아하다는 반응을 보이지만 사실 사회과학을 배우겠다면 당연히 사회를 조사, 연구하는 방법론을 배울 수 밖에 없다. 그리고 그 방법론으로 대표적인 것이 바로 모두가 익히 알고 있는 설문조사일텐데, 설문조사도 대체로 정량조사다 보니 파보면 자연스레 파생되는 SPSS나 통계학까지 배우기 마련인 것이다. (신문방송학과 출신이 여론조사를 한다고 하면 이상하게 들리지 않을 것이다.) 

 

    물론 당시 주변 반응을 보면 일부 문과생 출신들에게 SPSS나 통계학은 사형선고가 분명했다. 그런데 오히려 나는 기사 쓰고 영상 찍고 광고 만드는 그 모든 것보다 사회조사가 재밌어버렸다. 해당 분야 교수님을 따라다니면서 SPSS와 R을 가르치는 대학원 강의도 청강하고(지금은 SPSS도 R도 못한다...하하), 마침 그 즈음부터 학과에서는 학부생들에게 데이터 분석의 맛보기라도 보여주고 싶은 교수님들이 관련 강의를 열기 시작하셨다. 데이터 분야 강의들은 처음 열리자마자 기피 강의로 직행했던 덕분에 나는 오히려 수강신청을 널널하게 성공했고, 그것이 Python을 이용한 데이터 분석과의 첫 만남이었다. 

 

 

제로베이스에서는 (*구 패스트캠퍼스)

    유난히 눈도 많이 오고 추웠던 2021년 초에 무턱대고 제로베이스(구 패스트캠퍼스, 이하 제로베이스) 수강신청을 해버렸다. 당시에는 한 컨설팅펌에서 RA로 일하고 있었다. RA로 처음 일을 시작할 때만 하더라도 전공자도 아닌 내가 데이터 분석을 본업으로 삼을 수는 없을 것이라고 막연히 생각했었다. 그래서 데이터 분석이 메인 role은 아니지만 그래도 업무 중 하나인 곳에서 일을 시작했던 것인데, 그 갖가지 일 중에서도 데이터 분석만큼 성향에 맞는 게 없더라. 게다가 그 때는 다루는 데이터의 볼륨 자체가 극히 적어서 파이썬을 쓸 필요조차 없고 주제도 매번 비슷비슷하다보니 빠르게 성장해야 할 시기에 분석 스킬을 갈고 닦기는 커녕 마냥 정체되어 있다는 게 답답했다. 결국에는 내가 하고 싶은 일만 명확하게 된 셈이어서 언젠가 후회하더라도 하고 싶은 걸 해보고 후회하자, 는 생각으로 지원했던 것 같다. 

 

    그렇게 거진 반년 간을 원없이 달렸다. 사실 운이 좋았다고 생각한다. 처음 시작할 때만 해도 걱정반 불신반이었던 제로베이스였지만(학원에 대한 기대보다는... 나만 잘하면 어떻게든 될 것이라는 생각이 강했다) 강사님들의 수업은 하나하나 알차면서 재밌었고, 동기들도 하나같이 잘 만난 덕분에 종강한지 거의 일년이 되어가는 지금까지도 같이 놀면서 같은 길을 걷는 사람들끼리 서로 의지가 되어주고 있다. 특히 제로베이스 수강 및 취준 기간 동안 이런저런 프로젝트를 경험했는데, 그 때마다 한 스텝, 한 스텝씩 더 내딛을 수 있었다. 결과적으로 본격적인 데이터 분석가로서의 첫 커리어를 마켓컬리의 Business Analyst(BA)로 시작할 수 있었던 것은 이 모든 것들이 함께 맞물렸기에 가능한 것 아니었을까. 

 

    당시 진행했던 몇 가지 프로젝트를 소개해보자면 다음과 같다. 

 

제주도 대중교통 이용자 수 예측 

    이 프로젝트는 제주도의 라스트마일 업체들이 활용할 수 있도록 대중교통 이용자 수, 특히 관광객이면서 동시에 대중교통을 이용하는 사람들의 수를 예측해보자는 목적으로 기획했었다. 우리한테 필요했던 데이터셋 중에 하나가 월 단위 집계값만 있어서 제주 관광협회에 전화를 해서 직접 받아냈다보니 더 기억에 남는 프로젝트다... 데이터셋이 없는 서러움이란... 그리고 이렇게 드래곤볼 모으듯 간신히 모은 데이터들이 모아놓고 보니 또 너무 방대해서 병렬처리를 위해 DASK에 매달렸던 프로젝트기도 하다. DASK 최고    

 

    회귀분석 자체도 재밌었지만, 민형기 강사님의 아이디어로 제주도 대중교통 이용자들을 대상으로 이용자들의 이용방식에 따라 도민과 관광객을 구분할 수 있는지 K-means clustering을 시도했었는데 진짜 두 그룹으로 명확히 나뉜다는 것을 찾아내서 뿌듯했었다. 아래 이미지를 보면 Cluster 0(붉은색)은 제주국제공항 및 함덕, 애월 등 주요 관광지 정류장의 이용량이 상대적으로 많고 Cluster 1(푸른색)은 제주시 및 서귀포시 중심으로 이용량이 많은 것을 볼 수 있다. 

    추가적으로 이 프로젝트 기간 내내 폴리움에겐 미안하지만 Uber에서 만든 지리 시각화용 라이브러리인 파이덱(Pydeck)을 신나게 썼다. 위 이미지가 파이덱으로 그려본 제주도 이미지(클러스터별 주 이용 정류장을 표시한)인데 진짜 너무 감동적으로 예쁘게 나온다. 난 내가 나타내고 싶은 포인트가 명확하면서도 + 예쁜 시각화가 너무 좋다.   

 

 

OCT 이미지를 이용한 황반질환 분류

    이 때는 컴퓨터 비전(computer vision)에 꽂혀가지고 CNN을 이용해 황반질환(DME, CNV 그리고 Drusen) 분류를 주제로 머신러닝/딥러닝 프로젝트를 진행했었다. 데이터셋의 중요성을 다시금 배웠던 계기이기도 했다. 무려 캘리포니아의 모 대학에서 제공하는 데이터셋이었음에도 뜯어보니 환자 고유 ID마다 포함된 OCT 이미지의 수가 지극히 불균형해서 개인의 특성을 학습해버릴 가능성이 있는 데다가(어떤 환자는 달랑 1장 들어가 있는데 어떤 환자는 최대 몇백장씩 들어가 있는 상황) 어떤 환자들은 Train / Test Set에 전부 다 들어가 있어서 전처리부터 오래 걸렸다. 민형기 강사님께서 시작 전에 데이터셋을 먼저 탐색해보라고 항상 말씀하셨는데, 이때도 짚어주지 않으셨으면 아마 데이터 오염된지도 모르고 진행 한참 하고 나서야 문제점을 발견했을 것 같다... 

 

    목표는 1) 여러 종류의 필터를 써서 OCT 이미지에서 환부를 부각하는 것, 2) OCT 이미지에 가장 성능이 좋은 CNN을 찾아내는 것이었는데, CLAHE(Contrast Limited Adaptive Histogram Equalization, 이미지를 여러 구역으로 나누어 구역 단위의 히스토그램 균일화를 시행, HE의 문제점인 과도한 대비를 막는 것)와 Inception Resnet V2(feat. 전이학습)를 적용했을 때 0.98이라는 accuracy를 얻을 수 있었다. 비교적 경증인 Drusen은 normal과 헷갈려하는 모습을 보이긴 했지만 그래도 이때 컴퓨팅 한계로 약 5천장정도의 train data만 사용했던 것을 감안하면 리소스 대비 높은 성능이라고 볼 수 있을 것 같다.

    구글 Colab 정기결제의 늪에 처음으로 빠진 시기기도 했는데... 코랩에서도 램을 몇번씩 터뜨리면서 왜 주변 사람들이 점점 보태보태병과 장비병에 걸리는지 이해할 수 있었다. 나도 테슬라 T4 갖고 싶어... 

 

데이터 사이언스 인턴십 (그리고 이제 구글 ML 부트캠프를 곁들인...) 

    제로베이스가 끝나자마자 구글에서 진행하는 머신러닝 부트캠프 2기에 또 덜컥 합격해버려서 감사하게도(?!) 쉴틈없이 공부를 할 수 있었다. 제로베이스가 프로젝트 중심이라면 구글 ML 부트캠프는 그 유명한 앤드류 응(Andrew Ng) 교수님의 코세라 강의를 중심으로 딥러닝의 이론과 모델 작동방식 등의 기초를 탄탄히 다지는 것과, 자격증 취득, 캐글 상위권 달성 등을 목표로 한다.  

 

  아무래도 커리큘럼상 구글 ML 부트캠프는 이론적 초석을 다지는 것에 초점이 맞춰져 있긴 한데(물론 부트캠프 동기들끼리도 자발적으로 프로젝트를 진행하기도 한다) 이때 동시에 민형기 강사님께서 도와주신 덕분에, 일본향 미디어/콘텐츠 스타트업인 S사에서 데이터 사이언스 팀으로 인턴십 기회를 받을 수 있었다. 프로젝트와 이론 공부를 병행할 수 있는, 제로베이스 종강 직후 또 한번 몰입할 수 있었던 기회였는데, 무엇보다도 제로베이스나 구글 ML 부트캠프만으로는 부족했던 실전 경험이 되어주었다. 아무래도 학생 입장에서는 데이터를 직접 수집하든지, 캐글이나 데이콘 등에서 공개된 데이터를 사용할 수 밖에 없는데 실제 기업에서 긴밀하게 일해볼 수 있어 큰 도움이 되었다. 

 

    이때 인턴십 내내 민형기 강사님께서 일종의 PL 역할을 수행해주셨는데, 대면 미팅 외에도 ZOOM과 컨플루언스를 이용해 필요할 때마다 민형기 강사님, 그리고 팀원들과 긴밀하게 협업하고 성과도 공유할 수 있어서 좋았다. 무엇보다 주니어로서는 항상 진행방향 설계에서 헤매기 마련인데 방향성이나 진도관리 등 부족한 부분을 그때그때 짚어주셔서 일하는 방식, 협업하는 자세 자체를 많이 배울 수 있었다. 인턴십 당시 진행했던 주요 프로젝트들을 살짝 소개해본다.

 

딥러닝을 활용한 음원 유사도 평가 모델링 

    당시 S사 대표님께서 요청하셨던 주제는 음원 간 유사도 판정이었는데, 팀에서는 코사인 유사도, 딥러닝을 활용한 방식 등 여러 방식을 고안해서 각각의 성능을 비교, 가장 우수한 성능을 가진 방식을 채택하는 쪽으로 진행해보고자 했다. 그 중에서 내가 주로 담당했던 것은 딥러닝 활용 방식으로,  음원을 스펙트럼 이미지로 전환해 샴 네트워크(Siamese Network)를 적용하여 유사한 이미지인지 아닌지를 판단하는 방향으로 진행하였다. 

왼쪽 이미지와 오른쪽 이미지의 유사도 비교

    결론적으로는 코사인 유사도 방식에 비해 컴퓨팅 리소스도 많이 들고 느린 한편으로 Accuracy가 특출나게 높아지지는 않아서 코사인 유사도 방식을 채택했고, 코사인 유사도에 기반한 음원 평가 서비스를 제작하는 것으로 진행하게 되었다. 다만 S사 같은 스타트업으로서는 항상 데이터셋이 부족하기 마련인데, 추후 활용성을 고려한다면 Few Shot Learning의 한 방법론인 샴 네트워크를 이번 기회에 적용하였다는 점에서는 의의가 있었다고 생각한다. 

 

 

장면 묘사 모델링 

    음원 유사도 이후 진행했던 프로젝트는 바로 장면 묘사 모델링이었다. 웹드라마 등의 동영상에 대해서, 컷씬 마다 해당 장면을 묘사해주는 모델을 만드는 것이다. 예를 들면 동영상 속에서 남자 둘이 싸우고 있다면 '두 남자가 싸우고 있다' 등의 자막을 모델이 생성해내는 것이다. 솔직히 말해서 드라마를 잘 안보는 사람인지라 내게는 S사 인턴십이 아니었다면 고안도 해보지 못했을 주제여서 오히려 흥미롭게 진행할 수 있었다.

    직접 라벨링을 하기 전까지는 말이다... 공개된 데이터셋을 구해서 사용했는데 데이터셋을 구축한 라벨러들마다 자막의 성격이 조금씩...아니 많이... 달라서 학습시키는데 애를 먹다가 결과적으로는 직접 라벨링을 하기에 이르렀다. 인생은 실전...!

실제 만들어진 자막 예시

     장면 묘사 모델링의 특이한 점은 장면을 인지하는 부분은 CNN(Convolutional Neural Network) 계열을 적용하지만, 자막 즉 문장을 생성하는 부분은 내러티브가 반영되어야 하기 때문에 RNN(Recurrent Neural Network) 계열의 네트워크가 필요하다는 점이다. 처음에는 VGG16으로 장면의 feature를 뽑아내고, 대표적인 RNN인 LSTM으로 자막을 생성했는데 LSTM이라 그런지 아무래도 학습도 오래 걸려서 RNN 계열 대신 트랜스포머를 공부해서 적용하게 되었다. 아직까지는 성능이 썩 우수하다고는 말할 수 없을 것 같고... 문장의 완성도도 100%는 아니다ㅎㅎㅎ... (대표적인 특이사항은 여자가 머리를 뒤로 묶고 있으면 남자랑 구분을 못한다는 것이다...)

 

 


글을 마치면서, 그리고 현재 

 

    2월 이후의 나는 매일매일 하루가 지나는게 아쉬웠고, 다음날 학원에 가야 하기 때문에 잤다. 돌이켜보면 나의 체력과 왜 이제서야 시작했을까 하는, 지난 시간이 아쉬웠던 순간들은 있었어도 의외로 심리적인 압박감은 없었던 것 같다.(난 약간 생각이 없다... 그냥 할 뿐...) 프로젝트의 결과나 내 실력에 대한 고민이야 항상 많았지만, 적어도 이 길에 잘못 들어선 것은 아닐까하는 고민만큼은 없었다. 그만큼 데이터 분석은 내 흥미와 적성에 맞는 일이었고, 다행이게도 내게는 시간을 들이면 수업을 따라갈 만한 정도의 코딩 지능(?)이 존재했다. 그래선지 그 당시의 나를 본 친구들은 기운은 없어보이는데 기분은 좋아보인다고 했다ㅋㅋㅋ 

 

    그리고 2021년 9월 말, 나는 컬리에 비즈니스 분석가로 조인하게 된다 :)

 

    2021년 2월, 다니던 회사를 뒤로 하고 제로베이스 생활을 시작해 본격적으로 공부한 것 치고는 빠르게 커리어 전환에 성공하였다고 생각한다. 누군가 비결을 묻는다면 사실 정말로 운이 좋았다고밖에 할 수 없을 것 같다. 물론 부끄럽지 않을 만큼은 노력하였지만 혼자만의 노력만으로는 할 수 없는 것들도 분명 있었다. 언제나 인간관계는 어려운데, 학원이라는 곳에서 마음 맞는 동기들과, 늦은 시간까지 함께 공부해주는 클래스 매니저를 만나는 것도 쉽지 않은 일이고, 공부하는 학생들에게 내부 데이터를 선뜻 내줄 기업도 결코 많지 않을 것이다. 매순간, 천운이게도 내가 필요로 할 때 좋은 사람들로부터 기회가 주어졌다. 그저 내가 잘한 점이라면 기회가 주어졌을 때 일단 겁없이 잡고봤다는 것 아니었을까...? 

 

    그렇게 지금은 주니어 분석가가 된지 벌써 반년이 넘었다. 컬리에서도 좋은 동기들과 팀을 만났고, 나는 매일 우당탕탕 거리지만 그래도 분명하게 또 한걸음 한걸음 성장하고 있다. 요새는 시간이 조금만 나도 좀쑤시는 탓에 Udemy에서 파이썬 개발 강좌도 수강해보고 있는데 여전히 재밌어서 다행이다. 앞으로도 현업에서 계속 성장해나가면서, 내가 도움을 받았던 것처럼 이번에는 또다른 예비 분석가들을 도울 수 있는 위치가 되기를 소망해본다 :) 

 

Special Thanks To💜 

서류 떨어질 때마다 같이 맥주 마셔준 제로베이스 음주코딩 동료들ㅋㅋㅋㅋㅋ

항상 재밌는 기회를 만들어주신 민형기 강사님 & 스파게티 코드를 풀어주신 박두진 강사님