패스트캠퍼스 BDA과정의 꽃이라고도 할 수 있는 파이널 프로젝트가 종료되었다.
지금까지 배웠던 Python, SQL, Tableau 등의 툴과, 여러 방법론 등을 총동원하여 실제 기업의 데이터를 받아 기업연계 프로젝트를 한 달여간 진행했다.
지금까지 했던 미니 프로젝트들보다 기간도 길었고, 실제 현업의 프로세스와 가장 유사하게 진행이 되었기 때문에 고생도 많았고, 과정을 겪으면서 성장하고 느낀 점도 많았던 것 같다.
해당 글은 스스로 파이널 프로젝트를 마치면서 느꼈던 점들과 진행 프로세스, 보완할 점들에 대해 정리해보려고 작성하는 글이다. 기억은 쉽게 휘발되기 때문에 최대한 기억이 생생하게 남아있을 때 작성해본다!
0. 데이터 & 제공 기업
이번 BDA11기 데이터를 제공해준 기업은 리코맨즈라는 기업으로, 천연 원석을 활용한 악세서리를 제작하는 브랜드이다.
실제 통계학과 학생으로서 수많은 미니 프로젝트들을 해봤지만 가장 어려운 부분이 데이터 선정임을 알기에, 수료생들을 위해 선뜻 데이터를 제공해 준 리코맨즈 대표님과 관계자분들께 다시 한번 감사하다는 말씀을 전하고 싶다.
또한, 아래에서 정리될 내용들은 아무래도 기업 보안상 정확한 수치는 밝히기 어려우므로 대략적인 흐름만 나타낼 생각이다.
1. 프로젝트 진행 프로세스
위의 타임라인대로 프로젝트가 진행되었다. 초반 도메인 조사와 어떤 방향으로 분석을 진행할 지에 대한 기획안 1차 발표가 초반에 있고, 중간에 직접 기업과 정기 미팅을 2번정도 가졌던 것 같다.
무작정 꼬리에 꼬리를 무는 분석이 아니라, 중간 중간 잘 진행이 되고 있는 지 점검을 할 수 있는 프로세스였기 때문에 분석에 매몰되지 않았던 것 같다.
또한 과정 중에 일주일에 한 번씩 배정된 현업 멘토님과의 피드백 시간이 많이 도움이 되었다. 일차적으로 현업에 계신 선배님의 시각으로 문제점을 파악할 수 있어서 좋았고, 두 번째는 주마다 작은 데드라인이 정해져서 일이 체계적으로 진행될 수 있었던 것 같다.
회의는 ZOOM 소회의실, 필요한 자료는 slack, 작업은 Notion을 통해 이루어졌다. 참고로 아래의 협업 툴들은 실제 현업에서도 사용하는 경우가 많은데, 나는 패스트캠퍼스 과정을 수료하면서 처음 사용해보았고 많이 익숙해졌다. 요런 사소한 부분들도 부트캠프 과정에서 많이 배우게 되는 것 같다.
2. 사용한 분석 툴(tool)
분석과정에서는 파이썬(jupyter notebook), MySQL, 엑셀, Tableau등 다양한 툴을 모두 활용했다.
초반에 어려웠던 점은 어떤 경우에 어떤 툴을 써야하는지에 대해서 감이 오지 않는 것이었다.
왜냐하면 여태까지는 하나의 툴을 배우면 그걸 마무리하는 과정으로 미니 프로젝트를 해왔기 때문이다.
위에 슬랙 DM을 보면, 실제 조원들끼리 얘기해봤을 때, 어떨 때 python을 쓰고, 어떨 때 SQL을 쓰고 해야하는지를 잘 모르겠어서 강사님께 여쭤보기도 했었다. 처음에는 강사님께 받은 답변이 정확히 무슨 뜻일까 생각했는데, 강사님 말이 딱 와닿는 시점이 분석 2주차 쯤에 있었다ㅋㅋㅋ
예를 들어, 초반 데이터 파악과 결측치 & 이상치 수정 단계에서는 파이썬으로 보는 게 훨씬 효율적이고 값을 오류없이 수정하는 작업이 더 간단했다.
파이썬은 모든 게 객체 단위로 움직이기 때문에, 수정 전&후를 객체로 확인하기가 쉬웠고, 이를 반영하는 것도 아래와 같은 마지막 한 줄이면 가능하다.
(물론 데이터의 규모에 따라 다르겠지만, 내가 파이썬으로 분석했던 리코맨즈의 데이터는 규모가 작은 편이었다)
df = df_adjust
그래서 초반에는 파이썬으로 csv 파일을 읽어들여서 판다스의 dataframe 구조로 이상치를 수정하거나, 중복값을 삭제하는 작업들을 진행했다.
그런데 데이터의 정제가 어느 정도 끝난 시점에, EDA로 고객 행동 특성을 파악하려고 하니 점점 그룹단위로 집계해야 하는 경우가 늘어났다.
물론 파이썬에서도 dataframe.groupby
메서드를 이용하면, 원하는 변수별 집계가 가능하지만, SQL보다 직관적이지도 못할 뿐더러, 코드도 매번 길게 작성해야 한다.
반면 SQL의 최대 장점은 GROUP BY 와 서브쿼리의 활용이기 때문에 EDA부터는 SQL로 작성하는 것이 훨씬 빠르고 효율적이다.
위의 코드로만 보면 SQL 코드가 더 길어보일 수 있지만, 실제 필요한 요점만 놓고 비교한다면 SQL의 구조가 훨씬 단순하다. 또한 이러한 그룹 집계를 한 번만 하지 않는다는 점에서 더더욱 SQL이 효율적이라고 볼 수 있다.
최종적으로 사용한 툴을 정리하자면 다음과 같다. 물론 한 단계에서 여러 가지 툴을 같이 사용한 경우도 있으며, 후반에는 대부분의 툴을 모두 켜놓고 분석을 했었다.
파이썬 : 초반 데이터 파악과 결측치 & 이상치 수정 단계, 리뷰 분석
SQL : 전반적인 EDA, RFM 분석, 리텐션 계산 등 전반적인 분석 단계
Tableau : 초반 데이터 EDA, 최종 시각화 단계
3. 분석 내용
우리팀의 분석 주제는 고객 세그먼트별 전략제안이었다.
현재 1년 남짓 된 신생기업인 리코맨즈의 고객 구매 데이터를 통해, 리코맨즈의 기업가치를 높이고, 매출을 증대시키기 위한 방향으로 단계별 고객 리프팅 방법을 제안했다.
먼저 주로 파이썬과 엑셀을 이용하여 중복값을 제거, 파생변수를 생성하는 데이터 전처리 단계를 거쳤다.
그 다음으로는
a. 재구매가 이뤄지지 않는 단기성 구매 고객(기존 고객)의 재구매를 유도하는 방안과,
b. 회원가입은 했으나 구매를 하지 않는 잠재고객의 첫구매를 유도하는 방안
이렇게 크게 두 가지로 나눠 여러 방법을 제안하는 플로우로 내용을 구성했다.
방법을 제시하기 위한 근거로서 RFM 분석, 롤링 리텐션, 상관계수, 중복되지 않는 조합추출, 마인드맵 구성, 리뷰 워드클라우드 구성 등 다양한 분석 방법들을 사용했다.
그리고 각각의 분석마다 제시할 수 있는 액션을 최대한 구체적으로 구성했다.
아래 4개의 장표는 각각 근거로서 제시된 분석 방법론들이고, 그 아래 장표들은 그에 따른 액션들이다.
최종적으로는 각 단계에서 도출된 인사이트들을 한번 더 언급하고 그에 따른 액션을 제시하는 것으로 마무리를 했다.
4. 분배 방식, 협업을 하며 느낀 점
지금까지의 프로젝트들에서 주로 조장을 맡았었고, 이번에도 조장을 맡게 되어 많은 부담감을 느꼈던 건 사실이다.
그래도 이번 팀원들은 정말 마음이 잘 맞기도 했고, 대부분 리더급의 역량을 가지신 분들이라 주도적이셨기 때문에 모든 일을 내가 분배하고 컨트롤해야 한다는 부담감은 한층 덜했던 것 같다.
그래도 한 달간의 진행 과정에서 항상 잘 진행되었던 건 아니었다. 이건 팀원들도 동의하겠지만, 오히려 일이 잘 풀리지 않는 경우가 많았고 그럴 때마다 다들 너무 막막해했기 때문에 그런 경우에는 알게 모르게 조장으로서 마음이 많이 무거웠던 것 같다.
그럼에도 다행인 건 조원분들이 나를 무한 신뢰(?)해주시고, 안풀리는 부분이 있으면 바로 헬프 요청을 주셔서 나름대로 굉장히 애자일하게 일이 진행되고 해결되었던 것 같다.
(혹시 저와 기억이 다르시다면 댓글을..)
초반에는 모두가 데이터에 대해서 잘 몰랐기 때문에 따로 영역을 나누지 않고 각자 볼 수 있는 만큼 데이터를 봐왔고,
어느 정도 데이터에 대한 특성 파악이 끝나고 나서부터는 각자 굵직한 분석을 한가닥씩 붙잡고 진행을 했었던 것 같다.
지금까지 미니 프로젝트를 해본 경험상 혼자 막히는 부분은 같이 해결하면 생각보다 빨리 해결되는 경우가 많았기 때문에, 매순간 잘 안되거나 도움이 필요한 부분에 대해서 얘기를 나누려고 노력했던 것 같다.
그리고 무엇보다 서로 notion을 통해 결과물을 공유할 때, 꼭 구현할 수 있는 코드를 공유하여 나온 결과물을 더블체크했다. 실제로 DA에게 요구되는 많은 중요 역량들이 있겠지만, 그 중에서 양보할 수 없는 부분이 결과, 특히 수치에 대한 정확성이라고 생각한다. 실제로 분석을 다양하게 펼쳐놓고 하다보면 서로 값이 맞지 않는 경우가 생기는데, 우리 팀은 초반에 이런 문제들을 꼭 해결하고 지나갔다. 별 문제가 아니라고 생각할 수는 있겠지만, 초반에 이런 과정들이 있었기 때문에 후반에 흔들림 없이 속도를 낼 수 있었다고 생각한다.
일의 분배 같은 경우는 조원들의 성격 때문도 있고, 그동안 내가 여러 미니 프로젝트들을 통해 성장한 것도 있고.. 어쨋든 복합적으로 제일 잘 이뤄졌던 협업 프로젝트가 아닐까 생각한다. 물론 내가 조장이기 때문에, 공식적으로 할당된 9-18시의 분석 시간을 제외한 시간도 많이 할애하긴 했지만, 결과적으로 그럴 가치가 있는 시간이었다.
5. 프로젝트를 통해 느낀 나의 강점 및 단점
이번 파이널 프로젝트를 하면서 느낀 나의 강점은
첫번째로 팀원들의 성향을 빠르게 파악하는 편이다. 초반에 팀원들의 성향이나 일하는 방식, 잘하는 부분을 파악하고 그에 맞게 일을 부탁하거나 분배를 하려고 한다. 생각해보면 성향도 리더 성향에 가깝고, 대학생활 4년 내내 모든 팀플의 조장을 맡아서 해오기도 했고, 이번 부트캠프에서도 4번의 프로젝트 중 3번의 팀장을 했기 때문에 점점 습관화 되어가는 것 같다. 신기하게도 이렇게 조장을 많이 하지만, 이번 4개월 간의 부트캠프 과정 내에서 매번 경험이 다 달랐고, 그 때마다 배우는 게 늘 있었다. 그만큼 팀을 리딩하는 일은 늘 할 때마다 새롭고 어렵다는 생각이 든다.
두번째로 협업을 위한 요소들을 고려한다. 예를 들어 파이썬 코드를 공유할 때, 주피터 노트북 문서를 보고 순서대로 쉽게 이해할 수 있도록 주석이나 마크다운까지 신경을 쓰는 편이다. 대부분의 주요 코드를 내가 짜서 공유하는 경우가 많았기에 문서의 가독성이 중요했으므로 코드를 모두 작성한 후에는 항상 공유할 수 있게 내용을 정리했다.
세번째로 디테일을 놓치지 않고 늘 확인한다. 데이터 전처리 단계부터 여러 가설과 그에 따른 디테일 요소들을 놓치지 않고 확인하는 습관이 있다. 실제로 팀원분이 프로젝트 진행하면서 많이 칭찬해주신 부분이고, 스스로도 성격상 확실히 강점이 있다고 생각한다. 특히 중복 데이터를 제거하거나, 파생변수를 생성할 때, 알고리즘을 구현할 때 예외상황을 확인하는 경우 등 디테일을 놓치지 않는 성격이 빛을 발하는 순간이 많은 것 같다.
반면! 내가 생각하기에 아직 좀 부족하다고 느끼는 나의 단점은
첫번째로 스스로에 대한 기대치가 너무 높아 자신감이 조금 부족하다. 이건 고치려고 계속해서 노력중인 부분인데, 쉽게 되지는 않는 것 같다. 강사님도 지적하신 부분인데, 훨씬 더 자신감을 가지고, 타인이 하는 칭찬에 대해서 그대로 받아들일 수 있어야 하는 것 같다. 물론, 내가 늘 부족함을 느끼고 그게 동기부여가 되어 많은 노력을 하게 되는 건 맞지만, 어느 정도는 타인에게 자신있게 나를 보이는 것도 중요하기 때문에 이 부분은 확실히 고칠 필요가 있다고 느꼈다.
변명 아닌 변명을 해보자면, 대부분의 경우 항상 팔로워가 아닌 리더의 역할을 맡기 때문에 팀원들을 아우를 수 있는 능력이 필요하다고 생각이 드는 것 같다. 이번 파이널 프로젝트의 경우 개인적으로는 최고의 퍼포먼스를 냈다고 자부하는데, 프로젝트 하는 동안은 팀원들이 모두 리더급 역량을 갖추고 있어서 말도 못하게 스트레스도 받고 땅굴도 많이 파고 들어갔다. 아무래도 지금의 팀원들에게 버팀목이 되려면 내가 더 잘해야 돼!! 이거 갖고는 모자라!! 하는 생각에 한 달 내내 시달렸던 것 같다. 결론적으로는 그래서 나도 많은 공부와 성장이 됐고, 우리 팀도 좋은 결과를 맺긴 했지만.
두번째로 전체적인 그림을 파악하는 능력이 조금 떨어진다. 내 강점으로 디테일을 잘 챙기는 것을 꼽았는데, 그에 비해서 큰 그림을 그리는 능력을 살짝 부족하다고 생각한다. 나무와 숲으로 비유하자면, 숲보다는 나무를 더 잘 보는 편이다. 해당 단점은 이번 부트캠프를 시작하는 시점부터 파악하고 있었고, 그렇기에 4개월 동안 부족한 부분을 채우기 위해 일부러 전체적인 flow를 짜는 연습이나, 관련 서적을 많이 읽고 노력했었다. 그래서 이번 파이널 프로젝트에서는 전반적인 분석 틀을 짜는데 큰 문제 없이 진행할 수 있었던 것 같다. 어쩌면 이번 패스트캠퍼스 부트캠프를 수료하면서 내가 발견한 나의 단점 중 가장 노력해서 보완한 부분이 아닐까 싶다!
6. 보완점
지금 프로젝트를 회고하면서 조금 보완해야겠다 생각이 드는 부분은, 롤링 리텐션, RFM등의 방법론을 선택한 이유나 해당 방법론에 대한 전반적 설명을 추가하면 좋을 것 같다는 생각이 든다.
예를 들어 일반 리텐션이 아닌 롤링 리텐션을 선택한 이유는 BM 특성상 잦은 방문을 고려하기보다는 장기간의 방문을 고려하는 것이 의미적으로도 맞고, CAFE24에서 불러오는 데이터 특성 상 최종 접속일에 대한 정보만 고려할 수 있기 때문인데 발표 자료에는 이런 부분들이 잘 녹아들어있지 않은 것 같다.
추가적으로 포트폴리오를 구성하는 데 있어서는 해당 부분을 수정해서 구성해보려고 한다.
한 달이라는 시간이 어떻게 지나갔는지도 모르게 벌써 파이널 프로젝트를 마무리하고, 이제 수료를 앞두고 있다.
우연히 마지막에 마음이 맞는 팀원들을 만나 잘 마무리하고 팀원들과 실제로 연락처도 교환해 연락을 주고받고 있다.
여러모로 이번 부트캠프를 수강하면서 노력해온 4개월이 정말 값진 시간이라는 생각이 든다.
취업준비까지 잘 이어나가서 마무리까지 잘하고, 언젠가는 나도 N년차 DA 현업자로서 패스트캠퍼스 현직자 특강을 하는 날이 올거라고 믿는다!
'패스트캠퍼스 학습일지' 카테고리의 다른 글
[패스트캠퍼스 DA 부트캠프 11기] 11주차 학습 (1) | 2024.01.05 |
---|---|
[패스트캠퍼스 DA 부트캠프 11기] 10주차 학습 (1) | 2023.12.28 |
[2nd project] SQL 프로젝트 종료 및 회고 (0) | 2023.12.26 |
[패스트캠퍼스 DA 부트캠프 11기]7주차 학습 (0) | 2023.12.07 |
[패스트캠퍼스 DA 부트캠프 11기]6주차 학습 (1) | 2023.11.30 |