Áp dụng model Machine learning vào bài toán phân khúc khách hàng

Tram Ho

Hello mọi người đến hẹn lại lên =))). Ở bài viết Viblo lần này mình sẽ chia sẻ về một bài toán mà hầu hết các trang TMDT đều cần – Phân Khúc Khách Hàng. Tuy nhiên mình sẽ dùng model ML để giải quyết bài toán này.

Phân khúc khách hàng là việc tìm và lựa chọn nhóm khách hàng mà doanh nghiệp, tổ chức có khẳ năng thỏa mãn nhu cầu tốt hơn đối thủ cạnh tranh. mình tham khảo ở đây

Mục đích:

  • Để lựa chọn khách hàng phù hợp và phục vụ một cách tốt nhất
  • Tạo lợi thế cạnh tranh với các đối thủ trên thị trường
  • Thấu hiểu khách hàng và khẳng định thương hiệu
    Cách để phân khúc khách hàng mà các doanh nghiệp hiện nay đang thực hiện:
  • Địa lý
  • Giới tính
  • Độ tuổi
  • Thu nhập.

Phân khúc khách hàng áp dụng ML

Dữ liệu

Ở đây mình có sử dụng dữ liệu dựa trên dữ liệu của 1 trang thương mại điện tử về giao dịch của khách hàng, mọi người có thể down tại đây

Đọc dữ liệu để xem data của chúng ta có những gì nào.

Dữ liệu của chúng ta bao gồm các trường:

  • PRODUCT_CATE: Loại sản phẩm giao dịch
  • PROVINCE: tỉnh thành giao dịch
  • ORDER_COST: Giá sản phẩm
  • ORDER_DATE: Thời gian order
  • ORDER_ID: mã order
  • CUST_ID: ID của khách hàng
    Định dạng dữ liệu của các trường:


Ở đây trường ORDER_ID là quan trọng nhất nhé mn.

Preprocessing Data

Xử lý và convert lại data

Đầu tiên chúng ta sẽ convert datetime từ Object về định dạng Datetime64.

Tiếp theo chúng ta cũng thử vẽ ra biểu đồ phân phối các biến nhé (bins =10)

Xác định các điểm outlier của biến giá trị đơn hàng “ORDER_COST” dựa trên nguyên lý 3 sigma. Theo nguyên lý 3 sigma thì 99.75% giá trị đơn hàng sẽ nằm trong khoảng từ:

[μ3σ,μ+3σ][mu – 3sigma, mu + 3sigma]

outliers là những điểm được xác định nằm ngoài khoảng giá trị trên.

Thống kê tổng giá trị theo “PRODUCT_CATE” ứng với “CUST_ID”.

Sau khi thống kê xong chúng ta sẽ fill các giá trị na nhé, ở đây mình fillna bằng 0 nha.

Training Model

Chia tập train và tập test nha mn mình chia 80/20:

Xây dựng model Kmeans mọi người có thể tham khảo KMean ở đây nhé

wcss: đo lường sự sai lệch đến điểm centerpoints. Khi làm số lượng clusster làm cho chỉ số wcss giảm không đáng kể thì ta có thể lựa chọn

Visualize các nhóm clusters:
Đầu tiên mình sẽ sử dụng tnse để giảm chiều dữ liệu từ 9 xuống 2:

Tiếp theo là Visualize:

cùng xem xem kết quả như thế nào nha mọi người:

Ở trên mình sử dụng Kmeans để phân khúc khách hàng hoặc mọi người có thể tham khảo bài của Anh Khánh về RFM ở đây sử dụng mô hình RFM (Recency – Frequency – Monetary model) để phân khúc khách hàng bằng rank.

  • Khách hàng VIP: rank từ 8-10.
  • Khách hàng đại chúng: rank từ 5-7.
  • Khách hàng thứ cấp: rank < 5.

Mọi người tham khảo code RFM tại đây nhé

Kết Luận

Bài toán customer segmentation khá phổ biến đối với TMDT để góp phần đánh đúng vào nhu cầu khách hàng hơn. Tuy nhiên bài toán của mình khá là đơn giản hi vọng mọi người có thể góp ý để những bài viết của mình tốt hơn.

Reference

https://machinelearningcoban.com/2017/01/01/kmeans/
https://phamdinhkhanh.github.io/2019/11/08/RFMModel.html

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo