Ecommerce_Project

View on GitHub

電商客戶行為分析與折扣優化(Python)

Colab Notebook 完整文字內容及程式碼在這裡

0.目錄

  1. 專案概述
  2. 資料來源
  3. 工具使用
  4. 套件載入
  5. 資料了解及清洗
  6. 資料分析
    6-1 單變量分析
    6-2 多變量分析
    • 6-2-1 初步探索
      • 6-2-1-1 目前有多少用戶?其中有多少人至少購買過一次?每位顧客的平均購買次數?
      • 6-2-1-2 用戶購買產品的平均時間?
      • 6-2-1-3 此次購買與上次購買的平均間隔時間?
      • 6-2-1-4 用戶是否在購買前會將產品加入購物車 or 直接購買?
    • 6-2-2 用戶行為分析
      • 6-2-2-1 用戶活躍度
      • 6-2-2-2 用戶行為路徑
    • 6-2-3 產品表現分析
      • 6-2-3-1 價格與購買數量
      • 6-2-3-2 辨識熱門商品
    • 6-2-4 客戶分群分析
      • 6-2-4-1 RFM 分析模型
  7. 特徵工程
    7-1 建立特徵(基於用戶)
    7-2 建立特徵(基於產品 類別/子類別)
    7-3 準備資料供預測模型使用
    • 7-3-1 資料選擇及整併
    • 7-3-2 缺失值插補
    • 7-3-3 類別轉數值
    • 7-3-4 特徵縮放
  8. 模型建立
  9. 結論與建議
  10. 參考資料

1.專案概述

背景源於一家販售各種產品(如家電,3C,食物和飲料,門鎖,嬰兒用品等)的早期電商公司,希望提升其產品銷售轉化率。為了增加客戶購買意願,該公司打算提供折價券以刺激消費,但由於折扣活動的預算有限,因此希望透過分析用戶行為,以決定提供折價券的有利時機,從而優化業務流程。為此,我們分別從用戶角度產品角度進行分析,並使用實務上常見的顧客價值分析方法 - RFM 模型,用於客戶分群,以了解不同客戶群體的消費行為,進而提供針對性的營銷策略。此外,我們從用戶消費流程中找出了適合提供折價券的情境,並建立預測模型,該模型用以預測符合上述情境的使用者購買產品的機率,透過該模型,我們能找出潛在放棄消費的用戶,並提供折價券以鼓勵購買,而不是將折價券提供給非常有可能會購買的用戶。最終,我們在不同層面提供了相應的決策建議,並期望透過預測模型提升產品銷售轉化率,以有效利用折扣預算。

2.資料來源

欄位名稱 描述
User_id 用戶的 ID
Session_id 每個 Session 的 ID
DateTime 動作發生的時間戳,格式為 YYYY-MM-DD HH:MM:SS
Category 商品的主類別
SubCategory 商品的子類別
Action 用戶執行的動作
Quantity 購買的商品數量
Rate 單個商品的價格
Total Price 總價(Quantity 乘以 Rate)

3.工具使用

4.套件載入

# 常用套件
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style='whitegrid')
pd.set_option('display.max_rows',400)
pd.set_option('display.max_columns',200)
pd.set_option('display.max_colwidth',None)

from datetime import timedelta
import gc

# spaCy 的英文模型
import spacy
nlp = spacy.load('en_core_web_sm')

# Feature Encoding
from sklearn.preprocessing import OneHotEncoder

# Feature Scaling
from sklearn.preprocessing import MinMaxScaler

# ML Model
from sklearn.model_selection import train_test_split, cross_val_predict
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, precision_score, recall_score, f1_score, roc_auc_score
import warnings
warnings.filterwarnings('ignore')

5.資料了解及清洗

清洗後資料
Cleaned Data

筆數及型態
Cleaned Data Info

完整文字內容及程式碼在這裡

6.資料分析

此章節將透過單變量分析來掌握特徵的資料分布,並透過多變量分析了解特徵間的關係,以便後續能在特徵工程模型建立的章節中有所幫助。

6-1 單變量分析

Category 資料分布

Img1


SubCategory 資料分布

Img2


Action 資料分布

Img3


