MỤC LỤC MỤC LỤC HÌNH ẢNH MỤC LỤC BẢNG MỞ ĐẦU ...................................................................................................... 1 CHƯƠNG 1 : GIỚI THIỆU CHUNG....................................................... 2 1.1 Mục tiêu của đề tài................................................................................ 2 1.2 Phạm vi và giới hạn của đề tài ............................................................. 2 1.3 Cấu trúc.................................................................................................. 2 CHƯƠNG 2: TỔNG QUAN VỀ THƯ VIỆN SCIKIT – LEARN.......... 4 2.1 Giới thiệu Scikit-learn .......................................................................... 4 2.2 Cấu trúc và các module chính của Scikit-learn ................................. 5 2.2.1 Cấu trúc của Scikit-learn .................................................................. 5 2.2.2 Tiền xử lý dữ liệu bằng Scikit-Learn................................................ 8 2.3 Thuật toán máy học phổ biến trong Scikit-learn............................. 12 2.3.1 Decision Tree thuật toán phân lớp (classification)......................... 12 2.3.2 K – Means thuật toán phân cụm (clustering) ................................. 13 2.4 Mô hình học máy phổ biến................................................................. 15 2.4.1 Linear Regression ........................................................................... 15 2.4.2 Decision Tree Regressor................................................................. 17 CHƯƠNG 3: PHÂN TÍCH DỮ LIỆU CỦA WALMART.................... 20 3.1 Giới thiệu về Walmart........................................................................ 20 3.1.1 Walmart .......................................................................................... 20 3.1.2 Bộ dữ liệu Walmart ........................................................................ 22 3.2 Data Pre-processing ........................................................................... 23 3.3 Phân tích và khám phá dữ liệu từ tập dữ liệu Walmart ................. 26 3.3.1 Phân tích doanh số bán hàng hàng tuần theo các yếu tố ................ 26 3.3.2 Phân tích doanh số theo các yếu tố thời gian ................................ 31 3.4 Xây dựng mô hình dự đoán doanh thu Walmart ............................ 35 3.4.1 Data Standardization và data splitting............................................ 35 3.4.2 Mô hình dự đoán doanh thu............................................................ 36 CHƯƠNG 4: XÂY ỨNG DỤNG WEB SỬ DỤNG FLASK ................. 43 4.1 Giới thiệu về Flask .............................................................................. 43 4.1.1 Flask................................................................................................ 43 4.1.2 Khởi tạo ứng dụng Flask ................................................................ 44 4.2 Xây dựng ứng dụng web..................................................................... 48 4.2.1. Triển khai mô hình ML lên ứng dụng web.................................... 48 4.3 Thách thức ........................................................................................... 51 4.4 Kết luận................................................................................................ 52 TÀI LIỆU THAM KHẢO........................................................................ 53
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC GIA ĐỊNH KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO
THỰC TẬP TỐT NGHIỆP TÊN ĐỀ TÀI
WALMART REVENUE PREDICTION
Giảng viên hướng dẫn: TRẦN HOÀI THUẬN Sinh viên thực hiện: NGUYỂN HÀ DIỄM MY
MSSV: 2108110357 Lớp: K15HTTT01 Khóa: K15
Thành phố Hồ Chí Minh, tháng 8 năm 2024
Trang 2LỜI CẢM ƠN
Em xin cảm ơn sâu sắc Trường Đại học Gia Định đã tạo điều kiện thuận lợi cho em được thực tập tại trường và các giảng viên trong Khoa Công nghệ Thông tin đã trang bị cho em nền tảng kiến thức vững chắc, tạo điều kiện thuận lợi cho việc thực hiện bài báo cáo thực tập tốt nghiệp
Cảm ơn đến ThS Trần Hoài Thuận, giảng viên hướng dẫn của em đã tận tình chỉ bảo và định hướng cho em trong quá trình nghiên cứu Những góp ý chuyên môn của thầy đã giúp em vượt qua nhiều khó khăn để hoàn thành bài nghiên cứu
Mặc dù đã hoàn thiện hoàn chỉnh bài nhưng không thể tránh khỏi những thiếu sót Em rất mong nhận được những phản hồi để có thể hoàn thiện hơn trong tương lai
Trang 3ĐÁNH GIÁ CỦA ĐƠN VỊ THỰC TẬP 1 Thái độ tác phong trong thời gian thực tập:
2 Kiến thức chuyên môn:
3 Nhận thức thực tế:
4 Đánh giá khác:
5 Đánh giá chung kết quả thực tập:
………, ngày ……… tháng ……… năm …………
TM Đơn vị thực tập
(Ký tên, đóng dấu)
Trang 4ĐÁNH GIÁ CỦA GIẢNG VIÊN HƯỚNG DẪN 1 Thái độ tác phong trong thời gian thực tập:
2 Kiến thức chuyên môn:
3 Nhận thức thực tế:
4 Đánh giá khác:
5 Đánh giá chung kết quả thực tập:
………, ngày ……… tháng ……… năm …………
Giảng viên hướng dẫn
(Ký tên, ghi rõ họ tên)
Trang 5TRƯỜNG ĐẠI HỌC GIA ĐỊNH
KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc
BÁO CÁO THỰC TẬP TỐT NGHIỆP HÀNG TUẦN
Họ và tên SV: Nguyễn Hà Diễm My MSSV: 2108110357 Lớp: K15HTTT01
Giảng viên hướng dẫn: Trần Hoài Thuận
Tên doanh nghiệp (đơn vị) đến thực tập: Đại học Gia Định
Địa chỉ: 371 Đ Nguyễn Kiệm, Phường 3, Gò Vấp, HCM, Việt Nam Điện thoại: 0392601267
Tên cán bộ phụ trách thực tập tại doanh nghiệp: Trần Hoài Thuận
Thời gian thực tập Từ: 20/05/2024 Đến: 28/07/2024
Stt Tuần thứ Nội dung CV thực tập trong tuần
Nhận xét của CB hướng dẫn tại DN
(Ký tên và ghi rõ họ tên)
Nhận xét của giảng viên hướng dẫn
(Ký tên và ghi rõ họ tên) 1
Tuần 1 (Từ ngày 20/5 đến ngày 26/5)
Tìm hiểu mã nguồn mở
Sklearn
2
Tuần 2 (Từ ngày 27/5
đến ngày 2/6)
Nghiên cứu các thuật toán máy học phổ biến gồm các thuật toán nhận dạng (Decision Tree) và phân cụm
dữ liệu (K – Means )
3
Tuần 3 (Từ ngày 3/6 đến ngày 9/6)
Tìm hiểu mô hình học máy
phổ biến Linear Regression
4
Tuần 4 (Từ ngày 10/6 đến ngày 16/6)
Tìm hiểu mô hình học máy phổ biến Decision Tree Regressor
5
Tuần 5 (Từ ngày 17/6 đến ngày 23/6)
Phân tích khám phá dữ liệu
(EDA) của Walmart Dataset
6
Tuần 6 (Từ ngày 24/6 đến ngày 30/6)
Áp dụng mô hình đã tìm hiểu để dự báo doanh thu
của Walmart
7 Tuần 7 Tìm hiểu Flask và ứng dụng
Trang 6(Từ ngày 1/7 đến ngày 7/7)
Web
8
Tuần 8 (Từ ngày 8/7 đến ngày 14/7)
Lên ý tưởng giao diện ứng dụng dự báo nhanh doanh thu của Walmart
9
Tuần 9 (Từ ngày 15/7 đến ngày 21/7)
Triển khai xây dựng ứng dụng dự báo nhanh doanh
thu của Walmart
10
Tuần 10 (Từ ngày 12/7 đến ngày 28/7)
Hoàn thiện ứng dụng
Trang 7MỤC LỤC MỤC LỤC HÌNH ẢNH
MỤC LỤC BẢNG
MỞ ĐẦU 1
CHƯƠNG 1 : GIỚI THIỆU CHUNG 2
1.1 Mục tiêu của đề tài 2
1.2 Phạm vi và giới hạn của đề tài 2
1.3 Cấu trúc 2
CHƯƠNG 2: TỔNG QUAN VỀ THƯ VIỆN SCIKIT – LEARN 4
2.1 Giới thiệu Scikit-learn 4
2.2 Cấu trúc và các module chính của Scikit-learn 5
2.2.1 Cấu trúc của Scikit-learn 5
2.2.2 Tiền xử lý dữ liệu bằng Scikit-Learn 8
2.3 Thuật toán máy học phổ biến trong Scikit-learn 12
2.3.1 Decision Tree thuật toán phân lớp (classification) 12
2.3.2 K – Means thuật toán phân cụm (clustering) 13
2.4 Mô hình học máy phổ biến 15
2.4.1 Linear Regression 15
2.4.2 Decision Tree Regressor 17
CHƯƠNG 3: PHÂN TÍCH DỮ LIỆU CỦA WALMART 20
3.1 Giới thiệu về Walmart 20
3.1.1 Walmart 20
3.1.2 Bộ dữ liệu Walmart 22
3.2 Data Pre-processing 23
3.3 Phân tích và khám phá dữ liệu từ tập dữ liệu Walmart 26
3.3.1 Phân tích doanh số bán hàng hàng tuần theo các yếu tố 26
3.3.2 Phân tích doanh số theo các yếu tố thời gian 31
3.4 Xây dựng mô hình dự đoán doanh thu Walmart 35
Trang 83.4.1 Data Standardization và data splitting 35
3.4.2 Mô hình dự đoán doanh thu 36
CHƯƠNG 4: XÂY ỨNG DỤNG WEB SỬ DỤNG FLASK 43
4.1 Giới thiệu về Flask 43
Trang 9MỤC LỤC HÌNH ẢNH
Hình 2.1: Sklearn algorithm cheat sheet 5
Hình 2.2: Phương thức chính của Estimators 6
Hình 2.3: Phương thức chính của Transformers 7
Hình 2.4: Phương thức chính của Predictors 8
Hình 2.5: Phân loại tuần lễ Decision Tree 13
Hình 2.6: Minh họa K-Means để phân cụm dữ liệu khách hàng của Walmart 14
Hình 2.7: Hồi quy tuyến tính sử dụng thư viện scikit-learn 16
Hình 3.1: Báo cáo doanh thu hàng quý của Walmart từ Trading View 21
Hình 3.2: Định dạng cột Date 23
Hình 3.3: Kiểm tra dữ liệu thiếu 24
Hình 3.4: Kiểm tra dữ liệu trùng lặp 24
Hình 3.5: Xác định ngoại lệ 24
Hình 3.6: Kiểm tra ngoại lệ trong cột ‘Holiday_Flag’ 24
Hình 3.7: Xử lý các ngoại lệ trong cột ‘Weekly_Sales’ và ‘Temperature’ 25 Hình 3.8: Xử lý ngoại lệ trong cột ‘Unemployment’ 25
Hình 3.9: Kết quả xử lý 26
Hình 3.10: Weekly_Sales & Holiday_Flag 26
Hình 3.11: Weekly_Sales & Store 27
Hình 3.12: Weekly_Sales & Temperature 28
Hình 3.13: Weekly_Sales & Fuel_Price 28
Hình 3.14: Weekly_Sales & CPI 29
Hình 3.15: Weekly_Sales & Unemployment 30
Hình 3.16: Mối quan hệ CPI và Unemployment 31
Hình 3.17: Xu hướng doanh số theo tháng & năm Walmart 32
Hình 3.18:Doanh số các ngày lễ đặc biệt 33
Hình 3.19: Top 5 cửa hàng có doanh số cao nhất các dịp lễ 33
Trang 10Hình 3.20: Phân bố doanh số theo mùa 34
Hình 3.21: Tổng doanh thu các mùa trong mỗi năm 35
Hình 3.22: Comparison of Actual and Predicted Weekly Sales 38
Hình 3.23: Comparison of Actual and Predicted Weekly Sales DT 39
Trang 11MỤC LỤC BẢNG
Bảng 2.1: Transformers 6 Bảng 2.2: Predictors cho phân loại nhị phân hoặc đa lớp & Predictors cho hồi quy (dự đoán giá trị liên tục) 7
Trang 121
MỞ ĐẦU
Năm 2024 đánh dấu sự phục hồi và tăng trưởng đáng kể của ngành bán lẻ toàn cầu, đặc biệt là trong lĩnh vực siêu thị và cửa hàng bách hóa Theo dữ liệu từ Trading Economics thì doanh số bán lẻ tại Hoa Kỳ đạt 709.01 tỷ đô la vào tháng 12 năm 2023 tăng 5.6% so với cùng kỳ năm ngoái Xu hướng tăng trưởng này dự kiến sẽ tiếp tục trong năm 2024, phản ánh sự phục hồi và phát triển ổn định của ngành bán lẻ Hoa Kỳ
Trong bối cảnh này, Walmart - tập đoàn bán lẻ hàng đầu thế giới năm 2023, Walmart đã ghi nhận doanh thu ấn tượng 611.3 tỷ đô la tăng 6.7% so năm 2022 Thị trường cạnh tranh ngày càng gay gắt khả năng dự đoán doanh thu tại các cửa hàng trở nên cần thiết Việc dự báo doanh số bán hàng không chỉ giúp tối ưu hóa chuỗi cung ứng mà còn hỗ trợ đắc lực cho việc hoạch định chiến lược kinh doanh trong môi trường bán lẻ đang thay đổi nhanh chóng
Để đáp ứng nhu cầu này, các kỹ thuật học máy và trí tuệ nhân tạo đang ngày càng được áp dụng rộng rãi trong lĩnh vực dự đoán doanh thu với khả năng xử lý lượng lớn dữ liệu và các thuật toán học máy có thể giúp nâng cao đáng kể độ chính xác của các dự đoán Trong số các công cụ hỗ trợ xây dựng mô hình học máy, thư viện Scikit-learn của Python nổi bật như một lựa chọn phổ biến nhờ tính đơn giản, hiệu quả về thuật toán
Xuất phát từ nhu cầu thực tiễn và tiềm năng ứng dụng của học máy trong lĩnh vực bán lẻ, đề tài này tập trung vào việc nghiên cứu và áp dụng các thuật toán học máy phổ biến từ thư viện Scikit-learn để xây dựng mô hình dự đoán doanh thu cho Walmart cạnh đó để tăng tính ứng dụng thực tế, đề tài cũng hướng tới việc phát triển một ứng dụng web đơn giản cho phép người dùng dễ dàng thực hiện các dự đoán nhanh về doanh thu dựa trên các mô hình đã được huấn luyện
Trang 131.2 Phạm vi và giới hạn của đề tài
Nghiên cứu thư viện Sklearn để triển khai các thuật toán máy học phổ biến, bao gồm các thuật toán classification, clustering và các mô hình học máy khác
Dữ liệu sử dụng trong nghiên cứu là tập dữ liệu Walmart Store Sales Prediction được cung cấp bởi M Yasser H trên Kaggle có chứa thông tin về doanh số bán hàng của các cửa hàng Walmart với các biến số như doanh thu, ngày và các thông tin liên quan khác Quá trình nghiên cứu sẽ bao gồm việc tiền xử lý dữ liệu và áp dụng các kỹ thuật khám phá dữ để hiểu rõ dữ liệu Bên cạnh đó xây dựng các mô hình dự đoán doanh thu của Walmart bằng cách sử dụng các thuật toán học máy đã được nghiên cứu từ Sklearn Cuối cùng, xây một ứng dụng web đơn giản sử dụng Flask dự báo doanh thu từ các mô hình học máy đã được huấn luyện
• Phạm vi dữ liệu: Giới hạn của nghiên cứu bao gồm việc chỉ sử dụng tập dữ liệu Walmart Store Sales Prediction từ Kaggle
• Công cụ và môi trường phát triển: Google Colab và VS Code
• Ứng dụng web: Xây ứng dụng web được phát triển chỉ là một phiên bản đơn giản, chủ yếu phục vụ cho mục đích minh họa và thử nghiệm chứ không phải là một sản phẩm hoàn chỉnh
1.3 Cấu trúc
Chương 1: Giới thiệu chung
Trang 143
Chương 2: Tổng quan về thư viện Scikit-learn Chương 3: Phân tích và khám phá dữ liệu Walmart Chương 4: Xây ứng dụng web sử dụng Flask
Trang 15Scikit-learn gọi tắt là sklearn là một thư viện mã nguồn mở dành cho machine learning trong ngôn ngữ lập trình Python Thư viện sở hữu một tập các công cụ xử lý các bài toán machine learning và statistical modeling bao gồm: classification, regression, clustering, và dimensionality reduction Scikit-learn được xây dựng dựa trên thư viện NumPy, SciPy và Matplotlib sự kết hợp này tạo ra một hệ sinh thái hoàn chỉnh cho các nhà khoa học dữ liệu và các kỹ sư học máy từ khâu tiền xử lý dữ liệu đến trực quan hóa đến triển khai mô hình
Scikit-learn có nhiều ưu điểm quan trọng cho các doanh nghiệp và thị trường, nhất là khi sử dụng dữ liệu để đưa ra các quyết định chiến lược Scikit-learn mang lại hỗ trợ cho doanh nghiệp không chỉ trong việc dự báo doanh thu, phân tích hành vi khách hàng và quản lý rủi ro tài chính mà còn giúp tối ưu hoá các hoạt động sản xuất Scikit-learn giúp tăng cường khả năng cạnh tranh, tiến bộ chất lượng sản phẩm và đồng thời khuyến khích sự đổi mới sáng tạo thông qua việc phân tích dữ liệu Tổng quát, Scikit-learn có một vai trò then chốt trong việc tinh chỉnh hoạt động kinh doanh, quản lý rủi ro và tăng cường khả năng cạnh tranh
Trang 165
Hình 2.1: Sklearn algorithm cheat sheet
2.2 Cấu trúc và các module chính của Scikit-learn
2.2.1 Cấu trúc của Scikit-learn
Cấu trúc chính của Scikit-learn có thể được chia thành ba thành phần chính: Estimators, Transformers, Predictors
a Estimators
Trong Scikit-learn, Estimators là các đối tượng cốt lõi được sử dụng để train và predict từ data Mỗi thuật toán học máy và công cụ tiền xử lý trong Scikit-learn được triển khai dưới dạng một Estimator tuân theo một giao diện nhất quán, cung cấp các phương thức tiêu chuẩn để huấn luyện mô hình và thực hiện dự đoán
Phương thức chính của Estimators:
Trang 17Bảng 2.1: Transformers
Transformers
Chuẩn hóa dữ liệu (Normalization) về cùng một thang đo, giúp cải thiện hiệu suất của các thuật toán
học máy
StandardScaler trong module preprocessing dùng để chuẩn hóa dữ liệu về phân phối chuẩn với trung bình 0 và phương sai 1
Mã hóa dữ liệu (Encoding) biến đổi
dữ liệu phân loại thành các số liệu
LabelEncoder dùng để biến đổi các nhãn phân loại thành các giá trị số
Giảm số chiều (Dimensionality Reduction) của dữ liệu để giảm bớt
Trang 18Bảng 2.2: Predictors cho phân loại nhị phân hoặc đa lớp & Predictors cho hồi quy (dự đoán giá trị liên tục)
Predictors
• LogisticRegression • LinearRegression
Khi dữ liệu có mối quan hệ tuyến tính giữa các đặc trưng và kết quả đầu ra
• DecisionTreeClassifier • DecisionTreeRegressor
Khi cần một mô hình dễ hiểu và có thể trực quan hóa
• RandomForestClassifier • RandomForestRegressor
Khi muốn tăng độ chính xác và giảm overfitting
• SVM (Support Vector Machine)
• SVR (Support Vector
Khi dữ liệu có biên phân loại rõ ràng và muốn tối đa hóa khoảng cách giữa các lớp
Trang 19Phân loại ngày bán hàng cao điểm: Walmart cũng muốn biết ngày nào thì bán đắt như tôm tươi để chuẩn bị hàng hóa, nhân viên,
+ Bài toán dùng Logistic Regression chia ngày thành hai nhóm: cao điểm và không cao điểm dựa trên những đặc điểm (ví dụ: ngày lễ, khuyến mãi) + Nếu chính xác hơn sử dụng Random Forest Classifier, nó cũng dùng nhiều cây quyết định nhưng lần này là để phân loại ngày thay vì dự đoán doanh thu
Hình 2.4: Phương thức chính của Predictors
2.2.2 Tiền xử lý dữ liệu bằng Scikit-Learn
Trang 209
Tiền xử lý dữ liệu là công đoạn vàng không thể thiếu trong Machine Learning dữ liệu là một phần rất quan trọng, ảnh hưởng trực tiếp tới việc Training Model Do vậy, tiền xử lý dữ liệu trước khi đưa nó vào model là rất quan trọng giúp xử lý giá trị thiếu, mã hóa biến phân loại và chia dữ liệu thành các tập huấn luyện và kiểm tra
a Handling Missing Values & Encoding Categorical Variables
• Handling Missing Values sử dụng SimpleImputer: Thay thế các giá trị thiếu trong các cột bằng giá trị trung bình của cột đó
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_value= np.nan, strategy='mean') transformed_data = imputer.fit_transform(data)
• Encoding Categorical Variables sử dụng OneHotEncoder: Mã hóa cột thành các vector nhị phân
from sklearn.preprocessing import OneHotEncoder encoder = OneHotEncoder()
Trang 2110
Tập dữ liệu kiểm thử (testing set) độc lập đối với tập dữ liệu huấn luyện (training set) để đánh giá và ước lượng hiệu quả của mô hình Kỹ thuật này được sử dụng rộng rãi trong các ứng dụng học máy và khai thác dữ liệu
from sklearn.model_selection import train_test_split
Tập huấn luyện (training set) là tập dữ liệu được sử dụng để huấn luyện mô hình Các thuật toán học máy sẽ xây dựng các mô hình từ tập huấn luyện này Thực tế, huấn luyện thường bao gồm các cặp vectơ đầu vào và vectơ đầu ra tương ứng, trong đó vector đầu ra thường gọi là nhãn (label hoặc target) Các thuật toán sẽ tìm cách tối ưu sai số dự đoán trên tập huấn luyện này đến mức đủ tốt Trong trường hợp overfitting sai số dự đoán trên tập huấn luyện có thể thấp, thậm chí có thể đạt đến mức 0%
Testing Set (Tập kiểm thử) vấn đề này chưa đủ vì mục tiêu của machine learning là xây dựng những mô hình có khả năng tổng quát hóa để dự đoán chính xác trên cả dữ liệu chưa thấy (nằm ngoài tập huấn luyện) để biết một thuật toán hay mô hình có thực sự tốt hay không, sau khi được huấn luyện cần được đánh giá hiệu quả thông qua bộ dữ liệu kiểm thử (testing set) Bộ dữ liệu này được sử dụng để tính độ chính xác hoặc sai số của mô hình dự đoán đã được huấn luyện Chúng ta biết nhãn thực của tất cả điểm trong tập hợp dữ liệu kiểm thử này, nhưng sẽ tạm thời giả vờ như không biết và đưa các giá trị đầu vào của tập vào mô hình dự đoán để nhận kết quả dự đoán đầu ra Sau đó nhìn vào các nhãn thực và so sánh nó với kết quả dự đoán của các đầu vào tương ứng này và xem liệu mô hình có dự đoán đúng hay không Tính tổng trung bình của tất cả sai số này có thể tính toán được lỗi dự đoán trên tập kiểm thử
Tập dữ liệu kiểm thử tốt là một tập dữ liệu độc lập với tập dữ liệu huấn luyện (để ngoài và không được tham gia vào quá trình huấn luyện) nhưng tuân theo cùng một phân phối xác suất như tập dữ liệu huấn luyện nhờ đó việc đánh giá không bị thiên vị
Trang 2211 Tập dữ liệu nên được chia :
from sklearn.preprocessing import StandardScaler sc = StandardScaler()
* Đối với các biến giả từ Categorical Features Encoding => không cần áp dụng FS
* FS phải được thực hiện sau khi chia tập dữ liệu thành tập huấn luyện và tập kiểm tra
Trang 232.3 Thuật toán máy học phổ biến trong Scikit-learn
2.3.1 Decision Tree thuật toán phân lớp (classification)
Phân lớp là một nhiệm vụ yêu cầu sử dụng các thuật toán học máy để học cách gán nhãn lớp cho các mẫu Một ví dụ dễ hiểu đó là phân loại khách hàng của Walmart thành hai nhóm: “có thể mua hàng” và “không” có khả năng mua hàng”
Cây quyết định (Decision Tree) là một thuật toán học máy thuộc nhóm học có giám sát (supervised learning) Trong classification, thuật toán này được sử dụng để phân loại các đối tượng vào các lớp khác nhau dựa trên features của chúng
from sklearn.tree import DecisionTreeClassifier
Cây quyết định xây dựng một mô hình dựa trên cấu trúc cây để đưa ra quyết định phân loại Mỗi nút trong cây biểu diễn một đặc trưng của dữ liệu, mỗi cạnh (branch) biểu diễn một giá trị của đặc trưng đó và mỗi lá (leaf) biểu diễn một lớp hoặc một giá trị dự đoán
Trang 2413
Hình 2.5: Phân loại tuần lễ Decision Tree
Các bước xây dựng cây quyết định:
Chọn đặc trưng: Tại mỗi nút, cây quyết định xem xét đặc trưng tốt nhất để phân chia dữ liệu Đặc trưng tốt nhất là đặc trưng mà khi chia, dữ liệu được phân loại tốt nhất theo tiêu chí nhất định như thông tin thu được (information gain), chỉ số Gini (Gini index), giảm tạp chất (impurity reduction)
Phân chia dữ liệu: Dữ liệu tại mỗi nút được phân chia dựa trên giá trị của đặc trưng được chọn Mỗi giá trị hoặc khoảng giá trị của đặc trưng tạo thành một nhánh con của cây
Lặp lại quá trình: Quá trình chọn đặc trưng tốt nhất và phân chia dữ liệu được lặp lại đệ quy cho mỗi nhánh con cho đến khi đạt điều kiện dừng Điều kiện dừng có thể là khi tất cả dữ liệu tại một nút thuộc cùng một lớp hoặc khi không còn đặc trưng nào để phân chia
2.3.2 K – Means thuật toán phân cụm (clustering)
Trang 2514
Thuật toán phân cụm là một kỹ thuật trong học máy và khai phá dữ liệu được sử dụng để nhóm các đối tượng vào các cụm (clusters) sao cho các đối tượng trong cùng một cụm có nhiều đặc điểm giống nhau hơn so với các đối tượng trong các cụm khác
Phân cụm K – Means là thuật toán để gom dữ liệu thành k cụm khác nhau mà các điểm trong cụm tương đồng lẫn nhau
from sklearn.cluster import KMeans
Các bước bao gồm sáu bước để thực hiện thuật toán phân cụm k-means như sau:
B1: Xác định số lượng ‘k’ của các cụm cần phân công B2: Chọn ngẫu nhiên ‘k’ tập dữ liệu để ‘k’ điểm trung tâm B3: Lặp lại
B4: Expectation: Gán mỗi điểm còn lại vào cụm dựa vào khoảng cách giữa điểm đó đến tâm cụm gần nhất
B5: Maximization: Tính toán tâm cụm mới (trung bình) của mỗi cụm B6: Cho đến khi vị trí của các tâm cụm không thay đổi
Hình 2.6: Minh họa K-Means để phân cụm dữ liệu khách hàng của Walmart
Trang 2615 Quá trình lựa chọn K:
Phương pháp Elbow thu được một đồ thị với trục x là số lượng cụm (k) và trục y là tổng bình phương khoảng cách từ các điểm dữ liệu đến trọng tâm của các cụm (WCSS) Đồ thị này thường sẽ có dạng một “cánh tay” với giá trị của WCSS giảm dần khi k tăng nhưng tốc độ giảm bớt đi đột ngột tại một số giá trị của k Điểm mà tốc độ giảm bớt đi đột ngột này thường được gọi là “khuỷu tay” Số lượng cụm được chọn thường là giá trị của k tại điểm khuỷu tay
Phương pháp Silhouette tính toán điểm số Silhouette cho mỗi giá trị của k Điểm số Silhouette đo lường mức độ “đồng thuận” của mỗi điểm dữ liệu với cụm của nó so với các cụm khác Giá trị của Silhouette score dao động từ -1 đến 1, giá trị gần 1 cho thấy một phân cụm tốt, trong khi giá trị gần -1 cho thấy một phân cụm không tốt bằng cách chọn giá trị của k mà có Silhouette score cao nhất có thể chọn ra số lượng cụm tối ưu cho dữ liệu của mình Kết quả của quá trình là số lượng cụm tối ưu có thể sử dụng để phân cụm dữ liệu một cách hiệu quả nhất
2.4 Mô hình học máy phổ biến
2.4.1 Linear Regression
Hồi quy tuyến tính trong học máy là một thuật toán học có giám sát với đầu ra là giá trị liên tục và có hệ số góc là hằng số Thuật toán này được sử dụng để dự đoán các giá trị trong một khoảng liên tục ví dụ như doanh thu bán hàng thay vì học cách phân loại thành các danh mục riêng biệt ví dụ như khách hàng mới hay cũ Hồi quy tuyến tính dự báo giá trị của biến output từ các giá trị của các biến đầu vào
Phân loại hồi quy tuyến tính thành hai loại chính:
• Hồi quy tuyến tính đơn biến (Simple regression)
Trang 2716
Sử dụng dạng đường chéo cơ bản, với m và b là những biến số trong thuật
toán mà sẽ cố gắng “học” để dự đoán đầu ra một cách chính xác nhất có thể, 𝑥 ký hiệu dữ liệu đầu vào và 𝑦 ký hiệu cho dự đoán ở đầu ra
y = mx + b
• Hồi quy tuyến tính đa biến (Multivariable regression)
Phức tạp hơn, trong đó w ký hiệu các hệ số hay trọng số (weight) mà mô
hình cần học
f(x,y,z) = w1x + w2y + w3z
Các biến số x,y,z ký hiệu các thuộc tính hay những số liệu riêng biệt mà có
tại mỗi quan sát (observation) Ví dụ để dự đoán doanh thu các thuộc tính này có thể là số tiền mà công ty đầu tư vào quảng cáo lần lượt trên TikTok, TV và News
Doanh thu = w1TikTok + w2TV + w3News
Sử dụng thư viện scikit-learn dự đoán hồi quy tuyến tính thay vì tự tính theo công thức nên khai triển vì các thuật toán trong thư viện scikit-learn đã được đánh giá kĩ càng bởi các chuyên gia và được tối ưu về mặt tốc độ
Hình 2.7: Hồi quy tuyến tính sử dụng thư viện scikit-learn
Output:
Linear Regression
Trang 2817
Ưu điểm: Dễ triển khai và hiệu quả khi huấn luyện
Có thể giảm overfitting bằng cách điều chỉnh
Nhược điểm: Giả định rằng dữ liệu là độc lập, điều này hiếm khi xảy ra trong thực tế
Dễ bị ảnh hưởng bởi nhiễu và overfitting đến kết quả Nhạy cảm với ngoại lệ
2.4.2 Decision Tree Regressor
Decision Tree Regressor là một thuật toán học máy được sử dụng cho các bài toán hồi quy để dự báo các giá trị liên tục Thuật toán này dùng cấu trúc cây để chia dữ liệu thành các tập con nhỏ hơn dựa trên các thuộc tính của dữ liệu Mỗi nút trong cây quyết định một điều kiện dựa trên một thuộc tính nào đó và quá trình này tiếp tục cho đến khi đạt đến nút lá nơi giá trị dự báo được tính toán Decision Tree Regressor hoạt động bằng cách chia không gian đầu vào thành các vùng đồng nhất nhất có thể Mỗi lần chia không gian là một split và các vùng kết quả là leaves Mục tiêu của quá trình này là tạo ra một cấu trúc cây sao cho tại mỗi node, dữ liệu được chia thành các nhóm sao cho sai số dự đoán trong các nhóm là nhỏ nhất
Quá trình xây dựng cây quyết định
+ Chọn Split tốt nhất: Tại mỗi node của cây, thuật toán sẽ xem xét tất cả các thuộc tính và tất cả các giá trị có thể của các thuộc tính đó để tìm ra split tốt nhất Split tốt nhất là split mà sau khi chia, tổng sai số dự đoán trong các nhóm là nhỏ nhất Công thức Mean Squared Error sau:
Trong đó:
Trang 2918 n là số lượng mẫu trong tập dữ liệu yi là giá trị thực tế của mẫu thứ i y^i là giá trị dự đoán của mẫu thứ i
MSE đo lường độ lớn của sai số bình phương giữa giá trị dự đoán và giá trị thực Split tốt nhất là split mà sau khi chia MSE giảm đi nhiều nhất Điều này đảm bảo rằng mô hình sẽ tối ưu hóa việc dự đoán bằng cách chia dữ liệu sao cho sai số dự đoán trong mỗi nhóm nhỏ nhất
+ Tạo node con: Sau khi chọn split tốt nhất, dữ liệu được chia thành hai nhóm dựa trên giá trị của split Quá trình này được lặp lại đệ quy cho từng nhóm con, tạo ra các node con mới từ mỗi nhóm Mỗi node con sẽ tiếp tục chia dữ liệu cho đến khi đạt đến điều kiện dừng
+ Dừng chia nhánh: Quá trình chia nhánh dừng lại khi đạt đến điều kiện dừng Điều kiện dừng có thể là số lượng mẫu trong node con nhỏ hơn một ngưỡng nhất định, chiều cao của cây đạt đến giới hạn hoặc không còn split nào cải thiện sai số dự đoán
Để tối ưu hóa mô hình Decision Tree Regressor một số tham số quan trọng cần điều chỉnh:
• criterion: Tiêu chí để đo lường chất lượng của split Mặc định là “mse” Ngoài ra, có thể sử dụng “friedman_mse” hoặc “mae” tùy thuộc vào bài toán cụ thể
• splitter: Chiến lược để chọn split Có thể là “best” (chọn split tốt nhất) hoặc “random” (chọn split ngẫu nhiên trong số các split tốt nhất)
• max_depth: Độ sâu tối đa của cây giới hạn độ sâu giúp tránh overfitting bằng cách hạn chế sự phức tạp của mô hình
• min_samples_split: Số lượng mẫu tối thiểu cần thiết để split một node tham số này giúp kiểm soát sự chia nhỏ quá mức của cây
Trang 30Không yêu cầu chuẩn hóa dữ liệu hoặc biến đổi phức tạp
Xử lý tốt dữ liệu chứa cả biến số và biến phân loại mà không cần chuyển đổi
Nhược điểm:
Cây quyết định có xu hướng overfit nếu không được kiểm soát tốt Mô hình có thể hoạt động rất tốt trên dữ liệu huấn luyện nhưng kém trên dữ liệu kiểm tra
Sự thay đổi nhỏ trong dữ liệu có thể dẫn đến sự thay đổi lớn trong cấu trúc cây giảm tính ổn định và độ tin cậy của mô hình
Với dữ liệu rất lớn và phức tạp Decision Tree Regressor không hoạt động hiệu quả bằng các phương pháp khác như Random Forest hoặc Gradient Boosting
Trang 31Gã khổng lồ bán lẻ với 3 trụ cột quan trọng:
+ Walmart US : “ con gà đẻ trứng vàng” tập chung cửa hàng bán lẻ truyền thống chiếm 64% doanh thu
+ Walmart International: Góp phần 24% doanh thu là nhánh kinh doanh quốc tế
+ Sam's Club: là chuỗi cửa hàng bán lẻ theo mô hình khô cung cấp sản phẩm với số lượng lớn và giá ưu đãi cho các thành viên đăng kí chiếm 12% doanh thu
Để hiểu rõ hơn về tình hình kinh doanh hiện tại của Walmart chúng ta đi sâu vào xem xét biểu đồ doanh thu qua các quý cung cấp cái nhìn tổng quan về xu hướng doanh thu
Trang 3221
Hình 3.1: Báo cáo doanh thu hàng quý của Walmart từ Trading View
Nhìn vào dữ liệu trong 8 quý vừa qua, doanh thu có xu hướng tăng trưởng mức tăng trung bình khoảng 2% thể hiện sự ổn định và hiệu quả trong chiến lược kinh doanh của Walmart Đặc biệt doanh thu bùng nổ vào quý 4 hàng năm trùng với mùa mua sắm Giáng sinh là mùa vàng ngành bán lẻ, khách hàng sẵn sàng chi tiêu dịp lễ quan trọng Walmart biết tận dụng tung ra chương trình “12 Days of Christmas Deals” hấp dẫn thúc đẩy doanh thu Sau đợt mua sắm nhộn nhịp dịp lễ Giáng sinh, hoạt động mua sắm tại Walmart thường có xu hướng bình ổn trở lại vào quý 1
Dựa trên các số liệu dự đoán, doanh thu của Walmart dự kiến sẽ tiếp tục đà tăng trưởng trong năm 2024 và 2025 khoảng 1% Mặc dù tốc độ tăng trưởng này có phần khiêm tốn hơn so với quá khứ nhưng nó vẫn thể hiện kỳ vọng tích cực về tiềm năng phát triển và khả năng duy trì vị thế của Walmart trong bối cảnh thị trường bán lẻ ngày càng cạnh tranh gay gắt Walmart liên tục vượt qua dự đoán doanh thu kết quả cho thấy doanh thu thực tế thường cao hơn so với ước tính thể hiện khả năng vượt qua kỳ vọng của Walmart Ví dụ điển hình vào quý 4 năm 2022, doanh thu báo cáo đạt 164,05 tỷ USD vượt qua ước tính 159,76 tỷ USD ghi nhận mức tăng 2,68% Sự vượt trội này không chỉ củng cố niềm tin của các nhà đầu tư mà còn khẳng định vị thế vững chắc của Walmart trên thị trường bán lẻ toàn cầu