Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh bùng nổ công nghệ thông tin và thương mại điện tử, các giao dịch mua sắm tại các siêu thị và cửa hàng bán lẻ phát sinh khối lượng dữ liệu khổng lồ mỗi ngày. Tuy nhiên, việc chỉ lưu trữ dữ liệu đơn thuần để xuất báo cáo doanh thu định kỳ không tận dụng được các tri thức tiềm ẩn về hành vi người tiêu dùng. Khai phá dữ liệu (Data Mining), đặc biệt là kỹ thuật khai phá luật kết hợp (Association Rule Mining), được áp dụng nhằm giải quyết bài toán phát hiện các mối liên hệ giữa các sản phẩm thường được mua cùng nhau trong giỏ hàng. Những tri thức này cung cấp cơ sở để người quản lý hoạch định chiến lược tiếp thị, bố trí quầy kệ hàng hóa, xây dựng các gói sản phẩm khuyến mãi (combo), cũng như thiết lập các gợi ý bán chéo (cross-sell) và bán thêm (up-sell) nhằm gia tăng doanh thu.

Khóa luận xác định 07 mục tiêu nghiên cứu cụ thể được đánh số theo văn bản:

  1. Tìm hiểu về luật kết hợp và các thuật toán tìm luật kết hợp tiêu biểu, bao gồm: Apriori, FP-Growth và Eclat.
  2. Tìm hiểu phương pháp đánh giá các thuật toán, bao gồm các chỉ số đánh giá, cách tính các chỉ số và phương pháp phân chia dữ liệu.
  3. Thực hiện xây dựng cài đặt các thuật toán tiêu biểu và thực nghiệm trên một số bộ dữ liệu khác nhau.
  4. Trực quan hóa tập luật thu được từ thực nghiệm hai thuật toán tiêu biểu Apriori và FP-Growth thành các dạng biểu đồ: Bản đồ nhiệt (Heatmap) và Biểu đồ mạng (Graph).
  5. Dựa trên thực nghiệm với các bộ dữ liệu và các chỉ số được tổng hợp từ việc cài đặt thuật toán để đưa ra so sánh giữa hai thuật toán tiêu biểu dựa trên các tiêu chí: thời gian thực thi, số lượng tập luật sinh ra và hiệu năng bộ nhớ sử dụng.
  6. Đề xuất hai thuật toán cải tiến dựa trên thuật toán Apriori cơ bản:
    • Thuật toán cải tiến dựa trên việc giảm số lần duyệt cơ sở dữ liệu xuống còn 01 lần duy nhất bằng bảng Hash (dựa trên nghiên cứu của K. Garg, 2012/2014).
    • Thuật toán cải tiến giảm số giao dịch cần phải duyệt khi tính độ hỗ trợ (support) của tập ứng viên (dựa trên nghiên cứu của Mohammed Al-Maolegi, 2014).
  7. Xây dựng chương trình minh họa dựa trên thư viện Python để trực quan hóa kết quả cho các thuật toán tiêu biểu và xây dựng chương trình (ngôn ngữ C#) cài đặt hai thuật toán cải tiến.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Kỹ thuật khai phá dữ liệu; bài toán khai phá luật kết hợp; các thuật toán Apriori, FP-Growth, Eclat; hai thuật toán Apriori cải tiến; các chỉ số đánh giá luật (Support, Confidence, Lift) và kỹ thuật trực quan hóa dữ liệu.
  • Phạm vi nghiên cứu:
    • Về không gian và dữ liệu: Đề tài tập trung phân tích dữ liệu giao dịch của một cửa hàng bán lẻ cụ thể (không xét mô hình chuỗi đa chi nhánh). Nguồn dữ liệu thực nghiệm bao gồm: bộ dữ liệu thương mại điện tử "Online Retail Data v3" (2017) của một cửa hàng quà tặng trực tuyến tại Anh trích xuất từ Kaggle và bộ dữ liệu thực tế từ cửa hàng bán lẻ thực phẩm Tạp hoá xanh tại Việt Nam.
    • Về thời gian dữ liệu: Dữ liệu quà tặng được khảo sát theo các mốc thời gian: giai đoạn 22–24/12/2018, tháng 12/2018 và quý 4 năm 2018.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết và mô hình nghiên cứu

Khóa luận xây dựng nội dung dựa trên quy trình khám phá tri thức từ cơ sở dữ liệu (Knowledge Discovery in Databases - KDD) gồm 07 bước tuần tự và lặp: Nghiên cứu và đặt bài toán $\rightarrow$ Tạo và thu thập dữ liệu đầu vào $\rightarrow$ Tiền xử lý dữ liệu (làm sạch, mã hóa) $\rightarrow$ Trích chọn, chuyển đổi dữ liệu $\rightarrow$ Khai phá dữ liệu $\rightarrow$ Kiểm định, đánh giá $\rightarrow$ Sử dụng tri thức.

Trong bước khai phá dữ liệu, mô hình khai phá luật kết hợp nhị phân (R. Agrawal, R. Srikant, 1994; Swami, 1993) được sử dụng để phát hiện mối quan hệ dạng $X \rightarrow Y$ giữa các tập hạng mục ($Itemsets$), dựa trên các tham số và độ đo cốt lõi:

  • Tập phổ biến (Frequent Itemset): Tập mục $X$ có độ hỗ trợ thỏa mãn $supp(X) \ge minsup$.
  • Độ hỗ trợ (Support): Tỷ lệ phần trăm các giao dịch trong cơ sở dữ liệu có chứa tập mục $X \cup Y$.
  • Độ tin cậy (Confidence): Tỷ lệ xác suất giao dịch chứa $X$ cũng đồng thời chứa $Y$, tính bằng $\frac{supp(X \cup Y)}{supp(X)}$, yêu cầu thỏa mãn $conf(X \rightarrow Y) \ge minconf$.
  • Độ nâng (Lift): Tỷ số giữa độ hỗ trợ thực tế của $X \cup Y$ so với tích độ hỗ trợ độc lập của $X$ và $Y$: $Lift(X \rightarrow Y) = \frac{supp(X \cup Y)}{supp(X) \times supp(Y)}$.
  • Tập phổ biến tối đại (Max Pattern) và Tập phổ biến đóng (Closed Pattern).
Thuật toán Cơ chế kỹ thuật Chiến lược tìm kiếm Số lần quét CSDL Không gian bộ nhớ
Apriori Sinh tập ứng viên $C_k$ từ $L_{k-1}$ và cắt tỉa (dựa trên tính chất: tập con của tập phổ biến phải là tập phổ biến). Tìm kiếm theo chiều rộng (BFS). Quét CSDL nhiều lần (tương ứng với kích thước $k$ của tập ứng viên lớn nhất). Chiếm dụng bộ nhớ lớn khi tập ứng viên sinh ra nhiều.
FP-Growth Nén dữ liệu vào cây FP-tree; khai phá tập phổ biến từ cây mẫu điều kiện (Conditional FP-Tree) không qua bước sinh ứng viên. Tìm kiếm theo chiều sâu (DFS), chia để trị. Quét CSDL đúng 02 lần (01 lần đếm tần số 1-itemset, 01 lần dựng cây). Cần ít bộ nhớ do cấu trúc cây nén gọn.
Eclat Sử dụng định dạng dữ liệu dạng dọc (Vertical Data Format - danh sách mã giao dịch $TIDSet$ của từng món hàng); tính giao các $TIDSet$. Tìm kiếm theo chiều sâu (DFS), chia để trị. Chuyển đổi CSDL 01 lần, sau đó thao tác trên bộ nhớ. Tốn bộ nhớ nếu danh sách giao dịch ($TIDSet$) quá lớn.

Phương pháp nghiên cứu và nguồn dữ liệu

  • Phương pháp thực nghiệm và đánh giá:
    • Cài đặt hai thuật toán Apriori và FP-Growth bằng ngôn ngữ Python (thư viện mlxtend), đo lường các chỉ số: thời gian thực thi (giây), dung lượng bộ nhớ tiêu thụ (MB) và số lượng luật kết hợp sinh ra khi thay đổi ngưỡng $minsup$ và $minconf$. Trực quan hóa luật bằng Heatmap và Graph.
    • Cài đặt thuật toán Apriori cơ bản và 02 thuật toán Apriori cải tiến bằng ngôn ngữ C#, tiến hành đo thời gian xử lý trên các tập dữ liệu có quy mô giao dịch khác nhau.
  • Nguồn dữ liệu:
    1. Bộ dữ liệu Online Retail Data v3 (Kaggle, 2017): Chứa các thuộc tính: Bill (Mã hóa đơn), MerchandiseID (Mã hàng), Product (Tên sản phẩm), Quota (Số lượng), BillDate (Thời gian), Amount (Đơn giá), CustomerID (Mã khách hàng), Country (Quốc gia).
    2. Bộ dữ liệu Cửa hàng Tạp hoá xanh: Dữ liệu giao dịch bán lẻ tại chỗ tại Việt Nam, phục vụ thực nghiệm so sánh thuật toán cải tiến theo các mẫu 31, 51 và 71 giao dịch.

Nội dung chính theo từng chương

Chương 1. Tổng quan đề tài

Chương này đặt vấn đề về sự gia tăng quy mô dữ liệu trong bán lẻ và thương mại điện tử, khẳng định vai trò của khai phá dữ liệu trong việc chuyển đổi dữ liệu thô thành tri thức hỗ trợ ra quyết định. Tác giả xác định rõ 07 mục tiêu nghiên cứu, đối tượng, phương pháp và phạm vi thực nghiệm. Đồng thời, chương 1 nêu bật ý nghĩa thực tiễn (giúp cửa hàng tối ưu hóa bố trí quầy hàng, thiết lập combo sản phẩm, đề xuất trực tuyến) và ý nghĩa khoa học (nghiên cứu cải tiến hiệu năng thuật toán Apriori).

Chương 2. Khai phá dữ liệu - Luật kết hợp

Chương 2 trình bày có hệ thống khung lý thuyết phát hiện tri thức (KDD) và định nghĩa toán học của bài toán khai phá luật kết hợp nhị phân. Tác giả phân tích chi tiết quy trình hoạt động, các khái niệm, mã giả và ví dụ tính toán từng bước của 03 giải thuật tiêu biểu:

  • Thuật toán Apriori: Cơ chế lặp sinh tập ứng viên $C_k$ từ tập phổ biến $L_{k-1}$ và duyệt lại CSDL để tính độ hỗ trợ, loại bỏ các ứng viên không thỏa $minsup$.
  • Thuật toán FP-Growth: Cách thức quét CSDL 2 lần, xây dựng cây FP-Tree gốc null, khai phá mẫu điều kiện (conditional pattern base) và dựng cây FP điều kiện để trích xuất trực tiếp tập phổ biến.
  • Thuật toán Eclat: Kỹ thuật chuyển đổi CSDL từ dạng ngang sang dạng dọc ($TIDSet$), thực hiện phép giao các tập mã giao dịch để tính support mà không cần quét lại CSDL dạng bản ghi. Chương này kết thúc bằng bảng so sánh toàn diện 03 thuật toán theo các tiêu chí kỹ thuật, số lần duyệt CSDL, chiến lược duyệt và bộ nhớ.

Chương 3. Cải tiến thuật toán Apriori

Chương 3 tập trung phân tích nhược điểm cố hữu của Apriori cơ bản (quét CSDL nhiều lần và phát sinh lượng ứng viên khổng lồ) và đề xuất chi tiết 02 hướng cải tiến:

  • Cải tiến 1 - Sử dụng bảng Hash (K. Garg): Thuật toán chỉ duyệt qua CSDL đúng 01 lần duy nhất. Trong lần quét này, các tổ hợp hạng mục trong từng giao dịch được sinh ra và ghi nhận vào bảng Hash gồm 3 trường thuộc tính: Itemset String (khóa), No_of_itemset (số lượng item trong chuỗi), và Count (số lần xuất hiện). Sau khi duyệt xong, bảng Hash được sắp xếp giảm dần theo No_of_itemset, cắt tỉa các phần tử có Count $< minsup$, sau đó tính $confidence$ để sinh luật trực tiếp.
  • Cải tiến 2 - Giảm số giao dịch cần phải duyệt (Mohammed Al-Maolegi): Thuật toán cắt giảm không gian tìm kiếm bằng cách loại bỏ bớt các giao dịch không chứa tập phổ biến ở các bước sau, giảm số bản ghi cần quét khi tính $support$ cho các tập ứng viên $C_k$ ($k \ge 2$). Chương trình bày ví dụ tính toán cụ thể trên từng bảng dữ liệu mẫu và so sánh lý thuyết giữa Apriori cơ bản với 02 biến thể cải tiến.

Chương 4. Cài đặt, thực nghiệm, đánh giá thuật toán

Chương 4 thực hiện kiểm chứng thực nghiệm qua 02 hệ thống phần mềm độc lập:

  • Ứng dụng Python (mlxtend, UI phân tích): So sánh Apriori và FP-Growth trên bộ dữ liệu quà tặng tại Anh qua 3 kịch bản thời gian (22–24/12/2018, tháng 12/2018, quý 4/2018). Kết quả ghi nhận chi tiết về số lượng luật, biểu đồ so sánh thời gian thực thi và dung lượng bộ nhớ chiếm dụng; thực hiện trực quan hóa luật kết hợp qua giao diện Heatmap và Graph.
  • Ứng dụng C# (Apriori cơ bản vs Apriori Hash vs Apriori giảm giao dịch): Thực nghiệm trên bộ dữ liệu Tạp hoá xanh với các mốc quy mô 31, 51 và 71 giao dịch. Đo lường chi tiết thời gian xử lý và số lượng luật tạo ra giữa 3 thuật toán.
  • Phân tích ứng dụng thực tế: Trích xuất các luật kết hợp điển hình từ dữ liệu Tạp hoá xanh để đề xuất giải pháp bán hàng cụ thể (combo Bánh đậu xanh + Bánh quế; gợi ý bán chéo Cross-sell khi mua Bánh đậu xanh).

Chương 5. Kết luận và hướng phát triển

Tổng kết toàn bộ các kết quả đạt được về mặt lý thuyết, thực nghiệm và ứng dụng thực tiễn; phân tích các khó khăn, hạn chế trong quá trình thực hiện khóa luận và định hướng các nghiên cứu mở rộng trong tương lai.


Kết quả và đóng góp nghiên cứu

Kết quả phân tích và thực nghiệm

  1. So sánh hiệu năng giữa Apriori và FP-Growth (Thực nghiệm Python):

    • Với cùng ngưỡng $minsup$ và $minconf$, cả hai thuật toán đều sinh ra số lượng luật kết hợp tương đương nhau trên các tập dữ liệu quà tặng (giai đoạn 22–24/12/2018, tháng 12/2018 và quý 4/2018).
    • FP-Growth vượt trội hoàn toàn về tốc độ xử lý: thời gian thực thi của FP-Growth ngắn hơn nhiều so với Apriori, đặc biệt khi hạ thấp ngưỡng $minsup$ hoặc khi quy mô dữ liệu tăng từ vài ngày lên cả quý.
    • Dung lượng bộ nhớ của FP-Growth sử dụng ổn định và thấp hơn nhờ cấu trúc cây FP-Tree nén gọn dữ liệu, trong khi Apriori tiêu tốn bộ nhớ lớn do lưu trữ danh sách tập ứng viên $C_k$.
  2. Hiệu năng của các thuật toán Apriori cải tiến (Thực nghiệm C#):

    • Trên cả 3 bộ dữ liệu thử nghiệm (31 giao dịch, 51 giao dịch, 71 giao dịch của Tạp hoá xanh), cả 02 thuật toán cải tiến (Apriori Hash và Apriori giảm giao dịch) đều cho kết quả thời gian thực thi nhanh hơn rõ rệt so với thuật toán Apriori cơ bản.
    • Thuật toán Apriori cải tiến bằng bảng Hash đạt hiệu quả cao nhất trong việc giảm thiểu thao tác vào/ra (I/O) nhờ rút ngắn số lần quét toàn bộ cơ sở dữ liệu xuống đúng 01 lần.
  3. Ứng dụng thực tiễn trong kinh doanh bán lẻ:

    • Khóa luận đã trích xuất thành công các luật kết hợp có ý nghĩa thực tế từ dữ liệu bán lẻ của cửa hàng Tạp hoá xanh, cụ thể phát hiện mối liên kết mua hàng giữa nhóm sản phẩm bánh ngọt:
      • Gợi ý gói combo sản phẩm: Bánh đậu xanh + Bánh quế.
      • Chiến lược bán chéo (Cross-sell): Tự động hiển thị gợi ý mua thêm Bánh quế khi khách hàng chọn mua Bánh đậu xanh.

Đóng góp của đề tài

  • Hệ thống hóa toàn diện cơ sở lý thuyết và so sánh định tính chi tiết giữa 3 giải thuật khai phá luật kết hợp kinh điển: Apriori, FP-Growth và Eclat.
  • Hiện thực hóa thành công 02 thuật toán cải tiến Apriori (dựa trên giải pháp bảng Hash của K. Garg và giảm không gian giao dịch của Mohammed Al-Maolegi) và chứng minh bằng thực nghiệm rằng cả hai đều cải thiện tốc độ xử lý so với Apriori gốc.
  • Xây dựng công cụ phần mềm cho phép người dùng trực quan hóa tập luật kết hợp trực tiếp dưới dạng Bản đồ nhiệt (Heatmap) và Sơ đồ mạng (Graph), hỗ trợ người làm kinh doanh dễ dàng tiếp cận và diễn giải tri thức.

Hạn chế và hướng nghiên cứu tiếp theo

Hạn chế

  • Quy mô dữ liệu thực nghiệm thuật toán cải tiến: Các bộ dữ liệu thử nghiệm cho thuật toán cải tiến trên môi trường C# còn có kích thước tương đối nhỏ (31, 51, 71 giao dịch), chưa phản ánh toàn diện hiệu năng của bảng Hash khi kích thước cơ sở dữ liệu lên đến hàng triệu bản ghi.
  • Phạm vi ứng dụng: Đề tài chỉ mới tập trung nghiên cứu trên phạm vi một cửa hàng bán lẻ đơn lẻ, chưa kiểm thử trên mô hình chuỗi phân tán nhiều chi nhánh với đặc trưng mua sắm vùng miền khác nhau.
  • Giới hạn về thời gian nghiên cứu: Chưa tiến hành đánh giá chi tiết việc tiêu thụ bộ nhớ RAM của bảng Hash trong trường hợp số lượng sản phẩm phân biệt ($items$) quá lớn dẫn đến hiện tượng bùng nổ tổ hợp khóa trong bảng Hash.

Hướng nghiên cứu tiếp theo

  • Nghiên cứu và cài đặt thuật toán khai phá luật kết hợp có gán trọng số (Association Rules with Weighted Items) để phản ánh chính xác hơn giá trị kinh tế của từng sản phẩm (ví dụ: sản phẩm có giá trị cao hoặc biên lợi nhuận lớn).
  • Mở rộng thuật toán cải tiến trên các nền tảng xử lý dữ liệu lớn, tính toán phân tán và song song để xử lý các cơ sở dữ liệu giao dịch khổng lồ của các sàn thương mại điện tử.
  • Tích hợp công cụ trích xuất luật kết hợp vào hệ thống gợi ý sản phẩm (Recommendation System) thời gian thực của các phần mềm quản lý bán hàng.

Giá trị tham khảo

Tài liệu khóa luận có giá trị tham khảo hữu ích đối với:

  • Sinh viên, học viên ngành Hệ thống Thông tin, Khoa học Dữ liệu, Công nghệ Thông tin: Nguồn tài liệu học thuật chi tiết về cơ sở lý thuyết, các bước toán học và mã giả minh họa từng bước của các giải thuật Apriori, FP-Growth, Eclat.
  • Người nghiên cứu thuật toán khai phá dữ liệu: Phần phân tích cơ chế bảng Hash (Chương 3) và mã nguồn thực nghiệm so sánh (Chương 4) là tài liệu tham khảo trực tiếp cho các đề tài tối ưu hóa giải thuật khai phá tập phổ biến.
  • Chuyên viên phân tích dữ liệu bán lẻ (Data Analyst / BI Specialist): Cung cấp quy trình ứng dụng khai phá dữ liệu từ khâu tiền xử lý, chạy thuật toán đến trực quan hóa bằng Graph/Heatmap và đề xuất các quyết định tiếp thị thực tế (bán chéo, gói combo).

Câu hỏi thường gặp

1. Khóa luận nghiên cứu và so sánh những thuật toán tìm luật kết hợp nào?

Khóa luận nghiên cứu lý thuyết 03 thuật toán tiêu biểu: Apriori, FP-Growth và Eclat. Trong đó, tác giả tiến hành cài đặt thực nghiệm và so sánh chi tiết hiệu năng giữa Apriori và FP-Growth trên môi trường Python, đồng thời so sánh Apriori cơ bản với 02 thuật toán Apriori cải tiến trên môi trường C#.

2. Hai phương pháp cải tiến thuật toán Apriori trong khóa luận dựa trên nguyên lý nào và trích dẫn từ ai?

Khóa luận thực hiện 02 phương pháp cải tiến:

  • Phương pháp 1 (dựa trên nghiên cứu của K. Garg, 2012/2014): Sử dụng cấu trúc bảng Hash để lưu trữ các tổ hợp hạng mục (Itemset String, No_of_itemset, Count), giúp giảm số lần duyệt cơ sở dữ liệu xuống còn đúng 01 lần duy nhất.
  • Phương pháp 2 (dựa trên nghiên cứu của Mohammed Al-Maolegi, 2014): Thực hiện cắt giảm số lượng giao dịch cần phải duyệt trong cơ sở dữ liệu khi tính toán độ hỗ trợ (support) cho các tập ứng viên $C_k$.

3. Khóa luận sử dụng các bộ dữ liệu nào để thực nghiệm và đánh giá?

Khóa luận sử dụng 02 nguồn dữ liệu thực nghiệm:

  1. Bộ dữ liệu Online Retail Data v3 (2017) lấy từ Kaggle: Gồm các giao dịch của một cửa hàng quà tặng trực tuyến tại Anh với 8 trường dữ liệu (Bill, MerchandiseID, Product, Quota, BillDate, Amount, CustomerID, Country), được phân chia thực nghiệm theo 3 mốc thời gian: 22–24/12/2018, tháng 12/2018 và quý 4 năm 2018.
  2. Bộ dữ liệu của cửa hàng Tạp hoá xanh (Việt Nam): Sử dụng để thực nghiệm các thuật toán cải tiến với các tập quy mô 31, 51 và 71 giao dịch.

4. Thuật toán Eclat có điểm gì khác biệt cốt lõi so với Apriori và FP-Growth?

Khác biệt cốt lõi nằm ở định dạng dữ liệu: Apriori và FP-Growth xử lý trên dữ liệu dạng ngang (Horizontal Data Format - danh sách món hàng theo mã giao dịch), trong khi Eclat chuyển đổi và xử lý trên dữ liệu dạng dọc (Vertical Data Format - danh sách các mã giao dịch $TIDSet$ chứa từng món hàng). Eclat tính toán độ hỗ trợ bằng các phép toán giao tập hợp các $TIDSet$ thay vì quét lại các bản ghi giao dịch.

5. Kết quả thực nghiệm đã đề xuất giải pháp kinh doanh cụ thể nào cho cửa hàng bán lẻ?

Dựa trên các luật kết hợp trích xuất được từ dữ liệu mua hàng tại cửa hàng Tạp hoá xanh, khóa luận đề xuất 02 giải pháp kinh doanh trực tiếp:

  • Tạo gói sản phẩm khuyến mãi (Combo): Kết hợp Bánh đậu xanh và Bánh quế.
  • Triển khai bán chéo (Cross-sell): Gợi ý tự động mời khách hàng mua thêm Bánh quế khi họ lựa chọn sản phẩm Bánh đậu xanh.

Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Minh Tuấn và Nguyễn Đức Thắng đã hệ thống hóa đầy đủ cơ sở lý luận về bài toán khai phá luật kết hợp, phân tích chi tiết ưu nhược điểm của các thuật toán Apriori, FP-Growth và Eclat. Đề tài đã hiện thực hóa thành công 02 giải pháp cải tiến thuật toán Apriori (dùng bảng Hash và giảm không gian duyệt giao dịch), chứng minh được sự vượt trội về thời gian thực thi so với thuật toán cơ bản thông qua thực nghiệm trên ngôn ngữ C#. Đồng thời, chương trình Python được xây dựng đã trực quan hóa trực quan các tập luật sinh ra qua biểu đồ Bản đồ nhiệt và Biểu đồ mạng, mở ra khả năng ứng dụng thực tế trong việc hoạch định combo sản phẩm và chiến lược bán chéo cho doanh nghiệp bán lẻ.