Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Khai thác tập phổ biến

Phạm vi Frequent Itemset Mining, nghiên cứu, cài đặt và đánh giá. Đồ án do các giảng viên thực hành hướng dẫn và duy trì, với sự đóng góp của Th.S Nguyễn Thị Thu Hằng, Th.S Nguyễn Ngọc Đức và Th.S Lê Nhựt Nam, thuộc Bộ môn Khoa học máy tính.

Mục tiêu đồ án

Khai thác tập phổ biến, Frequent Itemset Mining, viết tắt FIM, là nền tảng của nhiều bài toán khai phá dữ liệu quan trọng, từ luật kết hợp, association rules, phân tích giỏ hàng, market basket analysis, cho đến phát hiện mẫu trong dữ liệu sinh học và web. Đồ án này yêu cầu sinh viên chọn một thuật toán FIM cụ thể và tự cài đặt lại từ đầu dựa trên mô tả gốc của nó, qua đó chứng minh hiểu biết nền tảng và khả năng tối ưu hóa thực tế. Sau khi hoàn thành, sinh viên đạt được:

Lựa chọn thuật toán

Nguồn tham khảo

Sinh viên truy cập trang thư viện SPMF và chọn một thuật toán trong danh mục Frequent Itemset Mining:

https://www.philippe-fournier-viger.com/spmf/index.php?link=algorithms.php

Các thuật toán hợp lệ bao gồm, nhưng không giới hạn ở, các nhóm sau:

NhómThuật toán tiêu biểuĐộ khó
Tập phổ biến cơ bảnApriori, Apriori-TID, AprioriCloseTrung bình
Tập phổ biến dạng câyFP-Growth, FP-Growth*, HMine, Relim, SLPGrowthKhó
Tập phổ biến dạng thẳng đứngEclat, dEclat, VIPER, Index-BitTableFIKhó
Tập đóng, ClosedCharm, Charm-MFI, LCM, DCI_Closed, ZartRất khó
Tập tối đại, MaximalGenMax, MAFIA, FPMFIRất khó
Tập generatorApriori-Inverse, PascalKhó

Quy tắc lựa chọn

Nội dung báo cáo

Báo cáo được tổ chức thành 3 chương chính, mỗi chương tương ứng với một phần đánh giá riêng.

Chương 1: Cài đặt

Cài đặt lại từ đầu đòi hỏi nhóm đọc kỹ bài báo gốc, qua đó nắm chắc cấu trúc dữ liệu và cách thuật toán sinh ra kết quả. Theo đó, nhóm hoàn thành dần các bậc yêu cầu sau:

Chương 2: Thực nghiệm và đánh giá

Tập dữ liệu benchmark: sinh viên phải thực nghiệm trên ít nhất 4 tập dữ liệu benchmark phổ biến trong cộng đồng FIM. Các tập dữ liệu có thể tải tại trang SPMF Datasets hoặc FIMI Repository:

Tập dữ liệuSố giao dịchSố itemsChiều rộng trung bìnhĐặc điểm
Chess3.1967537.0Dày đặc, dense, itemset dài
Mushroom8.12411923.0Dày đặc, nhiều item
Retail88.16216.4710.3Thưa, sparse, thực tế
Accidents340.18346833.8Rất lớn, dày đặc
T10I4D100K100.00087010.1Tổng hợp, thưa

Các bản lưu trữ ổn định dùng lâu dài của dữ liệu benchmark được host trên Hugging Face hoặc Kaggle theo chính sách dữ liệu ở phần Tổ chức đồ án và nộp bài. Khi chuẩn bị thực nghiệm, ưu tiên dùng các bộ dữ liệu đã có sẵn công khai trên hai nền tảng này thay vì tự host dữ liệu mới, giúp nhóm giảm nhẹ phần công việc chuẩn bị.

Sinh viên phải thực hiện đầy đủ các thực nghiệm sau và trình bày bằng biểu đồ rõ ràng:

Với mỗi thực nghiệm, sinh viên trình bày số liệu kèm giải thích kết quả dựa trên mô tả thuật toán trong bài báo gốc và phân tích độ phức tạp của nhóm, để từ đó hiểu rõ hành vi của thuật toán trên từng loại dữ liệu, xác định điểm mạnh và điểm yếu của cài đặt so với SPMF, và đề xuất ít nhất 2 hướng tối ưu hóa cụ thể có thể áp dụng tiếp theo.

Chương 3: Ứng dụng thực tế

Sinh viên thực hiện hai ứng dụng, trong mỗi ứng dụng nhóm chọn 1 trong 2 hướng được cung cấp để thực hiện. Tất cả kết quả của hai ứng dụng đều phải thu được bằng chính cài đặt của nhóm, không dùng kết quả từ thư viện FIM có sẵn.

Mỗi ứng dụng bắt đầu từ quyết định biến đổi dữ liệu ban đầu thành giao dịch, một quyết định đòi hỏi nhóm phân tích xem cách trích xuất nào phù hợp nhất với thuật toán đã chọn. Phần chuyển đổi này được cài đặt cùng mã chuẩn bị dữ liệu trong notebook.

Ứng dụng 1, chọn 1 trong 2 hướng:

Ứng dụng 2, chọn 1 trong 2 hướng:

Yêu cầu kỹ thuật

Về mã nguồn:

Về báo cáo:

Tổ chức đồ án và nộp bài

Nhóm nộp duy nhất một link trên Moodle: link trỏ đến public GitHub repository của nhóm. Repository tổ chức theo cấu trúc gợi ý dưới đây, với thư mục Group_ID chính là repo root:

Cấu trúc thư mục gợi ý:

Group_ID/
├── README.md                 # thanh vien, huong dan chay, link Colab va tai nguyen
├── Project.toml              # Julia, hoac requirements.txt cho Python
├── src/
│   ├── algorithm/            # cai dat chinh
│   ├── structures.jl         # cau truc du lieu
│   └── utils.jl              # tien ich
├── tests/
│   ├── test_correctness.jl
│   └── test_benchmark.jl
├── data/
│   ├── toy/                  # CSDL nho de kiem thu nhanh
│   └── benchmark/            # CSDL benchmark, ban lon host tren Hugging Face hoac Kaggle
├── notebooks/
│   └── demo.ipynb            # demo notebook chay tren Google Colab
└── docs/
    └── Report.pdf            # bao cao, quy cach o muc Ve bao cao

Tiêu chí chấm điểm

Tiêu chíĐiểm
Chương 1: Cài đặt25% đến 30%
Kết quả đúng so với SPMF10%
Unit tests tự động đầy đủ5%
Tối ưu hóa có đo lường10% với Julia, 5% với Python
I/O chuẩn SPMF và tham số dòng lệnh5%
Chương 2: Thực nghiệm và đánh giá20%
Kiểm tra correctness trên benchmark5%
Biểu đồ thời gian, bộ nhớ, scalability10%
Phân tích và đề xuất tối ưu hóa5%
Chương 3: Ứng dụng thực tế50%
Ứng dụng 1, chọn 1 trong 2 hướng: giỏ hàng hoặc log hệ thống25%
Ứng dụng 2, chọn 1 trong 2 hướng: sinh học hoặc mẫu trực quan hình ảnh25%
Tổng tối đa95% đến 100%

Rubric chấm điểm Chương 1:

Rubric chấm điểm Chương 3: