패스트캠퍼스 Upstage AI Lab을 시작한 지 어언 한 달 하고도 반이 지나고 있다.
시간 참 빠르다. 언제 이론 듣고 프로젝트 시작하지 했는데 벌써 두 개의 프로젝트가 지났다는 게 실감 나지 않는다.
시간은 속절없이 가고 우리의 기억은 한계가 있다. 그렇다면 답은 기록하는 것뿐.
열심히 기록하고 회고하자!
■ 프로젝트 소개
이 프로젝트는 파이썬을 활용한 데이터 분석 입문과 공공 데이터를 활용한 데이터 분석 실습, 그리고 NumPy, Pandas, Matplotlib과 같은 데이터 분석 라이브러리 기초 사용법에 대한 이해가 목표이다.
프로젝트를 위 기초 라이브러리 이론을 배울 때, 이미 아는 것이라 좀 설렁설렁 듣곤 했다.
하지만 여태 바로 써먹기만 했던 터라 듣는 중간중간 오? 싶은 내용이 많아서
결국 처음 듣는 사람과 다를 바 없었던 건 함정.
우리 팀은 여러 선택지 중에 '패스트캠퍼스 매출 데이터'를 선택한 사람들끼리 하게 됐는데
이게 생각보다 꽤 신의 한수가 됐던 것 같다.
사기업의 데이터는 흔하게 구할 수 없는 것이니...!
강사님 피드백 시간에도 다른 팀보다 패캠 데이터 EDA 하는 게 재밌을 것 같다고 하셨다.
■ Data.info()
다른 팀은 데이터셋을 구해야 했지만 우리 팀은 부트캠프 측에서 제공받아 비교적 빠르게 EDA를 시작했다.
제공받은 것은 2022 패스트캠퍼스 매출 데이터로, 약 16만 개의 데이터가 있었다.
위에서 유추 가능 피처 제외하고 좀 특이했던 점을 설명해 보자면
- 유형 (범주형) : 'PAYMENT', 'REFUND'
- 사이트 (범주형) : '패스트캠퍼스'
- 포맷 (범주형) : '올인원', 'RED'
- 각종 금액 피처 : 특이하게도 object(string) 타입인데 '-'라는 데이터가 섞여있었다.
- 결제 수단 정보
- TRANS - pg 사의 계좌 이체 기능을 이용한 결제
- TRANSFER - 직접 계좌번호 전달을 통한 계좌 이체를 통한 이체
- VBANK - 가상계좌를 통한 결제 (이체)
- CARD - 유추가능
- POINT- 유추가능
- PROMOTION - 유추가능
또한 설명할 수 있을 정도의 데이터 특징으로는
- 판매가격 < 실거래가 인 거래내역은 b2b 거래
- 강의 판매는 3가지의 사업 분야 전반에 걸침 (B2C, B2B, B2G)
처음에는 컬럼이 좀 적어 보이기도 하고 이걸 어떻게 인사이트를 뽑아내지 싶었다.
근데 일단 파고 보니 생각보다 꽤 씹고 뜯고 맛볼 수 있어서 오히려 시간이 모자란 기현상이...?!
■ EDA 방법론
초기에는 어떤 세분화된 목적을 갖고 임해야 하는 것 아니냐는 의견도 있었고
나의 경우에는 캐글을 자주 하다 보니 모델링 관점으로 EDA를 해보는 건 어떨까 했다.
하지만 모델링을 위한 EDA는 모델의 성능을 최적화하는 데 필요한 작업에 더 많은 집중을 하게 되며,
우리는 프로젝트의 방향에 맞게 데이터의 이해를 깊게 하고,
데이터를 통해 얻은 인사이트를 효과적으로 전달하는 데 더 집중하기로 했다.
그리하여 '어차피 목적은 매출 증가'라는 목적 아닌 목적과 배운 것을 모두 써먹어보자고 결론을 내렸다.
(물론 시간이 남으면 모델링도 해보기로 했지만 생각보다 시간이 빠듯했다.)
메인 주제는 패스트캠퍼스 내부 데이터 피처 4개 집중 분석 & 매출 증가 방향 제시였으며,
각 팀원이 분담하여 Bottom-Up 방식으로 모든 방법론을 시도해 보고,
여러 방면으로 귀결되는 분석들을 종합하는 방식으로 진행했다.
Why 피처 4개?
아이데이션 과정에서 많은 인사이트가 나올 것으로 기대되는 피처들을 모은 것으로,
실제로는 이 대표되는 피처와 더불어서 사용한 다른 피처들도 많다.
아래는 우리 팀이 선정한 4개 피처와 간단한 방향 제시이다.
- 거래일자
- 월별 거래량 / 일별 거래량 / 주중, 주말 판매율 조사 / 오전, 오후 판매율 조사
- 특정 기간 및 시기에 판매율이 높을 것이므로 집중 마케팅 시간 추출
- 카테고리
- 가장 환불이 많은 카테고리 및 패키지 조사 / 카테고리별 판매량 조사
- 카테고리 별 강의 판매량에 따른 강의 관리 개선
- 환불금액
- 가격대별 환불 비율 / 환불 최소화 / 실거래금액과 환불 금액 비율 확인
- 구매가격, 실거래금액과 환불금액 상관관계 분석으로 환불금액 최소화 개선
- 쿠폰이름 & 쿠폰할인액
- 쿠폰 사용량에 따른 판매&매출 조사 / 쿠폰 미적용자 많은 강의 조사 / 쿠폰 이름 분류
- 쿠폰 사용 여부 및 빈도와 할인 방식(a/b test)에 따른 쿠폰 발행 관리 개선
■ 전처리
- 타입 변경: 거래일자(string to date), 쿠폰할인액(string to int64),
- 결측치 및 이상치 (데이터가 충분히 크므로 대부분 삭제) :
- 쿠폰은 있지만 쿠폰이 적용되지 않은 데이터
- 쿠폰에 '검수', '참고', '인플루언서', 'test', 'CS팀', 등등 B2C 분석 양상을 해치는 데이터
- NaN이 아닌 형태의 결측치 in 판매가격 (같은 코스임에도 판매 원가 달라지기에 평균으로 대체)
- 판매가격 > (실거래금액+쿠폰할인액) 맞지 않는 데이터
- (실거래금액 > 판매가격) == B2B 데이터 분리
- 신규 생성 변수:
- 초기 생성: 월, 일, 강의가격대(범주형 정의), 환불금액범주(범주형 정의)
- EDA 진행 중 생성: 환불 여부, 환불 비율, 수강일수, 수강일수 범주, 환불 정책, 환불 가능 금액, 환불 횟수, 환불 횟수 범주 (수강일수는 다소 오류가 있었다)
■ 주요 분석 결과
- 인기 상품(TOP 10)의 판매가격에 따른 매출 증감
- 1) 인기상품의 월별 판매가격 변화 (시간이 지남에 따라 판매가격이 늘어남을 알 수 있음)
- 2) 인기상품의 월별 판매량 변화 (개설 이후 시간이 지남에 따라 판매 수량이 줄어드는 것 확인
- 3) 인기상품의 월별 매출 추이(8월 판매 시작한 네오아카데미 외 강의들의 매출이 시간이 지남에 따라 감소)
분석 결과 : 인기 상품들의 판매 가격이 오름에 따라 판매량이 줄어들고 총매출이 감소하는 경향을 보임
매출 증대 방안 : 다른 년도의 판매 데이터를 추가하여 가장 높은 실거래금액을 기록하는 판매금액을 찾아 인기 상품들의 가격을 재조정하여 총매출을 증가
- 거래일자 데이터로 마케팅 시기 조정
- 1) 월별매출 (1월, 7월, 12월에 판매량이 높아지는 경향이 있음)
- 2) 일별매출 (매 월말에 매출이 증가함을 알 수 있음)
분석 결과 : 1, 7, 12월 / 매달 30 ~ 31 일 사이에 매출량이 높은 규칙성을 보임
매출 증대 방안 : 거래일자 데이터를 분석하여 특정 시기에 마케팅을 집중해 매출을 증가시킬 수 있는 방안 추가
- 카테고리별 포맷 유형에 따른 환불 비율
- 1) 전체 매출에서 카테고리가 차지하는 비율
- 2) 카테고리 별 환불 비율
분석 결과 : 전체 매출의 50%를 차지하는 데이터 사이언스, 프로그래밍 카테고리가 환불 비율은 각각 3, 4위를 차지
- 3) 환불한 프로그래밍과 데이터 사이언스 강의의 포맷 유형별 개수
- 4) 환불한 프로그래밍과 데이터 사이언스 강의의 포맷 비율
- 5) 프로그래밍과 데이터 사이언스 강의의 포맷 별 환불 비율
분석 결과 : 프로그래밍과 데이터 사이언스의 환불 비율이 전반적으로 올인원 강의에서 높게 나왔지만 데이터 사이언스 강의에서는 RED 강의의 환불 비율이 더 높았음
- 6) 카테고리 별 포맷 유형에 따른 환불 비율
- 7) 카테고리 별 RED 강의 판매가격 차이
- 8) 판매가격과 환불 비율 사이의 관계
분석 결과 :
- 프로그래밍, 마케팅, 부동산/금융 강의 외 모든 카테고리는 RED 강의가 올인원 강의보다 환불 비율 더 높음
- 데이터 사이언스 RED 강의는 프로그래밍 RED 강의에 비해 편차가 큼.
왼쪽의 환불 비율 그래프와 비교해 볼 때, 가격 편차가 큰 강의들이 환불 비율도 높게 나타남.
- 판매가격이 높아질수록 환불 비율도 증가하는 경향이 있음
매출 증대 방안 :
환불 비율이 높은 카테고리의 후기를 분석하여 단점 파악, 환불 비율이 가장 낮은 부동산/금융 강의의 장점을 다른 카테고리에 적용한다. 카테고리 별 가격의 편차가 크지 않도록 판매 가격을 조정
- 강의 가격대가 환불 비율에 미치는 영향
- 1) 강의 가격대 별 환불 비율
- 2) 강의 가격대 별 환불 횟수
- 3) 환불 횟수 별 고객 수
분석 결과 :
- 강의 가격대가 높아질수록 환불 비율도 증가
- 대부분의 환불 횟수가 10~30 만원 대에 집중
매출 증대 방안 :
- 강의를 일정 기간 내에 100% 수강 완료하면, [완강 쿠폰] 상시 지급하여 또 다른 강의 수강에 대해 동기부여
- 출시한 지 오래된 강의 중에 환불률이 높은 강의를 찾아 리뉴얼함으로써, 강의 퀄리티 상승
- 환불 n번 이상 구매자에게 어떤 이유로 환불했는지 설문, 응하는 사람에 한해 [재도전 쿠폰] 발급하여 재구매 유도
- 기타 분석
- 월별 강의 판매량 및 쿠폰사용 결재 비율
- WELCOME 쿠폰 사용자를 신규 유입으로 가정한 구매 평균 단가
- 일러스트 카테고리 내 네오아카데미와 일반 강의 사이의 차이
- 강의 가격대 별 쿠폰 사용자와 미사용자 비율(올인원, RED)
- 데이터 사이언스 카테고리중 RED 강의 이상치 값 제거
- 쿠폰명으로 B2G 거래내용 추출
분석 결과 : 매출 증가와 크게 연관시킬 부분을 찾지 못함
■ 문제점 및 해결 방법
- 슬랙으로 팀원들을 소집하여 문제를 공유하고 실시간으로 다양한 해결 방법{zoom, 구글 미팅, Kaggle 참고(주로 시각화 방법), Chat-GPT 등}을 이용하여 해결
- 감기로 인한 크고 작은 결원이 발생할 때, 팀원들끼리 태스크를 세분화하여 분배 및 처리하여 공백 없이 프로젝트 진행
- 최초 결측치 확인 시 이상이 없었지만, 전처리 과정을 통해 Unique값을 확인하며 다른 형태의 결측치 확인하고 처리함
- 팀 내부에서 올바른 결정인지 판단하기 힘든 경우 강사님 피드백 요청하여 해결
■ 프로젝트의 한계점
- 주어진 데이터에서만 EDA를 한 것
좀 더 추가했으면 좋았을 데이터들이 있는데 활용하지 못한 게 아쉽다. (리뷰 건수, 수강일수, 타 사이트 등등...)
- B2B, B2G 데이터 분석을 못해본 것
B2B, B2G가 매출의 상당한 영향을 끼치는 것을 알고 있으나 단순 데이터셋에서 이를 분석하기엔 한계가 명확했다.
관련한 사이트가 주어지긴 했지만 어떤 것을 중점적으로 봐야 할지 몰랐던 게 아쉽다.
- 구현의 미숙으로 다양한 시각화를 해보지 못한 것
- 초기에 말한 모델링을 구현해보지 못한 것
■ 결론 및 향후 계획
프로젝트 기간 내내 독감에 준하는 감기에 걸려서 며칠 내내 37.5℃를 오르락내리락하며 내 정신도 왔다 갔다 했다.
그래서 맡은 바를 하지 못하고 나중에 팀원들의 코드를 피드백하는 형식으로 진행했는데 크고작은 이상한 점과 오류가 있는 부분을 발견하게 되어 전처리를 더욱더 꼼꼼하게 할 수 있는 계기가 되었다.
덕분에 전처리를 EDA와 동시에 하는 기이한 현상이 나타나긴 했지만 오류를 잡을 수 있어서 다행이었다.
게다가 팀 중에서 코딩이나 ML 경험이 가장 많은 이유로 팀장이 되어 프로젝트를 이끌었는데, 하필 감기에 걸려 팀장으로의 역할을 잘 수행하지 못했었다. 목소리도 안 나오고 약 먹고 쉬기만 하여 진행에 차질이 생길까 했는데 열정적인 팀원들 덕분에 피드백하는 것만 해도 충분한 분량의 역할분담이 된 것 같다.
한편으로는 다른 주제의 데이터셋처럼 다양한 시각화를 못해본 게 아쉽다.
(어떤 팀은 한반도나 축구장에 plot을 그리기도 했다. 짱신기)
같은 주제의 다른 팀은 인프런 데이터를 크롤링하여 다양하게 사용하기도 하던데 비록 거래내역 데이터는 아닐지라도 그렇게 하여 외부 데이터를 이용해 다양한 방면으로 인사이트를 얻은 게 신기했다.
위와 같이 주어진 데이터뿐만이 아니라 외부 데이터를 활용하는 방면이 마침 하나 더 있었다. 캐글에서 PS3E24를 참여하면서 외부 데이터(원본 데이터)로 해당 대회에는 없던 성별 피처를 유추하여 생성하는 것이 그 예였다.
그것만으로도 신기했는데 다시금 내부의 한계를 뛰어넘는 방안을 환기하게 되었기에 다음엔 내부적으로 아쉬울 때 적극적으로 적용시켜 봐야겠다.
'프로젝트 > 부트캠프 프로젝트' 카테고리의 다른 글
Upstage AI Lab 대회 회고: [IR] Scientific Knowledge Question Answering (0) | 2024.05.19 |
---|---|
Upstage AI Lab 대회 회고: [NLP] Dialogue Summarization (0) | 2024.05.12 |
Upstage AI Lab 대회 회고: [CV] Document Type Classification (1) | 2024.03.23 |
Upstage AI LAB 대회 회고 : [ML] House Price Prediction (1) | 2024.03.17 |
SlackBot Pipeline: Python 개발 개인 프로젝트 회고 (2) | 2023.11.20 |