1. 프로젝트 시작...
팀원들과 프로젝트 주제 설정을 하기로 하여 각각 팀원들의 관심 분야를 알아보게 되었습니다.
그래서 공통적인 관심분야는 이커머스로 확인되어 이커머스 관련 프로젝트를 해보게 되었습니다.
그래서 저희는 캐글에 올라온 Instacart 장바구니 분석 데이터셋을 이용하여 재구매 여부 판단하는 프로젝트를 하기로 주제를 잡았습니다.
그리고 해당 데이터 셋에서는 가격에 대한 데이터가 따로 없어서 고객생애가치 확인 해보려 하였으나 하지 못하였습니다.
하지만, 해당 데이터 셋을 통해 고객 등급을 RFM을 통해 나누는 작업을 해보자는 의견이 나왔었습니다.
머신러닝 모델은 RFM을 통해 고객 등급을 나눌 때 KMeans를 사용하여 등급을 분류하는 것이였고 두 번째로 재구매 예측을 위해 XGBoost나 ClassifierTree 등을 사용해 보기로 하였습니다.
2. 데이터 확인
order_id: 각 주문에 부여된 고유 식별자입니다.
user_id: 주문을 한 고객의 고유 식별자입니다
eval_set: 과거 주문 데이터 또는 모델 학습에 적용되는 세트인지 알려줍니다.
order_number: 해당 고객이 주문한 횟수로, 몇 번째로 주문한 것인지 알 수 있습니다.(주문 번호가 제일 큰 값이 마지막으로 주문한 데이터)
order_dow: 주문한 요일을 나타내며 일요일부터 토요일까지 매핑 되어있습니다(0~6)
order_hour_of_day: 주문한 시간으로 0 시에서 24 시간 정수로 표현되어 있습니다.
days_since_prior_order: 이전 주문 이후 몇일이 지났는지 나타내며, 주문 주기와 재구매 간격 분석할 수 있습니다
product_id: 상품의 고유 식별자입니다.
add_to_cart_order: 몇 번째로 장바구니에 담았는지 알 수 있습니다.
reordered: 재구매된 상품인지를 나타냅니다
이렇게 데이터 컬럼들이 구성되어있습니다. 여기서 days_since_prior_order에서 Nan값이 존재하는 것을 확인 하였습니다. 해당 Nan값들은 고객들의 첫 주문으로 확인 되었습니다. 그래서 Nan값 제거를 위해 -1로 대체하여 넣어 주었습니다.
3. 데이터 탐색
1. 구매 관련 데이터셋 확인
1.
우선 가장 많이 주문된 데이터가 무엇인지 확인하기 위해 대분류 상품을 확인 해본 결과 Produce(식료품)이 제일 많이 팔린 것으로 확인 되었습니다.
2.
중분류 (aisle) 를 통해 확인해본 결과 Fruits & vegetables의 주문 수가 매우 많은 것으로 확인 되었습니다.
3.
Produce에서 가장 많이 팔린 상품이 무엇인지 확인 해본 결과 Banana 상품이 1등으로 제일 많이 팔린 것으로 확인 할 수 있었습니다.
4.
가장 많이 주문하는 요일과 시간대를 확인 해본 결과 주로 0과 1이 많은 것으로 보아 일요일과 월요일에 주문이 매우 많이 이루어지는 것으로 확인 되었습니다. 그리고 보통 9~17시 사이 시간대에 활발한 주문 수를 보여주었습니다.
5.
주기별 구매 인기 상품을 7일 주기와 30일 이상 주기로 확인 해본 결과 7일 주기는 당연하게도 produce 상품의 구매 빈도 높은 것으로 확인 되었습니다.
그리고 30일 이상 주기의 구매 빈도가 높은 물품을 확인 하기 위해 7일 주기와 30일 주기 물품 중 7일 주기 구매 물품 중 top10의 물품을 제거하고 확인 해 본 결과 Personal care 제품이 제일 구매 빈도가 높은 것으로 확인 되었습니다.
즉, 유통기한이 짧은 물품은 구매 빈도가 높으며 유통기한이 매우 긴 물품은 구매 빈도가 당연하게도 적은 것으로 확인 되었습니다.
2. 재구매 관련 데이터 확인
1.
모든 고객들의 구매한 상품 재구매 비율 확인 결과 59%로 확인 되었습니다. 그러면 재구매를 안한 고객들도 있을 것 같아 확인 해본 결과 약 6%로 확인되었습니다.
즉, 대부분의 고객들은 한 번 정도는 재구매를 해본 경험이 있는 것으로 확인 되었습니다.
2.
그리고 재구매 주기를 확인 해본 결과 전체 고객들을 대상으로 확인 해본 결과 7일 주기로 days_since_prior_order 값이 올라 가는 것을 확인하였습니다.
추측이지만, 고객들 대부분이 7일 주기마다 구매하는 것으로 예상됩니다.
3.
가장 많이 재주문된 상품을 확인 해보기 전에 Produce가 제일 높을 것이라 생각했지만, dairy eggs(유제품)의 수치가 가장 높은 것이 확인 되었습니다.
즉, 구매가 많다 하여 재구매율 또한 높지 않은 것으로 확인 되었습니다.
4.
한 번 주문 할 때 마다 고객들이 장바구니에 평균적으로 몇 개의 물품을 담는지 확인 해본 결과 평균 8개의 물품을 주문하는 것으로 확인 하였습니다.
그리고 장바구니 순서에 따른 재구매율을 확인 해본 결과 특이하게도 장바구니에 물품을 빨리 넣는 물품일 수록 재구매율이 높아지는 것을 확인 하였습니다.
즉, 장바구니에 넣는 순서에서도 재구매와 상관성이 있는 것을 알 수 있었습니다.
RFM을 따로 계산하여 고객들을 분류하여 데이터를 확인 해보는 작업은 다음 블로그에서 소개하도록 하겠습니다.
이상으로 전체적으로 프로젝트를 어떻게 구성했는지에 대한 내용을 마치겠습니다.
데이터 출처 : https://www.kaggle.com/datasets/psparks/instacart-market-basket-analysis
'Project > Machine Learning' 카테고리의 다른 글
Project - Instacart 데이터 물품 재구매 예측하기(ML) (0) | 2024.11.20 |
---|---|
Project - Instacart 데이터 물품 재구매 예측하기(RFM) (0) | 2024.11.19 |
[Zero-base] 최동원 선수 연봉 예측하기 - 보충 (1) | 2024.10.29 |
[Zero-base] 최동원 선수 연봉 예측하기 - 3 (1) | 2024.10.21 |
[Zero-base] 최동원 선수 연봉 예측하기 - 2 (0) | 2024.10.21 |