以下的 Quantity, Rate, Total Price 皆為數值型特徵,我們除了掌握特徵的資料分布外,也將採用非參數方法,使用分位數進行離群值檢測,透過將數據點進行大小順序,比較每個數據點與其他數據點的差距來辨識離群值,從中若有發現與其他數據點顯著不同的點將被視為離群值。

Quantity 資料分布

Img4


Rate 資料分布

Img5


Total Price 資料分布

Img6

完整文字內容及程式碼在這裡

6-2 多變量分析

多變量分析有助於我們了解兩個或多個特徵的關係以及其與潛在目標變數的關係。

6-2-1 初步探索

我們首先想了解一些直覺上會想到的問題:

6-2-1-1 目前有多少用戶?其中有多少人至少購買過一次?每位顧客的平均購買次數?

Img7

6-2-1-2 用戶購買產品的平均時間?

Img8

6-2-1-3 此次購買與上次購買的平均間隔時間?

Img9

6-2-1-4 用戶是否在購買前會將產品加入購物車 or 直接購買?

Img10


段落總結與建議

完整文字內容及程式碼在這裡


有了上述問題的初步了解後,從下個小節開始會針對特定面向進行分析

6-2-2 用戶行為分析

6-2-2-1 用戶活躍度

Img11

觀察

下圖查看用戶活躍情形與產品平均價格的變化趨勢,以驗證上述高峰期的猜測是否合理。

Img12

觀察

下面我們也從不同時間維度,包含月(Month),星期(Day of Week)及小時(Hour),查看用戶活躍情形。

Img13

觀察

補充 - 行銷活動的前期預熱


Img14

觀察


Img15

觀察


段落總結與建議

以上發現可以幫助公司制定更有效的營銷策略,並在適當的時間點進行推廣活動和促銷活動,以最大化用戶參與度及轉化率。例如,在週一或下午和晚間進行推廣活動可能會獲得更好的效果。

完整文字內容及程式碼在這裡

6-2-2-2 用戶行為路徑

這裡我們想了解導致 購買/沒購買 的常見使用者行為路徑,並確定使用者體驗中能進行優化的潛在部分。

Img16

觀察


段落總結與建議

完整文字內容及程式碼在這裡

6-2-3 產品表現分析

6-2-3-1 價格與購買數量

我們首先查看存在購買紀錄的所有產品,其價格與購買數量的相關性。接著透過回歸圖來了解產品價格與購買數量的分布及關係,以了解客戶偏好。由於資料中存在離群值,使得圖形觀察不易,因此回歸圖中我們會予以排除。

Img17

Img18

觀察


段落總結與建議

完整文字內容及程式碼在這裡

6-2-3-2 辨識熱門商品

透過熱點圖呈現熱門產品類別和子類別的購買次數,可用以優化產品供應和營銷策略。

Img19

觀察


段落總結與建議

完整文字內容及程式碼在這裡

6-2-4 客戶分群分析

根據客戶的瀏覽、搜尋、產品檢視、評論和購買等行為,可將客戶劃分為不同的群體,並分析每個群體的特徵,如年齡、性別和地理位置等,以了解不同客戶群的偏好。
考量資料集現有的欄位,我們採用常見的顧客價值分析方法 - RFM 分析模型,用於評估和細分顧客基於下面三個關鍵維度的行為數據,這些維度可以幫助企業識別出高價值客戶,並制定針對性的營銷策略:

6-2-4-1 RFM 分析模型

Img20

Img21

Img22

Img23

Img24

觀察

  1. 高價值顧客
    • PlatinumGold 群體的 RFM 得分最高,表現出高價值顧客的特徵:
      • Platinum 群體最近一次購買距今較短(60天),購買頻率最高(1.87次),且購買金額較高(17,957.89元),顯示出這些顧客具有較高的忠誠度和價值
      • Gold 群體購買金額最高(24,183.87元),顯示出這些顧客在單次購買時消費較高
  2. 潛在增值顧客
    • Silver 群體的 RFM 得分中等(6.00),這些顧客最近一次購買距今中等(103天),購買頻率最低(1次),購買金額中等(7,777.44元),說明這些顧客具有增值潛力,可以通過針對性營銷策略提升他們的購買頻率
  3. 可能流失的顧客
    • Bronze 群體的 RFM 得分最低(4.29),這些顧客最近一次購買距今較長(189天),購買頻率最低(1次),購買金額也較低(2,436.36元),說明這些顧客可能處於流失邊緣,需要特別關注


