Theo như tôi biết về sự phát triển của các thuật toán để giải quyết vấn đề Khai thác mẫu thường xuyên (FPM), con đường cải tiến có một số điểm kiểm tra chính. Đầu tiên, thuật toán Apriori được đề xuất vào năm 1993, bởi Agrawal et al. , cùng với việc chính thức hóa vấn đề. Thuật toán có thể loại bỏ một số bộ khỏi 2^n - 1
bộ (powerset) bằng cách sử dụng một mạng tinh thể để duy trì dữ liệu. Một nhược điểm của phương pháp này là cần phải đọc lại cơ sở dữ liệu để tính tần số của mỗi bộ được mở rộng.
Sau đó, vào năm 1997, Zaki et al. đề xuất thuật toán Eclat , trong đó chèn tần số kết quả của mỗi bộ bên trong mạng. Điều này được thực hiện bằng cách thêm vào, tại mỗi nút của mạng, tập hợp các id giao dịch có các mục từ gốc đến nút được đề cập. Đóng góp chính là người ta không phải đọc lại toàn bộ tập dữ liệu để biết tần số của từng bộ, nhưng bộ nhớ cần thiết để giữ cấu trúc dữ liệu đó được xây dựng có thể vượt quá kích thước của chính tập dữ liệu.
Năm 2000, Han et al. đề xuất một thuật toán có tên FPGrowth , cùng với cấu trúc dữ liệu cây tiền tố có tên là FPTree. Thuật toán có thể cung cấp khả năng nén dữ liệu đáng kể, đồng thời cho rằng chỉ có các mục thường xuyên mới được tạo ra (không có tạo mục ứng viên). Điều này được thực hiện chủ yếu bằng cách sắp xếp các mục của từng giao dịch theo thứ tự giảm dần, sao cho các mục thường xuyên nhất là các mục có ít sự lặp lại nhất trong cấu trúc dữ liệu cây. Do tần số chỉ giảm trong khi đi ngang qua cây sâu, thuật toán có thể loại bỏ các mục không thường xuyên.
Chỉnh sửa :
Theo tôi biết, đây có thể được coi là một thuật toán tiên tiến, nhưng tôi muốn biết về các giải pháp được đề xuất khác. Những thuật toán nào khác cho FPM được coi là "tiên tiến nhất"? Là gì trực giác / chính-sự đóng góp của các thuật toán như vậy?
Thuật toán FPGrowth vẫn được coi là "trạng thái của nghệ thuật" trong khai thác mẫu thường xuyên? Nếu không, thuật toán nào có thể trích xuất các mục thường xuyên từ các bộ dữ liệu lớn hiệu quả hơn?