You are on page 1of 41

Dự đoán doanh số bán hàng của

siêu thị mùa lễ hội


GVHD: PSG.TS Nguyễn Bình Minh
Sinh viên: Đào Minh Tuấn – 20173437
Đào Minh Đức – 20173029
Đinh Trọng Đạt – 20173010
Nguyễn Quý Phúc – 20173302
Nguyễn Đăng Khoa – 20173200
Nguyễn Thiều Quang – 20173331
Outline
1. Giới thiệu chung về đề tài

2. Các công cụ, mô hình được sử dụng trong đề tài

3. Thực hiện đề tài

4. Đánh giá kết quả

5. Thực hiện dự đoán với dữ liệu test

3
1. Giới thiệu chung về đề tài
• Một siêu thị sẽ có các bộ phận khác nhau và cần phải dự
trữ các mặt hang tương ứng trong nhà kho, tuy nhiên nếu
dự trữ quá nhiều dẫn đến tình trạng tồn đọng hang
 Cần phải dự đoán tác động của mùa lễ hội ảnh hưởng ra
sao tới doanh số bán hàng của các bộ phận trong siêu thị
• Dữ liệu gồm có lịch sử bán hang cho 45 cửa hàng ở các
khu vực khác nhau, gồm có các file: store, train, test,
features, các ngày nghỉ lễ liên quan đến những ngày: Super
Bowl, Labol Day, Thanksgiving, Christmas.

4
2. Các công cụ, mô hình sử dụng trong đề tài
• Ngôn ngữ: Python
• Thư viện: Pandas, Matplotlib, Seaborn, Sklearn, …
• Các mô hình, thuật toán sử dụng: Kmean, Linear Regression,
Random Forests, XGBoost
• Giới thiệu tổng quát về từng thuật toán:

1) Linear Regression:
Chúng ta cần tìm ra bộ tham số w0, w1,… để dự đoán y
Đây là loss function để đánh giá thuật toán:

5
2. Các công cụ, mô hình sử dụng trong đề tài
2) Thuật toán Kmean
• Được sử dụng để phân cụm
• Số cụm là 1 hyper parameter nên sẽ
xác định bằng thuật toán elbow, thuật toán
này sẽ chọn k sao cho khi thêm vào 1 cụm
khác thì tổng biến thiên bình phương khoảng
cách trong cụm không thay đổi nhiều.

6
2. Các công cụ, mô hình sử dụng trong đề tài
3) Thuật toán Random Forest
Giả sử có n dữ liệu và d thuộc tính
• Lấy ngẫu nhiên n dữ liệu với kĩ thuật Bootstrapping
từ bộ dữ liệu, sau đó chọn k thuộc tính (k < n).
• Dùng thuật toán Decision Tree để xây dựng cây
quyết định từ bộ dữ liệu ở bước trên.
• Thuật toán Random Forest sẽ bao gồm nhiều cây
quyết định, mỗi cây được xây dựng dùng thuật toán
Decision Tree trên tập dữ liệu khác nhau và dùng tập
thuộc tính khác nhau. Sau đó kết quả dự đoán của
thuật toán Random Forest sẽ được tổng hợp từ các
cây quyết định.

7
2. Các công cụ, mô hình sử dụng trong đề tài
4) Thuật toán XGBoost
• Là phương pháp tổng hợp các weak learner thành
một strong learner trong đó lần lượt học các weak
learner sao cho weak learner sau cải thiện weak
learner trước.
• Sau mỗi lần học weak learner, các learner sau sẽ
học sai số của các learner trước đó khiến cho loss
function dần dần tiến về 0.
• XGBoost áp dụng cơ chế Regularization nên hạn
chế đáng kể hiện tượng Overfitting.
• XGBoost thực hiện tinh toán song song nên tốc độ
xử lý có thể tăng gấp 10 lần so với GBM.

8
3. Thực hiện đề tài
• 3.1. Tìm hiểu về dữ liệu
- Dưới đây là dữ liệu các file: Có 421570 mẫu trong tập train, 115064 trong tập test, 8.190
mẫu features và 45 shop.

9
3. Thực hiện đề tài
• 3.1. Tìm hiểu về dữ liệu
- Dưới đây là mô tả của file train, features, stores. Không có trường nào bị trống trong dữ
liệu trên

10
3. Thực hiện đề tài
• 3.1. Tìm hiểu về dữ liệu
- Có 4 loại ngày lễ trong năm là Super_Bold, Labor_day, Thanksgiving,
Chrismast, khi kiểm tra trong tập dữ liệu train đạt sự nhất quán khi
Trường Is_holiday = True khi ngày đó nằm trong ngày nghỉ lễ và
ngược lại.
- Tất cả các thông tin về cửa hàng trong file train đều có xuất hiện
trong file stores.

