Giới thiệu đề tài: - Nghiên cứu này nhằm phân tích dữ liệu doanh thu bán hàng tại siêu thị bằngphương pháp phân cụm K-Means, với mục tiêu chính là xác định các nhómkhách hàng và sản phẩm
TỔNG QUÁT
Giới thiệu đề tài
Nghiên cứu này ứng dụng phương pháp phân cụm K-Means để phân tích dữ liệu doanh thu siêu thị, nhằm xác định nhóm khách hàng và sản phẩm có hành vi mua sắm tương đồng, hỗ trợ tối ưu hóa chiến lược marketing, quản lý kho và khuyến mãi, nâng cao trải nghiệm khách hàng bằng cá nhân hóa dịch vụ.
Nghiên cứu doanh thu bán hàng giúp siêu thị hiểu rõ xu hướng mua sắm, nhu cầu thị trường, tối ưu nguồn lực và tập trung vào nhóm khách hàng/sản phẩm lợi nhuận cao, tăng hiệu quả kinh doanh Dữ liệu thực tế hỗ trợ ra quyết định chính xác, giảm rủi ro, đảm bảo tăng trưởng bền vững.
Phân tích dữ liệu giúp siêu thị tối ưu hóa chiến lược kinh doanh, nâng cao năng lực cạnh tranh và hiệu quả quản lý hàng tồn kho Nghiên cứu này hỗ trợ ra quyết định kinh doanh thông minh, cải thiện hiệu quả marketing và cân đối cung cầu, từ đó đáp ứng tốt hơn nhu cầu khách hàng.
Cơ sở lý thuyết
CRM là chiến lược và công cụ tối ưu hóa quan hệ khách hàng, nhằm cải thiện trải nghiệm, tăng lòng trung thành, và tối đa hóa doanh thu bằng cá nhân hóa dịch vụ và tương tác lâu dài.
CRM không chỉ giúp thu hút khách hàng mới mà còn tối ưu hóa việc duy trì và phát triển mối quan hệ với khách hàng hiện hữu, thúc đẩy lòng trung thành và tăng doanh thu tái mua.
1.1 Các loại CRM phổ biến:
CRM vận hành tự động hóa quy trình bán hàng, tiếp thị và chăm sóc khách hàng, quản lý thông tin khách hàng hiệu quả và tự động hóa các nhiệm vụ lặp lại như gửi email nhắc nhở hay theo dõi đơn hàng.
CRM phân tích khai thác dữ liệu khách hàng để nhận diện xu hướng, hành vi và nhu cầu, hỗ trợ doanh nghiệp hiểu rõ đối tượng mục tiêu, dự báo tương lai và đưa ra quyết định chiến lược như tối ưu hóa tiếp thị hay phòng ngừa mất khách hàng.
CRM tương tác hỗ trợ doanh nghiệp tương tác đa kênh (email, mạng xã hội, điện thoại), phối hợp giữa các bộ phận (bán hàng, chăm sóc khách hàng, tiếp thị) để mang lại trải nghiệm khách hàng nhất quán.
CRM là nền tảng chiến lược, hỗ trợ ra quyết định dựa trên dữ liệu khách hàng Phân tích dữ liệu và kiểm định giả thuyết trong CRM giúp hiểu hành vi khách hàng, nâng cao hiệu quả hoạt động và lòng trung thành, tạo lợi thế cạnh tranh trong thị trường đầy thách thức.
Kiểm định giả thuyết là phương pháp thống kê dùng dữ liệu mẫu để suy luận về quần thể, dựa trên hai giả thuyết đối lập: giả thuyết không (H0) và giả thuyết thay thế (H1).
Giả thuyết không (H0) cho rằng không có sự khác biệt đáng kể giữa các biến, trong khi giả thuyết thay thế (H1) khẳng định sự tồn tại của sự khác biệt, tác động hoặc mối quan hệ giữa chúng.
- Quy trình thực hiện kiểm định giả thuyết:
+ Xây dựng các giả thuyết: Nêu giả thuyết không (H0) và giả thuyết thay thế (H1) dựa trên câu hỏi nghiên cứu.
+ Xác định mức ý nghĩa: Xác định mức độ sai số (alpha) có thể chấp nhận được để đưa ra quyết định.
+ Thu thập và phân tích dữ liệu: Thu thập và xử lý dữ liệu mẫu.
+ Tính toán giá trị thống kê: Tính toán giá trị thống kê thích hợp để đánh giá bằng chứng.
Kết quả kiểm định thống kê được so sánh với giá trị tới hạn hoặc p-value để quyết định bác bỏ giả thuyết H0 và chấp nhận giả thuyết H1 hay không.
+ Rút ra kết luận: Giải thích kết quả và truyền đạt kết quả trong bối cảnh câu hỏi nghiên cứu.
- Các loại kiểm định giả thuyết:
+ Kiểm định một mẫu: Được sử dụng để so sánh một mẫu với một giá trị đã biết hoặc một giá trị giả thuyết.
Kiểm định hai mẫu so sánh sự khác biệt đáng kể giữa hai mẫu độc lập về phương tiện hoặc phân phối.
Kiểm định mẫu cặp so sánh hai mẫu liên quan, đánh giá sự thay đổi của cùng một đối tượng qua thời gian hoặc điều kiện khác nhau Dữ liệu trước và sau kiểm tra thường được sử dụng trong phương pháp này.
Kiểm định chi bình phương được dùng để phân tích dữ liệu danh mục và xác định mối liên hệ đáng kể giữa các biến.
Kiểm định Kruskal-Wallis là phép kiểm định phi tham số so sánh sự khác biệt giữa ba nhóm hoặc nhiều nhóm độc lập khi dữ liệu không phân phối chuẩn hoặc phương sai khác nhau giữa các nhóm Đây là mở rộng của kiểm định Mann-Whitney U cho nhiều nhóm và thay thế ANOVA một chiều khi dữ liệu không đáp ứng các giả định của ANOVA.
Phân đoạn khách hàng là chìa khóa thành công cho doanh nghiệp hiện nay, giúp tối ưu hóa tiếp thị và tạo ra sản phẩm/dịch vụ phù hợp Việc này chia khách hàng thành nhóm có đặc điểm chung (Magento, 2014; D Baer & Ph D., 2013; Colica, 2011), dựa trên dữ liệu như doanh thu, độ tuổi, giới tính, v.v Kết hợp nhiều tiêu chí giúp phân khúc rõ ràng hơn, dẫn đến truyền tải thông điệp chính xác, cải thiện chuyển đổi doanh số (R Punhani và cộng sự, 2021).
3.1 Mục tiêu của phân cụm:
- Phân loại dữ liệu: Nhận diện các nhóm dữ liệu có tính chất chung, hỗ trợ trong việc phân tích và hiểu sâu hơn về dữ liệu.
- Tối ưu hóa khai thác dữ liệu: Tìm ra các cấu trúc tiềm ẩn hoặc mô hình có thể hữu ích trong các phân tích dự đoán.
Phân tích cụm khách hàng giúp tối ưu hóa chiến lược marketing bằng cách khám phá hành vi khách hàng, phát hiện mẫu dữ liệu, và xây dựng chiến lược kinh doanh hiệu quả.
3.2 Hai loại phân cụm chính là:
- Phân cụm phân cấp (Hierarchical Clustering):
Mô tả dữ liệu
- Là dữ liệu từ hệ thống bán lẻ, bao gồm các bản ghi chi tiết về giao dịch của khách hàng.
- Dữ liệu gồm 9 cột, bao gồm: Transaction ID, Date, Customer ID, Gender, Age, Product Category, Quantity, Price per Unit, Total Amount
2 Bảng mô tả dữ liệu:
Tên cột Mô tả cột Chi tiết Kiểu dữ liệu
Transaction ID Mã giao dịch Định danh duy nhất cho mỗi giao dịch trong dataset, giúp phân biệt từng giao dịch riêng lẻ
Cột "Ngày giao dịch" ghi nhận ngày, tháng, năm giao dịch, giúp xác định thời điểm giao dịch và phân tích xu hướng theo thời gian.
Mã khách hàng là định danh duy nhất của mỗi khách hàng trong hệ thống, giúp phân biệt khách hàng và hỗ trợ phân tích hành vi mua sắm, ví dụ như tần suất mua hàng.
Gender Giới tính khách hàng
Phân biệt khách hàng là nam hay nữ, hỗ trợ việc phân tích theo giới tính
Age Độ tuổi khách hàng Xác định độ tuổi của khách hàng, hỗ trợ việc phân tích theo độ tuổi
Product Category Danh mục sản phẩm Loại sản phẩm mà khách hàng lựa chọn mua
Quantity Số lượng sản phầm Số lượng sản phẩm mà khách hàng đã mua theo danh mục sản phẩm
Price per Unit Giá mỗi đơn vị Giá của 1 mặt hàng NUM
Total Amount Tổng tiền Tống số tiền mà NUM khách hàng phải trả
3 Tiền xử lý dữ liệu:
- Mục tiêu: Hiểu cấu trúc dữ liệu, xác định loại dữ liệu trong từng cột, và phát hiện các giá trị thiếu hoặc trùng lặp.
This project utilizes pandas for data manipulation, NumPy and SciPy for numerical computation and outlier handling, and Matplotlib for data visualization The necessary libraries are imported as follows: `import pandas as pd`, `import numpy as np`, `from scipy.stats import norm`, `import matplotlib.pyplot as plt`.
+ Sử dụng thư viện pandas để đọc dữ liệu từ file CSV bằng cách sử dụng pd.read_csv()
+ Kết quả: Dữ liệu có 1000 dòng và 13 cột, bao gồm 9 cột như:
This dataset includes transaction details such as Transaction ID, Date, Customer ID, Gender, Age, Product Category, Quantity, Price per Unit, and Total Amount Auxiliary columns—Date, Month, and Year—facilitate customer and revenue analysis.
+ Hiển thị thông tin cơ bản của DataFrame:
● Sử dụng df.dtypes để xem kiểu dữ liệu của từng cột, giúp xác định cần chuyển đổi kiểu dữ liệu nào.
● Sử dụng df.shape để xem kích thước của DataFrame (số dòng và số cột).
● Sử dụng df.columns để liệt kê các tên cột.
● Sử dụng df.head() và df.tail() để hiển thị lần lượt 5 dòng đầu và
5 dòng cuối của dữ liệu.
● Sử dụng df.isnull().sum() để kiểm tra các giá trị thiếu trong từng cột.
● Sử dụng df.duplicated().sum() để kiểm tra số lượng các giá trị trùng lặp.
3.2 Chuyển đổi kiểu dữ liệu để đồng nhất:
3.2.1 Chuyển đổi dữ liệu cho cột “Date”:
- Mục tiêu: Đảm bảo các giá trị trong cột "Date" có định dạng thời gian
(datetime), giúp thuận lợi khi phân tích dữ liệu theo thời gian. df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
Hàm `pd.to_datetime()` chuyển đổi dữ liệu cột 'Date' thành kiểu datetime, với `errors='coerce'` tự động xử lý giá trị không hợp lệ thành NaT Từ cột 'Date', ta trích xuất năm, tháng, ngày vào các cột mới: 'Year', 'Month', 'Day' tương ứng bằng `.dt.year`, `.dt.month`, `.dt.day`.
+ Tạo các cột Year, Month, Day: Từ cột Date, thêm các cột mới Year, Month, và Day để phục vụ phân tích chi tiết hơn. df.dropna(subset=['Date'])
+ Xóa các dòng có giá trị NaT trong cột "Date" để loại bỏ các giá trị không hợp lệ
- Kết quả: Cột Date được chuyển đổi thành kiểu datetime và tạo ra các cột thời gian bổ sung, giúp việc phân tích theo thời gian dễ dàng hơn.
3.2.2 Chuẩn hóa giá trị của cột "Gender":
This Python code standardizes the 'Gender' column in a DataFrame, replacing all values except 'Male' and 'Female' with 'Unknown', ensuring data consistency.
Cột "Giới tính" chỉ chấp nhận hai giá trị hợp lệ: "Nam" và "Nữ" Các giá trị khác sẽ được thay thế bằng "Không xác định".
Chuẩn hóa cột "Gender" bằng cách sử dụng hàm `apply()` với lambda function để giữ lại các giá trị hợp lệ (Male, Female) và thay thế các giá trị khác bằng "Unknown", đảm bảo tính đồng nhất của dữ liệu.
3.2.3 Xử lý giá trị thiếu (NaN) trong các cột số:
Để duy trì kích thước dữ liệu khi phân tích, các giá trị thiếu trong cột "Tổng số tiền" (Total Amount) được thay thế bằng giá trị trung bình của cột này bằng lệnh `df['Total Amount'].fillna(df['Total Amount'].mean(), inplace=True)`.
Missing values in numerical columns ('Age', 'Quantity', 'Price per Unit') were replaced with their respective column means to ensure accurate analysis and modeling This was achieved using Python's pandas library.
3.3 Xử lý ngoại lệ (Outliers):
Dữ liệu ngoại lai (outliers) gây sai lệch phân tích Phát hiện và xử lý chúng rất quan trọng Phương pháp IQR (Interquartile Range) giúp xác định ngưỡng cho dữ liệu ngoại lai.
IQR là khoảng giữa phần tư thứ nhất (Q1) và phần tư thứ ba (Q3) của dữ liệu, đại diện cho sự phân tán dữ liệu và ít bị ảnh hưởng bởi giá trị ngoại lệ hơn phương sai hay độ lệch chuẩn.
Outliers were identified and removed from the 'Total Amount', 'Quantity', and 'Price per Unit' columns using the IQR method.
- Tính các giá trị phần tư thứ nhất, phân vị thứ 25% của cột dữ liệu (Q1) và phần tư thứ ba, phân vị thứ 75% (Q3) cho cột column
- Là giá trị mà 25% dữ liệu nhỏ hơn hoặc bằng giá trị này, và giá trị mà 75% dữ liệu nhỏ hơn hoặc bằng giá trị này.
Khoảng tứ phân vị (IQR) thể hiện phạm vi 50% dữ liệu trung tâm, tính bằng hiệu số giữa Q3 và Q1, giúp xác định độ rộng của phần dữ liệu chính.
- Tính ngưỡng dưới và ngưỡng trên (lower_bound và upper_bound ) được tính dựa trên IQR:
+ Ngưỡng trên: Q3 + 1.5 * IQR lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR
Để lọc dữ liệu trong cột `col` của dataframe `df`, chỉ giữ lại các giá trị nằm trong khoảng [lower_bound, upper_bound], ta sử dụng điều kiện `(df[col] >= lower_bound) & (df[col] = lower_bound) & (df[col]