段落總結與建議

  1. 針對高價值顧客(Platinum 和 Gold)
    • 提供專屬優惠、VIP活動、提前試用新產品等增值服務,保持他們的高參與度和忠誠度
    • 個性化推薦高價值產品,提升客單價
  2. 提升潛在增值顧客(Silver)
    • 通過積分獎勵計劃、推薦有獎等方式鼓勵他們增加購買頻率
    • 發送個性化促銷郵件或推播通知,介紹他們可能感興趣的新產品和優惠
  3. 挽回低價值顧客(Bronze)
    • 寄送特別優惠券或限時折扣,重新激活這些顧客的購買行為
    • 發送回訪問卷,了解他們不活躍的原因,並根據反饋進行改進

完整文字內容及程式碼在這裡

7.特徵工程

在上面用戶行為路徑章節,我們發現無論用戶最終是否購買產品,有多種路徑涉及使用者將產品加入購物車「add_to_cart」,說明該動作是消費前很常見的用戶行為,因此我們決定為潛在加入購物車但沒完成購買的用戶提供限時折扣,進行有針對性的促銷,提升購買誘因,以降低上述提到缺乏立即購買的緊迫性或是其他原因而未購買的情形。
我們將根據上述情境建立預測模型。假如偵測到顧客已經走到「add_to_cart」,則預測客戶會完成購買的機率,當機率值小於我們設定的閾值,則會提供該用戶限時折扣,提升他完成購買的可能性。範例如下圖:

Img25
Image designed using draw.io


因此,為提升模型預測能力,我們將基於用戶層面及產品層面,利用現有欄位創建更多特徵,後續一併用於模型訓練。

7-1 建立特徵(基於用戶)

7-2 建立特徵(基於產品 類別/子類別)

7-3 準備資料供預測模型使用

以下我們將整併上述資料,並選取將用於預測模型的特徵,接著依序進行:缺失值插補類別型資料轉換為數值型資料特徵縮放

7-3-1 資料選擇及整併

7-3-2 缺失值插補

7-3-3 類別轉數值

7-3-4 特徵縮放

完整文字內容及程式碼在這裡

8.模型建立

這裡我們的訓練資料採用:用戶最近一次加入購物車購買與否。
以下會先將數據拆分為訓練數據(train)及驗證數據(valid)。我們用訓練數據做訓練,再去預測驗證數據,並觀察模型表現(Accuracy, Recall, Precision, F1, ROC-AUC Score)。


查看預測標籤(Target)的類別數量

Img26

上述標籤類別數量所代表的涵義如下:


將數據拆分為訓練數據及驗證數據,查看拆分情形

Img27


查看訓練集的標籤(Target)是否平衡

Img28


進行模型訓練,預測驗證數據,並觀察模型表現

Img29


查看 ROC-AUC Score & 預測標籤(Target) 是 1(buy) 的機率

Img25

說明

當偵測到顧客已經走到「add_to_cart」,則預測客戶會完成購買的機率,當機率值小於我們設定的閾值,則會提供該用戶限時折扣,提升他完成購買的可能性。
決策閾值是模型將預測機率轉換為最終分類結果的門檻。例如,當預測機率大於某個閾值時,將樣本分類為正類別;否則分類為負類別。

以上面的五筆資料為例:

觀察


段落總結與建議

完整文字內容及程式碼在這裡

9.結論與建議

背景源於一家販售各種產品的早期電商公司,為提升產品銷售轉化率,計畫提供折價券以刺激消費。由於折扣活動預算有限,公司希望透過用戶行為分析,決定最佳提供折價券的時機。我們從用戶和產品兩個角度進行分析,並使用經典的RFM模型進行客戶分群,了解不同客戶群體的消費行為,並制定針對性的營銷策略。此外,我們從用戶消費流程中找出適合提供折價券的情境,並建立預測模型,用以預測客戶購買產品的機率。通過這個模型,公司可以識別出潛在放棄消費的用戶,並提供折價券以鼓勵購買,而非將折價券提供給很可能會購買的用戶。最終,我們在不同層面提出決策建議,期望透過預測模型提升銷售轉化率,從而有效利用折扣預算。

各章節之結論與建議如下:

10.參考資料