11
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Do IsHoliday có dạng True, False  sử dụng label encoder chuyển về dạng 1,0, đồng
thời convert Date sang thành năm, tháng , ngày, tuần.

- Sau đây là biểu đồ histogram phân bố theo số lượng của từng thuộc tính trong dữ liệu
train

12
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu

13
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu

- Qua biểu đồ trên thấy được ở cột Weeky_Sales, hầu hết các bộ phận có doanh thu
theo tuần < 100000, ở cột IsHoliday, số ngày lễ là khá ít so với ngày thường, số lượng
mẫu về các cửa hàng không chênh lệch quá nhiều.

14
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Đi chi tiết vào doanh số theo tuần (Weekly_Sales)

- Nhận thấy rõ ràng rằng phần lớn doanh số hàng tuần khá thấp, thậm chí có 1 số giá trị
âm do bị lỗ (Có tất cả 1285 bộ phận bị lỗ với tổng số tiền là 88161,56)
15
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Trung bình, trung vị của từng cửa hàng:

- Ta nhận thấy rằng sự khác nhau rõ rệt giữa doanh thu các cửa hàng, ví dụ khi so sánh
cửa hàng 30 và cửa hàng 3, cửa hàng 30 có trung binh doanh thu cao hơn cửa hàng 8
tuy nhiên mức trung vị lại hoàn toàn ngược lại doanh số không ổn định.
16
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Trung bình, trung vị của từng loại bộ phận:

- Có những bộ phận có doanh số bán hàng rất thấp và có doanh số bán hàng cao.
Điều này cho thấy tầm quan trọng của loại bộ phận trong việc bán hàng của cửa
hàng

17
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Có 3 loại cửa hàng là A, B, C, dưới đây là trung bình, trung vị doanh thu từng loại

- Cửa hàng loại A bán nhiều hơn loại B và loại C.

18
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Trung bình và trung vị theo Size của cửa hàng:

- Ta nhận thấy rằng không phải cứ diện tích cửa hàng lớn thì doanh thu cũng lớn
theo, Size là một đặc trưng quan trọng trong việc dự đoán doanh thu các bộ phận.
19
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Biểu đồ doanh thu của từng tuần trong từng năm 2010, 2011, 2012:

20
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Biểu đồ thể hiện trung vị của các Markdowns theo từng thời điểm:

- Nhận thấy rằng Markdowns1 và Markdowns4 diễn ra suốt cả năm và nhiều nhất là
vào tháng 2 hàng năm, Markdowns3 liên quan đến lễ tạ ơn(25/11), Markdowns2 liên
quan đến giáng sinh (Tháng 12 hàng năm)
21
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Biểu đồ thể hiện trung vị, trung bình doanh thu theo ngày:

- Chúng ta thấy được sự khác nhau về doanh thu ở thời điểm cuối năm và đầu năm,
đạt đỉnh vào cuối tháng 11, tháng 12 do có noel, lễ tạ ơn và sụt giảm ngay khi sang
tháng 1 do không có ngày lễ nào.
22
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Đánh dấu những ngày lễ vào biểu đồ trên:

- Nhận thấy rằng ngày nghỉ lễ ảnh hưởng khác nhau đến doanh số bán hàng, những
loại nghỉ lễ khác nhau sẽ ảnh hưởng khác nhau về mức độ, vài tuần trước ngày nghỉ
lễ cũng có doanh số cao hơn thông thường.
23
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Doanh số bán hàng trong ngày lễ và không phải ngày lễ

- Do ảnh hưởng của các ngày nghỉ lễ là khác nhau nên doanh số trung bình, trung vị
không có sự chênh lệch.
24
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Doanh số bán hàng theo tháng và các tuần trong tháng:

25
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Phân cụm các cửa hàng từ 1=>45 theo doanh thu trung bình, trung vị theo tuần.
Trước tiên sử dụng thuật toán Elbow để tìm số cụm sẽ phân

- Từ hình trên ta thấy có thể phân thành 4 cụm


26
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Biểu đồ phân tán các cửa hàng sau khi đã phân cụm

- Các cửa hàng ở cụm 1 có doanh thu cao hơn hẳn phần còn lại

27
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Phân cụm các loại bộ phận theo trung bình, trung vị doanh thu. Thuật toán Elbow ta
thấy được số cụm sẽ phân

- Từ hình trên ta thấy có thể phân thành 3 cụm


