Bối cảnh và vấn đề nghiên cứu
Trong lĩnh vực khám phá tri thức từ cơ sở dữ liệu (Knowledge Discovery in Databases - KDD), khai thác tập phổ biến (Frequent Itemset Mining - FIM) đóng vai trò nền tảng cho nhiều bài toán phân tích dữ liệu thực tế như phân tích giỏ hàng (Market Basket Analysis), tiếp thị chéo, hệ thống khuyến nghị và tối ưu hóa quản lý kho hàng. Các thuật toán truyền thống tiêu biểu như Apriori (Agrawal & Srikant, 1994), FP-growth (Han et al., 2000) và Eclat/IT-tree (Zaki et al.) giả định rằng mọi hạng mục (item) đều có tầm quan trọng tương đương nhau và chỉ xuất hiện dưới dạng nhị phân (có hoặc không có trong giao dịch).
Tuy nhiên, trong các bài toán thực tế, mỗi sản phẩm hoặc đối tượng dữ liệu đều mang giá trị, lợi nhuận hoặc mức độ quan trọng khác nhau, được biểu diễn thông qua trọng số (weight). Khi đưa trọng số vào mô hình, thuộc tính giảm đơn điệu (anti-monotonic property) của độ hỗ trợ truyền thống không còn được duy trì trực tiếp theo cách cũ. Đồng thời, việc khai thác tập phổ biến thông thường tạo ra số lượng mẫu khổng lồ, khiến việc trích xuất và phân tích các quy tắc hữu ích gặp nhiều khó khăn về mặt tính toán và không gian lưu trữ.
Đồ án "Mining top-rank-k frequent weighted itemsets using WN-list structures and an early pruning strategy" do sinh viên Nguyễn Triệu Vi và Trần Thành Đạt (Khóa K25, Khoa Công nghệ Thông tin, Trường Đại học Tôn Đức Thắng) thực hiện dưới sự hướng dẫn của TS. Nguyễn Chí Thiện nhằm giải quyết các thách thức trên.
Mục tiêu và nhiệm vụ nghiên cứu cụ thể bao gồm:
- Nghiên cứu cơ sở lý thuyết về khai thác tập phổ biến có trọng số (Frequent Weighted Itemsets - FWIs) và bài toán tìm kiếm Top-rank-$k$ tập phổ biến có trọng số.
- Xây dựng và đánh giá các thuật toán khai thác Top-rank-$k$ FWIs dựa trên các cấu trúc dữ liệu dạng danh sách giao dịch gồm Tidset (thuật toán TFWIT) và Diffset (thuật toán TFWID).
- Đề xuất cấu trúc danh sách nút có trọng số (WN-list) được trích xuất từ cây WN-tree để nén dữ liệu và phát triển thuật toán TFWIN.
- Tích hợp chiến lược cắt tỉa động sớm (early pruning strategy) vào thuật toán TFWIN để xây dựng thuật toán cải tiến TFWIN+, nhằm tối ưu hóa thời gian thực thi và mức độ tiêu thụ bộ nhớ.
- Cài đặt các thuật toán bằng ngôn ngữ Java và tiến hành thử nghiệm thực nghiệm để so sánh hiệu năng giữa các giải pháp.
Phạm vi nghiên cứu tập trung vào cơ sở dữ liệu giao dịch có gắn trọng số cho từng hạng mục (item weight), xác định các tập mục có thứ hạng trọng số hỗ trợ nằm trong nhóm $k$ mức cao nhất (Top-rank-$k$) mà không xét đến số lượng mua chi tiết của từng mục trong một giao dịch đơn lẻ.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình toán học
Mô hình khai thác tập phổ biến có trọng số trong đề tài được xây dựng trên các định nghĩa và công thức toán học xác thực:
- Cơ sở dữ liệu giao dịch có trọng số ($WD$): Gồm tập giao dịch $T = {t_1, t_2, \dots, t_m}$, tập hạng mục $I = {i_1, i_2, \dots, i_n}$ và tập trọng số tương ứng $W = {w_1, w_2, \dots, w_n}$, trong đó mỗi $w_i \in (0, 1]$ đại diện cho tầm quan trọng hoặc lợi nhuận của hạng mục $i$.
- Trọng số của một giao dịch ($tw$): Trọng số của giao dịch $t_k$ được tính bằng giá trị trung bình cộng của trọng số các hạng mục xuất hiện trong giao dịch đó:
$$tw(t_k) = \frac{\sum_{i \in t_k} w_i}{|t_k|}$$
- Tổng trọng số toàn bộ cơ sở dữ liệu ($TTW$):
$$TTW = \sum_{t_k \in T} tw(t_k)$$
- Độ hỗ trợ có trọng số của tập mục $X$ ($ws(X)$): Tỷ lệ giữa tổng trọng số của các giao dịch chứa tập mục $X$ (ký hiệu $t(X)$) trên tổng trọng số $TTW$:
$$ws(X) = \frac{\sum_{t \in t(X)} tw(t)}{TTW}$$
- Tập phổ biến có trọng số (FWI): Một tập mục $X \subseteq I$ được xem là một FWI nếu $ws(X) \ge minws$, với $minws$ là ngưỡng trọng số hỗ trợ tối thiểu.
- Thứ hạng của tập mục ($RX$): Rank của tập $X$ ($RX$) được định nghĩa bằng số lượng các giá trị trọng số hỗ trợ phân biệt của các tập mục khác lớn hơn hoặc bằng $ws(X)$. Tập $X$ thuộc nhóm Top-rank-$k$ nếu $RX \le k$.
Phương pháp nghiên cứu
Nghiên cứu áp dụng phương pháp thiết kế và phân tích thuật toán kết hợp với thực nghiệm kiểm chứng:
- Phương pháp phân tích lý thuyết: Phân tích độ phức tạp không gian và thời gian của các cấu trúc dữ liệu dạng danh sách (Tidset, Diffset, WN-list) và cơ chế sinh tập ứng viên theo lớp tương đương (equivalence class).
- Phương pháp thiết kế hệ thống và thuật toán: Phát triển mã giả, đặc tả giải thuật và xây dựng chiến lược cắt tỉa sớm dựa trên cận trên của độ hỗ trợ trọng số.
- Phương pháp thực nghiệm: Triển khai mã nguồn độc lập bằng ngôn ngữ lập trình Java, tiến hành chạy thử nghiệm trên cùng một tập dữ liệu chuẩn để đo lường hai chỉ số chính: thời gian thực thi (tính bằng mili-giây - ms) và bộ nhớ tiêu thụ cực đại (tính bằng Megabyte - MB).
Nội dung chính theo từng chương
Chương 1: Mở đầu
Chương này trình bày bối cảnh chuyển đổi số và sự gia tăng quy mô dữ liệu giao dịch trong thực tế. Tác giả phân tích hạn chế của các giải pháp khai thác tập phổ biến truyền thống khi áp dụng vào dữ liệu có trọng số, đồng thời xác lập mục tiêu nghiên cứu là phát triển các thuật toán khai thác Top-rank-$k$ tập phổ biến có trọng số (TFWIT, TFWID, TFWIN, TFWIN+) nhằm tối ưu hóa hiệu năng và giảm bớt số lượng mẫu dư thừa.
Chương 2: Tổng quan và cơ sở lý thuyết
Chương 2 hệ thống hóa các khái niệm nền tảng trong khai phá dữ liệu và khai phá luật kết hợp (Association Rules). Các thước đo cơ bản gồm Support ($\sigma$), Confidence ($Conf(X \to Y) = \frac{\sigma(X \cup Y)}{\sigma(X)}$), ngưỡng $minsup$ và $minconf$ được giải thích chi tiết kèm ví dụ minh họa từng bước sinh tập phổ biến theo thuật toán Apriori (từ tập 1-itemset $L_1$ đến 4-itemset $L_4$). Chương này cũng nêu ứng dụng thực tiễn của bài toán trong phân tích giỏ hàng, tiếp thị chéo và bố trí sản phẩm.
Chương 3: Frequent Weighted Itemset
Chương này tập trung xây dựng nền tảng toán học cho bài toán khai thác tập phổ biến có trọng số và bài toán xếp hạng Top-rank-$k$. Nội dung trình bày chi tiết cách thức tính toán trọng số giao dịch $tw(t_k)$, tổng trọng số $TTW$, độ hỗ trợ có trọng số $ws(X)$ và định nghĩa chính xác về Rank ($RX$). Tác giả đưa ra ví dụ minh họa bằng số liệu cụ thể gồm 5 giao dịch và 6 hạng mục ($i_1$ đến $i_6$) với vector trọng số tương ứng, chứng minh từng bước tính toán chỉ số $TTW = 1.82$ và $ws(i_4) = 0.73$.
Chương 4: Tidset and Diffset Structures for Mining FWIs
Chương 4 nghiên cứu việc áp dụng hai cấu trúc dữ liệu dạng dọc (vertical data formats) vào bài toán FWIs:
- Cấu trúc Tidset: Lưu danh sách các mã giao dịch chứa tập mục. Phép giao hai tập tiền tố chung $PX$ và $PY$ được xác định qua $t(PXY) = t(PX) \cap t(PY)$.
- Cấu trúc Diffset: Chỉ lưu sự khác biệt về mã giao dịch giữa hai tập mục $d(PXY) = d(PY) \setminus d(PX)$, giúp tiết kiệm bộ nhớ khi tập mục có độ dài lớn.
- Thuật toán TFWIT và TFWID: Đặc tả thuật toán và phương thức sinh ứng viên (
TFWIT_CandidateGen, TFWID_CandidateGen) kết hợp kỹ thuật duyệt theo lớp tương đương và sắp xếp danh sách ứng viên theo thứ tự tăng dần của $ws$.
Chương 5: WN-List Structure for Mining FWIs. Implement JAVA with TFWIN & TFWIN+
Chương này giới thiệu cấu trúc WN-tree và WN-list:
- WN-tree và WN-code: Cây WN-Tree được xây dựng từ tập dữ liệu có trọng số sau khi loại bỏ các mục không phổ biến. Mỗi nút trên cây được gán một bộ ba mã định danh $WN\text{-}code = (pre, post, weight)$, trong đó $pre$ và $post$ là thứ tự duyệt cây theo chiều trước và chiều sau, còn $weight$ là tổng $tw$ của các giao dịch đi qua nút đó.
- Cấu trúc WN-list: Danh sách các WN-code của một hạng mục sắp xếp tăng dần theo giá trị $pre$.
- Thuật toán TFWIN: Khai thác Top-rank-$k$ FWIs trực tiếp trên WN-list thông qua phép giao danh sách nút mà không cần duyệt lại cơ sở dữ liệu.
- Thuật toán TFWIN+: Tích hợp chiến lược cắt tỉa động sớm (early pruning) nhằm loại bỏ ngay các nhánh không thỏa mãn điều kiện lọt vào nhóm $k$ thứ hạng cao nhất trước khi sinh ứng viên mức cao hơn.
- Toàn bộ thuật toán được cài đặt hoàn chỉnh trên nền tảng Java.
Chương 6: Empirical Evaluation
Chương 6 trình bày các thử nghiệm thực nghiệm đối sánh hiệu năng giữa bốn thuật toán TFWIT, TFWID, TFWIN và TFWIN+ trên cùng điều kiện phần cứng và tập dữ liệu kiểm thử.
Thiết kế và triển khai thuật toán
Đồ án thiết kế và hiện thực hóa bốn giải thuật khai thác Top-rank-$k$ FWIs với các chiến lược xử lý dữ liệu khác nhau:
| Tiêu chí |
Thuật toán TFWIT |
Thuật toán TFWID |
Thuật toán TFWIN |
Thuật toán TFWIN+ |
| Cấu trúc dữ liệu cốt lõi |
Tidset (Tập ID giao dịch) |
Diffset (Tập hiệu số giao dịch) |
WN-tree & WN-list |
WN-tree & WN-list |
| Cơ chế tính độ hỗ trợ ($ws$) |
Giao tập $t(PXY) = t(PX) \cap t(PY)$ |
$ws(PXY) = ws(PX) - \frac{\sum tw(d)}{TTW}$ |
Giao WN-list dựa trên quan hệ tổ tiên-con cháu $(pre, post)$ |
Giao WN-list kết hợp kiểm tra cận trên trọng số |
| Chiến lược tối ưu hóa |
Duyệt lớp tương đương |
Nén biểu diễn giao dịch |
Nén cây tiền tố có trọng số |
Cắt tỉa nhánh sớm (Early Pruning) |
| Ngôn ngữ triển khai |
Java (hướng đối tượng) |
Java (hướng đối tượng) |
Java (hướng đối tượng) |
Java (hướng đối tượng) |
Quy trình thực thi chung của giải thuật khai thác Top-rank-k:
1. Đọc cơ sở dữ liệu có trọng số (WD) -> Tính trọng số từng giao dịch tw(t) và tổng TTW.
2. Xác định các 1-itemset phổ biến thỏa ngưỡng minws và sắp xếp danh sách.
3. Khởi tạo cấu trúc biểu diễn tương ứng (Tidset / Diffset / WN-list).
4. Duyệt không gian trạng thái theo cây tiền tố (Prefix Tree) kết hợp duy trì danh sách Top-rank-k tốt nhất.
5. Áp dụng chiến lược cắt tỉa (nâng ngưỡng động / cắt tỉa sớm trên WN-list).
6. Xuất tập hợp hoàn chỉnh các Top-rank-k FWIs.
Trong phần mã nguồn Java được công bố, các lớp cấu trúc dữ liệu như FWIset, TRset, FloatByRef cùng các hàm xử lý cốt lõi findFWIs, tfwitCandidateGeneration, tfwidCandidateGeneration và tidsetCombination/diffsetCombination được xây dựng chi tiết để quản lý danh sách thứ hạng và thực hiện cập nhật danh sách Top-$k$ theo thời gian thực.
Kết quả và đóng góp
Kết quả thực nghiệm
Kết quả ghi nhận từ nhật ký thực thi thực tế của chương trình trên tập dữ liệu kiểm thử (với tổng độ dài giao dịch sumTransLength = 118252.0) thể hiện sự khác biệt rõ rệt về hiệu năng:
| Thuật toán |
Thời gian thực thi (Total time) |
Bộ nhớ tiêu thụ cực đại (Max memory) |
| TFWIT (Tidset) |
3.254 ms |
32,99 MB |
| TFWID (Diffset) |
2.765 ms |
28,39 MB |
| TFWIN (WN-list) |
Đã cải thiện so với TFWID |
Đã cải thiện so với TFWID |
| TFWIN+ (WN-list + Early Pruning) |
Nhanh nhất trong các thuật toán |
Tiêu thụ bộ nhớ thấp nhất |
Các chỉ số thực nghiệm cho thấy:
- Thuật toán TFWID giảm thời gian chạy từ 3.254 ms xuống 2.765 ms (nhanh hơn ~15%) và giảm bộ nhớ từ 32,99 MB xuống 28,39 MB so với TFWIT nhờ việc lưu trữ Diffset thay vì toàn bộ Tidset.
- Cấu trúc WN-list trong TFWIN giúp nén dữ liệu hiệu quả hơn cấu trúc khuếch tán (diffset).
- Thuật toán TFWIN+ đạt hiệu quả cao nhất nhờ việc tích hợp chiến lược cắt tỉa sớm, loại bỏ triệt để các ứng viên không tiềm năng ngay từ các tầng trên của không gian tìm kiếm.
Đóng góp khoa học và kỹ thuật
- Mô hình hóa hoàn chỉnh bài toán: Đưa ra định nghĩa toán học rõ ràng về khái niệm Top-rank-$k$ trong môi trường dữ liệu có trọng số, giải quyết bài toán bùng nổ số lượng mẫu trong FIM truyền thống.
- Cải tiến cấu trúc dữ liệu: Mở rộng thành công cấu trúc N-list thành WN-list với việc gán nhãn $WN\text{-}code = (pre, post, weight)$, cho phép xác định quan hệ cha-con và tính toán trọng số hỗ trợ trực tiếp mà không cần duyệt lại cơ sở dữ liệu gốc.
- Đề xuất chiến lược cắt tỉa mới: Xây dựng cơ chế cắt tỉa sớm (Early Pruning Strategy) cho thuật toán TFWIN+, giảm thiểu đáng kể số lượng phép giao danh sách WN-list không cần thiết.
Hạn chế và hướng nghiên cứu tiếp
Theo nội dung đồ án, nghiên cứu còn một số điểm giới hạn:
- Phạm vi mô hình hóa: Đề tài tập trung vào trọng số cố định của từng hạng mục (item weight / item benefit) mà chưa tính đến số lượng xuất hiện (quantity) của từng mục trong mỗi giao dịch đơn lẻ (bài toán High Utility Itemset Mining - HUIM).
- Môi trường tính toán: Các thuật toán hiện tại được cài đặt tuần tự trên một máy tính đơn lập trình bằng Java, chưa khai thác mô hình xử lý phân tán hoặc tính toán song song đa luồng trên GPU/đa nhân.
- Loại hình dữ liệu: Nghiên cứu mới thử nghiệm trên cơ sở dữ liệu tĩnh, chưa mở rộng cho các luồng dữ liệu biến đổi liên tục theo thời gian (data stream).
Hướng nghiên cứu tiếp theo được tác giả định hướng bao gồm việc mở rộng giải thuật để xử lý dữ liệu động, tích hợp đại lượng số lượng sản phẩm vào bài toán khai thác mẫu hữu ích cao (Top-$k$ HUIM) và tối ưu hóa thêm cấu trúc cây WN-tree.
Giá trị tham khảo
Đồ án là tài liệu tham khảo có giá trị chuyên môn cao đối với:
- Sinh viên ngành Khoa học Máy tính, Kỹ thuật Phần mềm và Khoa học Dữ liệu: Tham khảo phương pháp biểu diễn dữ liệu nâng cao (Tidset, Diffset, N-list/WN-list), kỹ thuật sinh ứng viên theo lớp tương đương và kỹ thuật lập trình thuật toán trên Java.
- Học viên và nghiên cứu viên về Data Mining / KDD: Nắm bắt quy trình thiết kế và tối ưu hóa giải thuật khai phá mẫu có trọng số, kỹ thuật cắt tỉa không gian tìm kiếm và phương pháp thiết kế thực nghiệm đo lường hiệu năng.
- Kỹ sư phát triển hệ thống gợi ý và phân tích kinh doanh: Ứng dụng các thuật toán khai thác tập có trọng số vào bài toán phân tích hành vi khách hàng và tối ưu hóa danh mục sản phẩm dựa trên lợi nhuận thực tế.
Câu hỏi thường gặp
1. Trọng số của một giao dịch ($tw$) và độ hỗ trợ có trọng số ($ws$) được tính như thế nào trong đồ án?
Trọng số của một giao dịch $t_k$ được tính bằng trung bình cộng trọng số các hạng mục có trong giao dịch: $tw(t_k) = \frac{\sum_{i \in t_k} w_i}{|t_k|}$. Độ hỗ trợ có trọng số của tập mục $X$ ($ws(X)$) là tỷ lệ giữa tổng trọng số các giao dịch chứa $X$ chia cho tổng trọng số của toàn bộ cơ sở dữ liệu ($TTW$): $ws(X) = \frac{\sum_{t \in t(X)} tw(t)}{TTW}$.
2. Khái niệm Top-rank-$k$ khác với Top-$k$ thông thường như thế nào?
Trong khai thác Top-$k$ thông thường, thuật toán tìm kiếm đúng $k$ tập mục có giá trị đo lường cao nhất. Trong Top-rank-$k$, khái niệm Rank ($RX$) dựa trên số lượng các mức giá trị trọng số hỗ trợ phân biệt. Nếu nhiều tập mục có cùng độ hỗ trợ trọng số, chúng sẽ có cùng một thứ hạng và đều được giữ lại, đảm bảo không bỏ sót các mẫu có cùng mức độ quan trọng.
3. Cấu trúc WN-code của một nút trên cây WN-Tree gồm những thành phần nào?
Mỗi nút trên cây WN-Tree đại diện cho một hạng mục và được mã hóa bằng một bộ ba giá trị $WN\text{-}code = (pre, post, weight)$, trong đó $pre$ là số thứ tự duyệt cây theo thứ tự trước (pre-order), $post$ là số thứ tự duyệt cây theo thứ tự sau (post-order), và $weight$ là tổng trọng số giao dịch ($tw$) của các giao dịch đi qua nút đó.
4. Tại sao thuật toán TFWID lại tiết kiệm bộ nhớ và chạy nhanh hơn TFWIT?
TFWIT sử dụng cấu trúc Tidset để lưu trữ toàn bộ danh sách ID giao dịch chứa tập mục, dẫn đến chi phí bộ nhớ và thời gian tính toán phép giao tập lớn khi tập dữ liệu lớn. TFWID sử dụng Diffset, chỉ lưu trữ phần hiệu số (sự khác biệt) về ID giao dịch giữa hai tập mục kết hợp ($d(PXY) = d(PY) \setminus d(PX)$), từ đó kích thước lưu trữ giảm mạnh và việc tính toán $ws(PXY)$ được thực hiện nhanh hơn bằng phép trừ trực tiếp.
5. Kết quả thực nghiệm đã chứng minh thuật toán nào đạt hiệu năng tốt nhất?
Kết quả thực nghiệm trên tập dữ liệu mẫu khẳng định thuật toán TFWIN+ đạt hiệu năng cao nhất về cả tốc độ thực thi lẫn khả năng tối ưu hóa bộ nhớ, nhờ việc kết hợp cấu trúc nén WN-list với chiến lược cắt tỉa sớm (Early Pruning Strategy).
Kết luận
Đồ án của nhóm tác giả Nguyễn Triệu Vi và Trần Thành Đạt đã nghiên cứu và giải quyết bài toán khai thác Top-rank-$k$ tập phổ biến có trọng số thông qua việc phát triển hệ thống bốn thuật toán TFWIT, TFWID, TFWIN và TFWIN+. Nghiên cứu đã chứng minh sự vượt trội của cấu trúc dữ liệu WN-list kết hợp với chiến lược cắt tỉa động sớm trong việc giảm thiểu không gian tìm kiếm và nâng cao tốc độ xử lý dữ liệu có trọng số. Toàn bộ mã nguồn Java và kết quả thực nghiệm được trình bày rõ ràng, tạo cơ sở lý thuyết và thực tiễn vững chắc cho các nghiên cứu chuyên sâu tiếp theo trong lĩnh vực khai phá tri thức.