28
3. Thực hiện đề tài
• 3.2. Trực quan hóa dữ liệu
- Biểu đồ phân tán các bộ phận sau khi đã phân cụm

29
3. Thực hiện đề tài
• 3.3. Feature Engineering
- Biểu đồ headmap
- Nhận thấy rằng những đặc trưng như
IsHoliday, Unemployment có quan hệ rất
thấp với Week_Sales. Đặc trưng
IsHoliday có mối tương quan lớn với
MarkDown2 và MarkDown3(Đồng biến)
=> các đợt giảm giá diễn ra liên quan
đến các ngày nghỉ lễ theo các mùa,
MarkDown1 và MarkDown4 có sự liên
quan rất lớn với nhau nên ta có thể thấy
rằng chúng diễn ra đồng thời. Fuel_Price
và Timestamp có liên quan lớn với nhau,
nghĩa là giá nhiên liệu(xăng, dầu) có xu
hướng tăng theo thời gian.

30
3. Thực hiện đề tài
• 3.3. Feature Engineering
- MarkDown1-5 có quá nhiều giá trị trống và và
không có quan hệ nhiều với Weekly_sales nên
có thể bỏ đi.
- Fuel_Price có quan hệ quá lớn với Year nên ta
sẽ loại bỏ chúng(year không thể loại vì nó phân
biệt theo thời gian.
- CPI, Unemployment, Temperature có quan hệ
rất thấp với biến mục tiêu nên ta sẽ loại bỏ. Mặc
dù IsHoliday cũng thấp nhưng do nó đại diện
cho những kì nghỉ lễ, 1 năm chỉ có 4 loại ngày
lễ nên ta sẽ không loại bỏ chúng.

31
3. Thực hiện đề tài
• 3.3. Feature Engineering
- Ta sẽ chuyển loại cửa hàng (A, B, C) về số, do theo thống kê
cửa hàng loại A bán nhiều hơn B và nhiều hơn C nên gán A =
3, B = 2, C = 1.
- Trường IsHoliday ta chuyển từ True/False thành 1/0 như đã
nói.
- Trường Date ta sẽ tách riêng thành Year và Week ví dụ
31/1/2010 sẽ tách thành Year = 2010 và Week = 5 vì đó là tuần
thứ 5 trong năm.
- Đầu ra của chúng ta là Weekly_Sales.

32
3. Thực hiện đề tài
• 3.3. Feature Engineering
- Ta được dữ liệu sau khi tiền xử lý như sau:

33
3. Thực hiện đề tài
• 3.4. Xây dựng mô hình
- Các biến độc lập gồm có: Stores, Dept, IsHoliday, Year, Week,
Size, Type.
- Biến phụ thuộc chính là Weekly_Sales.
- Ta sẽ chia thành 2 phần là Train và Validate với 75% dữ liệu
dành cho huấn luyện và 25% còn lại dành cho việc kiểm thử.
- Do các tuần bao gồm ngày lễ được đánh trọng số cao hơn 5
lần so với các tuần không nghỉ lễ nên loss function sẽ là:

Với n là số mẫu trong dữ liệu, wi là trọng số và là 5 trong tuần


nghỉ lễ, 1 trong tuần bình thường.
34
3. Thực hiện đề tài
• 3.4. Xây dựng mô hình
- Các mô hình sử dụng trong đề tài gồm có: Random Forest,
XGBoost, Linear Regression.
- Đối với mỗi mô hình, thực hiện lựa chọn các Hyper Parameter
khác nhau để tối ưu mô hình, với mỗi bộ tham số sẽ huấn
luyện mô hình 4 lần rồi tính trung bình sẽ ra WMAE với mô
hình đó.
- Với XGBoost và Random Forest, thực hiện lựa chọn tham số
max_depth = [1,3,5,7] và n_estimators = [30,50,70,80,100]

35
4. Đánh giá kết quả
- Đối với mô hình Random Forest, ta thu
được kết quả như sau:

 Khi trồng 100 cây quyết định và Max_Depth


= None thì WMAE đạt nhỏ nhất là 1573.0050
36
4. Đánh giá kết quả
- Đối với mô hình XGBoost, ta thu được kết quả
như bên đây:

 Khi trồng 120 cây quyết định và Max_Depth = 7


thì WMAE đạt nhỏ nhất là 3249.98

37
4. Đánh giá kết quả
- Đối với Linear Regression ta thu được kết quả:

38
4. Đánh giá kết quả
- Kết quả dự đoán với tập validate:

39
5. Thực hiện dự đoán với dữ liệu test
- Kết quả dự đoán với tập test:

40
Thank you
for your
attention!

You might also like