Tải bản đầy đủ (.pdf) (77 trang)

Nghiên cứu thuật toán khai phá tập phổ biến eclat và các biến thể

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.59 MB, 77 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG

NGUYỄN THỊ HƯƠNG LÝ

NGHIÊN CỨU THUẬT TOÁN KHAI PHÁ
TẬP PHỔ BIẾN ECLAT VÀ CÁC BIẾN THỂ

LUẬN VĂN THẠC SĨ

KHÁNH HÒA - 2019


LỜI CAM ĐOAN
Tôi xin cam đoan mọi kết quả của đề tài: “Nghiên cứu thuật toán khai phá tập
phổ biến Eclat và các biến thể” là cơng trình nghiên cứu của cá nhân tôi và chưa từng
được công bố trong bất kỳ cơng trình khoa học nào khác cho tới thời điểm này.
Nha Trang, ngày 18 tháng 10 năm 2019
Tác giả luận văn

Nguyễn Thị Hương Lý

iii


LỜI CẢM ƠN
Trước hết, tôi muốn gửi lời cảm ơn đến quý phòng ban trong trường Đại học Nha
Trang, các thầy cơ giáo tham gia giảng dạy khóa cao học của chúng tôi và trong Khoa
Công nghệ Thông tin trường Đại học Nha Trang. Đặc biệt, tôi xin gửi lời cảm ơn sâu
sắc đến thầy TS. Nguyễn Đức Thuần - người đã dành nhiều thời gian định hướng, hướng
dẫn và tư vấn giúp tơi hồn thành luận văn.


Tiếp đến, tơi xin cảm ơn gia đình, bạn bè và đồng nghiệp đã luôn ủng hộ, động
viên để tôi nghiên cứu, thực nghiệm và hồn thành luận văn.
Trong q trình làm luận văn, bản thân tơi đã cố gắng tập trung tìm hiểu, nghiên
cứu thêm nhiều tài liệu liên quan, tuy nhiên luận văn có thể cịn những thiếu sót nhất
định. Tơi rất mong được nhận sự góp ý của các Thầy Cô giáo và bạn bè, đồng nghiệp về
luận văn và các kết quả nghiên cứu.
Tôi xin chân thành cảm ơn!
Nha Trang, ngày 18 tháng 10 năm 2019
Tác giả luận văn

Nguyễn Thị Hương Lý

iv


MỤC LỤC
Lời cam đoan ................................................................................................................. iii
Lời cảm ơn ..................................................................................................................... iv
Mục lục ............................................................................................................................v
Danh mục chữ viết tắt ................................................................................................... vii
Danh mục bảng ............................................................................................................ viii
Danh mục hình............................................................................................................... ix
Danh mục biểu đồ ............................................................................................................x
Trích yếu luận văn ......................................................................................................... xi
Mở đầu .............................................................................................................................1
Chương 1. KHAI PHÁ DỮ LIỆU VÀ KHAI PHÁ TẬP PHỔ BIẾN ............................2
1.1. Khai phá dữ liệu ....................................................................................................2
1.1.1. Khái niệm Khai phá dữ liệu ........................................................................................ 2
1.1.2. Kiến trúc điển hình của một hệ thống khai phá dữ liệu ....................................... 4
1.1.3. Một số kỹ thuật khai phá dữ liệu................................................................................ 5

1.2. Ứng dụng của khai phá dữ liệu .............................................................................6
1.3. Một số khó khăn trong khai phá dữ liệu ...............................................................6
1.4. Khai phá Luật kết hợp ...........................................................................................7
1.4.1. Giới thiệu và các khái niệm cơ bản ........................................................................... 7
1.4.2. Các phương pháp khai phá tập phổ biến và luật kết hợp................................... 10
1.5. Dàn các tập mục dữ liệu ......................................................................................11
1.6. Thuật toán vét cạn khai phá tập phổ biến............................................................12
1.7. Thuật toán Apriori ...............................................................................................13
1.8. Thuật toán FP-Growth.........................................................................................16
1.8.1. Thuật toán sinh cây FP-Tree từ CSDL giao tác ................................................... 16
1.8.2. Thuật toán FP-Growth ................................................................................................ 19
Kết luận chương 1 ......................................................................................................20
Chương 2. THUẬT TOÁN ECLAT VÀ CÁC BIẾN THỂ ..........................................21
2.1. Giới thiệu.............................................................................................................21
2.2. Biều diễn dữ liệu theo chiều ngang và theo chiều dọc........................................21
2.3. Thuật toán Eclat ..................................................................................................23
2.3.1. Sinh tập ứng viên.......................................................................................................... 23
2.3.2. Tính tốn độ hỗ trợ ...................................................................................................... 26
2.3.2. Mã giả thuật toán Eclat ............................................................................................... 27
v


2.4. Thuật toán dEclat ................................................................................................28
2.5. Thuật toán PostDiffset.........................................................................................31
2.6. Thuật toán BI-Eclat .............................................................................................32
Kết luận chương 2 ......................................................................................................35
Chương 3. KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN .....................................................36
3.1. Cài đặt chương trình và thực nghiệm ..................................................................36
3.2. Thực nghiệm và đánh giá ....................................................................................37
3.2.1. CSDL Chess .................................................................................................................. 37

3.2.2. CSDL Connect .............................................................................................................. 39
3.2.3. CSDL Mushrom ........................................................................................................... 40
3.2.4. CSDL Accidents ........................................................................................................... 42
3.2.5. CSDL T40I10D100K .................................................................................................. 44
3.2.6. CSDL Pumb................................................................................................................... 45
3.2.7. CSDL T10I4D100K .................................................................................................... 47
3.2.8. CSDL PUMSB_STAR ............................................................................................... 49
3.2.9. CSDL Retail .................................................................................................................. 50
3.2.10. CSDL Kosarak............................................................................................................ 52
Kết luận chương 3 ......................................................................................................53
Tài liệu tham khảo .........................................................................................................56
Phụ lục

vi


DANH MỤC CHỮ VIẾT TẮT
KDD

: Knowledge Discovery in Database (Phát hiện tri thức từ cơ sở dữ liệu)

CSDL

: Cơ sở dữ liệu

Item

: Mục dữ liệu

𝕀


: Itemset (Tập mục dữ liệu)

k-itemtset : tập gồm k mục dữ liệu
T

: Transaction (Giao tác)

𝔻

: Transaction Database (Cơ sở dữ liệu giao tác)

Supp

: support (Độ hỗ trợ)

R_supp

: Relative support (Độ hỗ trợ tương đối)

𝔽

: Frequent itemset (Tập mục phổ biến)

Min_supp : min support (Độ hỗ trợ tối thiểu do người dùng tự định nghĩa)
Conf

: Confidient (Độ tin cậy)

Min_conf : Min confidient (Ngưỡng tin cậy tối thiểu)

BFS

: Breadth – first search (Tìm kiếm theo chiều rộng)

DFS

: Depth – first search (Tìm kiếm theo chiều sâu)

FP-Tree

: Frequent Pattern Tree (Cấu trúc cây FP-tree)

FP-Growth : Frequent Pattern Growth (Thuật toán phát triển mẫu phổ biến)
Tid

: Transaction Identifer (Mã giao tác)

Tid set

: Transaction Indentifer set (Tập mã giao tác)

FIM

: Frequent Itemset Mining (Khai phá tập phổ biến)

vii


DANH MỤC BẢNG
Bảng 1.1. Ví dụ về một cơ sở dữ liệu giao tác ................................................................8

Bảng 3.1. Thông tin về các CSDL thực nghiệm............................................................36

viii


DANH MỤC HÌNH
Hình 1.1. Q trình phát hiện tri thức và khai phá dữ liệu ..............................................3
Hình 1.2. Kiến trúc điển hình của một hệ thống khai phá dữ liệu ..................................5
Hình 1.3. Minh họa dàn .................................................................................................12
Hình 2.1. Ví dụ biểu diễn theo chiều ngang (trái) và chiều dọc (phải) .........................22
Hình 2.2. Cây tìm kiếm của item cơ sở {a,b,c,d,e} .......................................................26
Hình 2.3. Minh họa khai tác tập thường xuyên với thuật toán Eclat.............................28
Hình 2.4. Minh họa tính diffset .....................................................................................29
Hình 2.5. Minh họa thuật tốn dEclat............................................................................31
Hình 3.1. Giao diện chương trình ..................................................................................36
Hình 3.2. Thống kê kết quả các lần thực nghiệm trên CSDL Chess............................. 37
Hình 3.3. Thống kê kết quả các lần thực nghiệm trên CSDL Connect .........................39
Hình 3.4.Thống kê kết quả các lần thực nghiệm trên CSDL Mushrom ........................41
Hình 3.5. Thống kê kết quả các lần thực nghiệm trên CSDL Accidents ......................43
Hình 3.6. Thống kê kết quả các lần thực nghiệm trên CSDL T40I10D100K ...............44
Hình 3.7. Thống kê kết quả các lần thực nghiệm trên CSDL Pumb .............................46
Hình 3.8. Thống kê kết quả các lần thực nghiệm trên CSDL T10I4D100K .................48
Hình 3.9. Thống kê kết quả các lần thực nghiệm trên CSDL Pumsb_star ....................49
Hình 3.10. Thống kê kết quả các lần thực nghiệm trên CSDL Retail ...........................51
Hình 3.11. Thống kê kết quả các lần thực nghiệm trên CSDL Kosarak .......................52

ix


DANH MỤC BIỂU ĐỒ

Biểu đồ 3.1. So sánh thời gian thực hiện của các thuật toán trên CDSL Chess ............38
Biểu đồ 3.2. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Chess .................38
Biểu đồ 3.3. So sánh thời gian thực hiện của các thuật toán trên CDSL Connect ........40
Biểu đồ 3.4. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Connect .............40
Biểu đồ 3.5. So sánh thời gian thực hiện của các thuật toán trên CDSL Mushrom ......41
Biểu đồ 3.6. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Mushrom ...........42
Biểu đồ 3.7. So sánh thời gian thực hiện của các thuật toán trên CDSL Accidents ....42
Biểu đồ 3.8. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Accidents ..........43
Biểu đồ 3.9. So sánh thời gian thực hiện của các thuật toán trên CDSL T40I10D100K
.......................................................................................................................................45
Biểu đồ 3.10. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL T40I10D100K .45
Biểu đồ 3.11. So sánh thời gian thực hiện của các thuật toán trên CDSL Pumsb.........46
Biểu đồ 3.12. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Pumb ...............47
Biểu đồ 3.13. So sánh thời gian thực hiện của các thuật toán trên CDSL T10I4D100K
.......................................................................................................................................47
Biểu đồ 3.14. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL T10I4D100K ...48
Biểu đồ 3.15. So sánh thời gian thực hiện của các thuật toán trên CDSL Pumsb_star .50
Biểu đồ 3.16. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Pumsb_star ......50
Biểu đồ 3.17. So sánh thời gian thực hiện của các thuật toán trên CDSL Retail ..........51
Biểu đồ 3.18. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Retail ...............52
Biểu đồ 3.19. So sánh thời gian thực hiện của các thuật toán trên CDSL Kosarak ......53
Biểu đồ 3.20. So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Kosarak ..........53

x


TRÍCH YẾU LUẬN VĂN

Trong khai phá dữ liệu, phát hiện luật kết hợp là một trong các kỹ thuật nhằm tìm
ra các tri thức tiềm ẩn trong kho dữ liệu lớn. Khai phá tập phổ biến là bài toán quan

trọng nhất trong khai phá luật kết hợp. Có nhiều thuật toán khai phá tập phổ biến đã ra
đời, các thuật tốn này có các ưu nhược điểm khác nhau. Luận văn này, chúng tơi trình
bày kết quả nghiên cứu và đánh giá thuật toán khai phá tập phổ biến Eclat và các biến
thể. Luận văn sử dụng phương pháp phân tích tổng hợp nhằm phân tích, tổng hợp các
bài báo liên quan đến lĩnh vực nghiên cứu, cài đặt, thử nghiệm và đán giá hiệu quả của
các thuật toán.
Để đánh giá hiệu quả của các thuật toán Eclat và các biến thể chúng tôi sử dụng 10
bộ cơ sở dữ liệu giao tác với các đặc tính khác nhau (số lượng giao tác, số lượng mục
dữ liệu quan tâm, thưa, dày) được lấy trên trang [23].
Những bộ này gồm: Chess, connect, mushroom, accidents, T40I10D100K, pumsb,
T10I4D100K, pumsb_star, retail và kosarak.
Với mỗi bộ, tùy theo đặc tính của nó mà chúng tôi chọn thử nghiệm độ hỗ trợ khác
nhau. Các thử nghiệm được thực hiện lần lượt trên các CSDL có mức độ thưa dần. Các
bộ CSDL có đặc điểm khác nhau. Kết quả thực nghiệm cho thấy Eclat và BI-Eclat hoạt
động tốt với cơ sở dữ liệu thưa, dEclat và postDiffset hoạt động tốt với cơ sở dữ liệu
dày.
Từ khóa: BI-Eclat; Eclat; dEclat; Khai phá tập phổ biến; postDiffset.

xi


MỞ ĐẦU
Khai phá dữ liệu là một lĩnh vực quan trọng của ngành Công nghệ thông tin. Đây
là lĩnh vực đã thu hút đông đảo các nhà khoa học trên thế giới và trong nước tham gia
nghiên cứu. Khai phá tập phổ biến trong cơ sở dữ liệu lớn là một kỹ thuật quan trọng
của khai phá dữ liệu. Ra đời vào năm 1993, xuất phát từ nhu cầu khai phá luật kết hợp
trong các cơ sở dữ liệu giao tác của các siêu thị, ngày nay khai phá tập phổ biến cịn
được sử dụng như là một cơng cụ hiệu quả để phát hiện các phụ thuộc hàm, các luật kết
hợp đa mức, ...
Khai phá tập phổ biến gặp khó khăn khi xử lý cơ sở dữ liệu lớn. Rất nhiều kết quả

nghiên cứu đã được công bố nhưng vấn đề khai phá tập phổ biến vẫn được coi là bài
tốn khó.
Eclat là một thuật tốn khai phá tập phổ biến được đề xuất bởi tác giả zaki năm
2000. Về cơ bản Eclat là thuật tốn tìm kiếm theo chiều sâu cũng như thuật toán PFGrowth. Eclat chỉ quét cơ sở dữ liệu một lần và nó sinh các tập mục ứng viên k mục dữ
liệu bằng cách tính giao của hai tập mục ứng viên k-1 mục dữ liệu nên sử dụng ít khơng
gian nhớ. Tuy nhiên, Eclat cũng gặp phải trở ngại với cơ sở dữ liệu mà mỗi giao tác có
nhiều hạng mục (item).
Với mục đích hiểu sâu vào lĩnh vực khai phá tập phổ biến này, cùng với đó là sự
gợi ý định hướng nghiên cứu của TS Nguyễn Đức Thuần. Tôi chọn đề tài “Nghiên cứu
thuật toán khai phá tập phổ biến Eclat và các biến thể”.
Luận văn chia làm 3 chương:
Chương 1. Tổng quan về khai phá tập phổ biến: Giới thiệu tổng quan về khai phá
tập phổ biến. Phân loại được hai giải thuật khai phá tập phổ biến theo chiều rộng
(Apriori) và chiều sâu (Eclat), từ đó chỉ ra được Eclat hay ở chỗ nào và tầm quan trọng
của nó. Sau đó sẽ đi điểm qua các thuật tốn khai phá tập phổ biến như Apriori, FPGrowth và Eclat.
Chương 2. Thuật tốn Eclat và các biến thể: phân tích thuật tốn Eclat, các thuật
toán Eclat biến thể như dEclat, PostDiffset, BI-Eclat.
Chương 3. Kết quả và hướng phát triển: Cài đặt, thực nghiệm và so sánh hiệu năng
của Eclat và các biến thể.
1


CHƯƠNG 1. KHAI PHÁ DỮ LIỆU VÀ KHAI PHÁ TẬP PHỔ BIẾN
1.1. Khai phá dữ liệu
1.1.1. Khái niệm Khai phá dữ liệu
Khai phá dữ liệu (Data Mining) ra đời vào những năm cuối của thập kỷ 1980, nó
là q trình khám phá thơng tin ẩn được tìm thấy trong các cơ sở dữ liệu. Khai phá dữ
liệu là một bước quan trọng trong quá trình khám phá tri thức từ cơ sở dữ liệu, các tri
thức này hỗ trợ trong việc ra quyết định trong lĩnh vực ngân hàng, kinh doanh và khoa
học, …

Giáo sư Tom Mitchell [1] đã đưa ra định nghĩa của Khai phá dữ liệu như sau:
“Khai phá dữ liệu là việc sử dụng dữ liệu lịch sử để khám phá những qui tắc và cải thiện
những quyết định trong tương lai”. Với một cách tiếp cận ứng dụng hơn, Tiến sĩ Fayyad
[2] đã phát biểu: “Khai phá dữ liệu, thường được xem là việc khám phá tri thức trong
các cơ sở dữ liệu, là một quá trình trích xuất những thơng tin ẩn, trước đây chưa biết và
có khả năng hữu ích, dưới dạng các qui luật, ràng buộc, qui tắc trong cơ sở dữ liệu.” hay
nói cách khác “Khai phá dữ liệu – Data Mining là tiến trình khám phá tri thức tiềm ẩn
trong các cơ sở dữ liệu. Cụ thể hơn, đó là tiến trình trích lọc, sản sinh những tri thức
hoặc các mẫu tiềm ẩn, chưa biết nhưng hữu ích từ cơ sở dữ liệu lớn” [3].
Nói tóm lại, Khai phá dữ liệu là một quá trình học tri thức mới từ những dữ liệu
đã thu thập được [4] - [5].
Chức năng khai phá dữ liệu gồm có gộp nhóm, phân nhóm, dự báo, dự đốn và
phân tích các liên kết. Năm 1989, Fayyad, Smyth và Piatestsky-Shapiro đã dùng khái
niệm Phát hiện tri thức từ cơ sở dữ liệu (Knowledge Discovery in Database-KDD),
trong đó, khai phá dữ liệu là một giai đoạn rất quan trọng trong tồn bộ q trình, nó sử
dụng các kỹ thuật để tìm ra các mẫu được quan tâm từ dữ liệu. Có thể coi khai phá dữ
liệu là cốt lõi của quá trình phát hiện tri thức.
Quá trình khai phá dữ liệu sẽ tiến hành qua 6 giai đoạn như hình 1.1 ở trang bên:

2


Hình 1.1. Quá trình phát hiện tri thức và khai phá dữ liệu

Bắt đầu của quá trình là kho dữ liệu thô và kết thúc với tri thức được chiết xuất
ra. Về lý thuyết thì có vẻ rất đơn giản nhưng thực sự đây là một q trình rất khó khăn
gặp phải rất nhiều vướng mắc như: quản lý các tập dữ liệu, phải lặp đi lặp lại toàn bộ
quá trình.
Gom dữ liệu: Tập hợp dữ liệu là bước đầu tiên trong quá trình khai phá dữ liệu.
Đây là bước được khai thác trong một cơ sở dữ liệu, một kho dữ liệu và thậm chí các dữ

liệu từ các nguồn ứng dụng Web.
Lựa chọn dữ liệu: Ở giai đoạn này dữ liệu được lựa chọn hoặc phân chia theo một
số tiêu chuẩn nào đó, ví dụ chọn tất cả những người có tuổi đời từ 25 – 35 và có trình
độ đại học.
Làm sạch, tiền xử lý và chuẩn bị trước dữ liệu: Đây là giai đoạn hay bị sao lãng,
nhưng thực tế nó là một bước rất quan trọng trong quá trình khai phá dữ liệu. Một số
lỗi thường mắc phải trong khi gom dữ liệu là tính khơng đủ chặt chẽ, logíc. Vì vậy, dữ
liệu thường chứa các giá trị vơ nghĩa và khơng có khả năng kết nối dữ liệu. Ví dụ: năm
sinh = 300. Giai đoạn này sẽ tiến hành xử lý những dạng dữ liệu khơng chặt chẽ nói trên.
Những dữ liệu dạng này được xem như thơng tin dư thừa và khơng có ý nghĩa sử dụng.
3


Bởi vậy, đây là một quá trình rất quan trọng vì dữ liệu này nếu khơng được “làm sạch tiền xử lý - chuẩn bị trước” thì sẽ gây nên những kết quả sai lệch nghiêm trọng. Quá
trình này bao gồm cả việc xử lý với dữ liệu nhiễu (noisy data), dữ liệu không đầy đủ
(incomplete data), .v.v.
Chuyển đổi dữ liệu: Các dữ liệu được chuyển đổi sang các dạng phù hợp cho q
trình xử lý.
Phát hiện và trích mẫu dữ liệu: Đây là một trong các bước quan trọng nhất, ở
công đoạn này nhiều phương pháp khác nhau đã được dùng để trích ra các mẫu từ dữ
liệu. Thuật toán thường dùng là nguyên tắc phân loại, nguyên tắc kết hợp hoặc các mơ
hình dữ liệu tuần tự, …
Đánh giá kết quả mẫu: Ở đây các mẫu dữ liệu được trích xuất ra bởi phần mềm
khai thác dữ liệu. Cần chú ý rằng, không phải bất cứ mẫu dữ liệu nào cũng đều có giá
trị sử dụng, đơi khi nó cịn bị sai lệch. Do đó, cần phải quan tâm hơn đến những tiêu
chuẩn đánh giá để tìm ra các tri thức.
1.1.2. Kiến trúc điển hình của một hệ thống khai phá dữ liệu
Từ mô tả chi tiết các giai đoạn trong q trình khai phá dữ liệu có thể biểu diễn
một kiến trúc điển hình của một hệ thống khai phá dữ liệu một cách trực quan như hình
1.2.

Máy chủ cơ sở dữ liệu: có trách nhiệm lấy dữ liệu phù hợp dựa trên những yêu cầu
khai phá của người sử dụng.
Cơ sở tri thức: Đây là miền tri thức được dùng để tìm kiếm hay đánh giá độ quan
trọng của các hình mẫu kết quả.
Máy khai phá dữ liệu: Một hệ thống khai phá dữ liệu cần phải có một tập các
module chức năng để thực hiện cơng việc, chẳng hạn như đặc trưng hóa, kết hợp, phân
lớp, phân cụm, phân tích sự tiến hố…
Module đánh giá mẫu: Thành phần này sẽ tương tác với các module khai phá dữ
liệu để tập trung vào việc quét không gian tìm kiếm để tìm các mẫu đáng được quan
tâm. Đơi khi có thể module đánh giá mẫu được tích hợp cùng với module khai phá tùy
theo sự cài đặt của thuật toán khai phá được sử dụng.

4


Giao diện tương tác người sử dụng: Thông qua màn hình giao tiếp này, người sử
dụng tương tác với hệ thống bằng cách đưa ra các yêu cầu khai phá hay một nhiệm vụ,
cung cấp thông tin trợ giúp cho việc tìm kiếm và thực hiện khai phá thăm dị trên các
kết quả khai phá trung gian.

Hình 1.2. Kiến trúc điển hình của một hệ thống khai phá dữ liệu

1.1.3. Một số kỹ thuật khai phá dữ liệu
Các kĩ thuật khai phá dữ liệu thường được chia thành 2 nhóm chính [6] là kỹ thuật
khai phá dữ liệu mơ tả và kỹ thuật khai phá dữ liệu dự đoán.
Kĩ thuật khai phá dữ liệu mơ tả: có nhiệm vụ mơ tả về các tính chất hoặc các đặc
tính chung của dữ liệu trong CSDL hiện có. Các kĩ thuật này gồm có: phân cụm
(clustering), tóm tắt (summarization), trực quan hóa (visualization), phân tích sự phát
triển và độ lệch (Evolution and deviation analysis), phát hiện luật kết hợp (association
rules), ...

Kĩ thuật khai phá dữ liệu dự đốn: có nhiệm vụ đưa ra các dự đoán dựa vào các
suy diễn trên dữ liệu hiện thời. Các kĩ thuật này gồm có: phân lớp (classification), hồi
quy (regression), ...

5


1.2. Ứng dụng của khai phá dữ liệu
Khai phá dữ liệu được vận dụng trong nhiều lĩnh vực khác nhau nhằm khai thác
nguồn dữ liệu phong phú được lưu trữ trong các hệ thống thông tin. Tùy theo bản chất
của từng lĩnh vực, việc vận dụng khai phá dữ liệu có những cách tiếp cận khác nhau.
Ngân hàng: Xây dựng mơ hình dự báo rủi ro tín dụng. Tìm kiếm tri thức, quy luật
của thị trường chứng khoán và đầu tư bất động sản.
Thương mại điện tử: Tìm hiểu, định hướng thúc đẩy, giao tiếp với khách hàng.
Phân tích hành vi mua sắm trên mạng và cho biết thông tin tiếp thị phù hợp với nhiều
loại khách hàng.
Marketing: Phân tích nhu cầu khách hàng dựa trên mẫu dữ liệu mua bán hàng
từ đó xác định chiến lược kinh doanh, quảng cáo, kế hoạch sản xuất, … Khai phá dữ
liệu cũng được vận dụng hiệu quả để giải quyết các bài tốn phức tạp trong các ngành
địi hỏi kỹ thuật cao như tìm kiếm mỏ dầu từ ảnh viễn thám, cảnh báo hỏng hóc trong
các hệ thống sản xuất, … Các kỹ thuật Khai phá dữ liệu đã được áp dụng thành cơng
trong việc dự đốn tải sử dụng điện năng cho các công ty cung cấp điện, lưu lượng viễn
thông cho các công ty điện thoại, mức độ tiêu thụ sản phẩm cho các nhà sản xuất, giá trị
của sản phẩm trên thị trường cho các cơng ty tài chính, …
Ngồi ra, Khai phá dữ liệu cịn được áp dụng cho các vấn đề xã hội như phân tích
các kết quả phòng chống và điều trị một số loại bệnh, phân tích tác hại của ma tuý, phát
hiện tội phạm hay tăng cường an ninh xã hội, ... Việc vận dụng thành công đã mang lại
những hiệu quả thiết thực cho các hoạt động diễn ra hàng ngày trong đời sống.
1.3. Một số khó khăn trong khai phá dữ liệu
- Cơ sở dữ liệu lớn: Các tập dữ liệu cần xử lý trong khai phá dữ liệu thường có

kích thước cực kỳ lớn về cả số lượng các bản ghi và số lượng các thuộc tính. Trong thực
tế, kích thước của các tập dữ liệu trong khai phá dữ liệu thường ở mức tera-byte. Với
kích thước như thế, thời gian xử lý thường rất dài. Mặc dù kích thước bộ nhớ trong của
máy tính đã gia tăng đáng kể trong thời gian gần đây, việc gia tăng này cũng không thể
đáp ứng kịp với việc tăng kích thước dữ liệu. Vì vậy, việc vận dụng các kỹ thuật xác
suất, lấy mẫu, đệm, song song, … vào các giải thuật để tạo ra các phiên bản phù hợp với
yêu cầu của khai phá dữ liệu trở nên ngày càng quan trọng.
6


- Dữ liệu thiếu và nhiễu: Mức độ nhiễu cao trong dữ liệu điều này dẫn đến việc dự
đoán thiếu chính xác.
- Vấn đề “quá phù hợp” (Overfitting): Khi thuật tốn khai phá tìm kiếm với các
tham số tốt nhất cho một mơ hình đặc biệt và một giới hạn của tập dữ liệu. Mơ hình đó
có thể “Q phù hợp” trên tập dữ liệu đó nhưng lại thi hành khơng chính xác trên tập
dữ liệu kiểm tra.
- Sự thay đổi của dữ liệu và tri thức: Dữ liệu là khơng tĩnh, dữ liệu thay đổi nhanh
chóng có thể dẫn đến những tri thức đã khai phá trước đây trở nên khơng cịn phù hợp
thậm chí là vơ giá trị.
- Đánh giá các mẫu dữ liệu tìm được: Nhiều mẫu phát hiện khơng thực sự hữu ích
với người sử dụng và thách thức với các hệ khai phá dữ liệu.
- Làm việc với các dữ liệu quan hệ phức tạp: Do các hệ cơ sở dữ liệu quan hệ được
sử dụng rộng rãi nên vấn đề làm tốt với các hệ cơ sở dữ liệu này là vấn đề cần quan tâm
đối với các hệ khai phá dữ liệu.
- Khai phá thông tin trong các hệ cơ sở dữ liệu hỗn hợp và hệ thống thơng tin tồn
cầu: Với sự ra đời của mạng máy tính, dữ liệu có thể được thu thập từ nhiều nguồn khác
nhau với định dạng khác nhau với số lượng rất lớn. Việc phát hiện tri thức từ các dạng
dữ liệu hỗn hợp này là một thách thức đối với khai phá dữ liệu.
1.4. Khai phá Luật kết hợp
1.4.1. Giới thiệu và các khái niệm cơ bản

Mục đích của bài tốn phát hiện luật kết hợp là tìm ra mối quan hệ giữa những tập
mục dữ liệu trong các CSDL lớn và các mối quan hệ này là có ích trong hỗ trợ quyết
định. Luật kết hợp là dạng khá đơn giản chỉ ra các hạng mục hay cùng xuất hiện trong
các giao tác. Tìm các luật kết hợp mang nhiều thông tin từ cơ sở dữ liệu giao tác là một
trong những hướng tiếp cận chính của lĩnh vực khai phá dữ liệu. Ví dụ, trong CSDL siêu
thị, việc phát hiện được quan hệ “78% số khách hàng mua sữa và đường cũng mua bơ”
sẽ rất có ích cho kinh doanh, chẳng hạn quyết định số lượng nhập các mặt hàng này hoặc
bố trí chúng tại các ngăn hàng liền kề nhau, hay trong CSDL dân số, quan hệ “60%
người lao động ở độ tuổi trung niên có thu nhập thấp hơn mức bình qn” sẽ rất có ích
cho việc điều chỉnh chính sách thu nhập [7] [8] [9].
7


Khái niệm luật kết hợp và phát hiện luật kết hợp được Rakesh Agrawal và các cộng
sự đề xuất lần đầu tiên vào năm 1993 [8], nhằm phát hiện các mẫu có giá trị trong CSDL
giao tác tại siêu thị [10]. Dưới đây là các khái niệm cơ bản:
-

Mục dữ liệu (item): phần tử, mẫu, đối tượng đang được quan tâm.
Ví dụ 1.1: Đối tượng được quan tâm: Sữa, Trứng, Bánh mì, đường, …

-

Tập hạng mục (itemset): Giả sử 𝕀 = {𝑖1 , 𝑖2 , … , 𝑖𝑛 } là một tập hữu hạn, mỗi
phần tử 𝑖𝑘 là một hạng mục. Một tập 𝑋 ⊆ 𝕀 được gọi là một tập hạng mục, nếu
𝑋 có 𝑘 mục (𝑘 ≤ 𝑛), tức |𝑋| = 𝑘 thì 𝑋 được gọi là 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 .
Ví dụ 1.2: Tập các mặt hàng thực phẩm trong siêu thị 𝕀 = {𝑠ữ𝑎, 𝑡𝑟ứ𝑛𝑔,

𝑏á𝑛ℎ 𝑚ì, đườ𝑛𝑔, 𝑚ậ𝑡 𝑜𝑛𝑔, 𝑚ứ𝑡, 𝑏ơ, 𝑡ℎị𝑡 𝑏ò, 𝑔𝑖á , … },


𝑋 = {𝐵á𝑛ℎ 𝑚ì, 𝐵ơ, 𝑆ữ𝑎} là

một tập 3 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡.
-

Giao tác (Transaction): Lần thực hiện tương tác với hệ thống (ví dụ: giao tác
“khách hàng mua hàng”), thể hiện bởi tập 𝑻 gồm các mục dữ liệu được giao
tác.

-

Cơ sở dữ liệu giao tác (Transaction Database): Cơ sở dữ liệu gồm 𝑚 giao
tác, có thể ký hiệu như sau: 𝔻 = {𝑇1 , 𝑇2 , … 𝑇𝑚 }, mỗi giao tác 𝑇𝑖 ∈ 𝔻 là một tập
mục dữ liệu, tức là 𝑇𝑖 ⊆ 𝕀. Mỗi giao tác có một định danh duy nhất (Transaction
Identifier - Tid).
Ví dụ 1.3: Tập tất cả các mục: 𝕀 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸 }. Cơ sở dữ liệu giao tác: 𝔻 =

{𝑇1 , 𝑇2 , 𝑇3 , 𝑇4 , 𝑇5 , 𝑇6 }, cụ thể
Bảng 1.1. Ví dụ về một cơ sở dữ liệu giao tác

Định danh giao tác

Tập mục dữ liệu

T1

A, B, D, E

T2


B, C, E

T3

A, B, D, E

T4

A, B, C, E

T5

A, B, C, D, E

T6

B, C, D
8


-

Độ hỗ trợ (support) của tập mục: Cho tập mục 𝑋 ⊆ 𝕀, độ hỗ trợ của 𝑋, ký hiệu
là 𝑠𝑢𝑝𝑝(𝑋, 𝔻) là số lượng giao tác trong 𝔻 có chứa 𝑋.

-

Độ hỗ trợ tương đối (Relative support) của tập mục: độ hỗ trợ tương đối của
𝑋, ký hiệu là 𝑅_𝑠𝑢𝑝𝑝(𝑋, 𝔻) là tỉ lệ số giao tác trong 𝔻 có chứa 𝑋 với số giao
tác của 𝔻.

𝑅_𝑠𝑢𝑝𝑝(𝑋, 𝔻) =

𝑠𝑢𝑝𝑝(𝑋, 𝔻)
|𝔻|

(có thể coi Độ hỗ trợ tương đối chỉ mức độ “phổ biến xảy ra” của mẫu)
-

Tập phổ biến (Frequent itemset): Một tập mục 𝑋 được gọi là tập phổ biến
trong 𝔻 nếu độ hỗ trợ của 𝑋 lớn hơn hoặc bằng ngưỡng hỗ trợ tối thiểu – gọi
là min_supp (được định nghĩa trước bởi người dùng) ngược lại thì 𝑋 được gọi
là tập khơng phổ biến (small itemset).
Ví dụ 1.4: Cho cơ sở dữ liệu giao tác như bảng 1.1, min_supp =3, ký hiệu 𝔽 là

tập tất cả các tập phổ biến, 𝔽𝑘 là tập tất cả các tập phổ biến độ dài 𝑘, khi này ta có:
𝐴, 𝐵, 𝐶, 𝐷, 𝐸,
𝐴𝐵, 𝐴𝐷, 𝐴𝐸, 𝐵𝐶, 𝐵𝐷, 𝐵𝐸, 𝐶𝐸, 𝐷𝐸,
✓ 𝔽={
}
𝐴𝐵𝐷, 𝐴𝐵𝐸, 𝐴𝐷𝐸, 𝐵𝐶𝐸, 𝐵𝐷𝐸,
𝐴𝐵𝐷𝐸
✓ 𝔽1 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸 }
✓ 𝔽2 = {𝐴𝐵, 𝐴𝐷, 𝐴𝐸, 𝐵𝐶, 𝐵𝐷, 𝐵𝐸, 𝐶𝐸, 𝐷𝐸 }
✓ 𝔽3 = {𝐴𝐵𝐷, 𝐴𝐵𝐸, 𝐴𝐷𝐸, 𝐵𝐶𝐸, 𝐵𝐷𝐸 }
✓ 𝔽4 = {𝐴𝐵𝐷𝐸 }
-

Sự kết hợp (Association) và Luật kết hợp (association rule):
o


Sự kết hợp: các mục dữ liệu cùng xuất hiện với nhau trong một hay nhiều
giao dịch. Thể hiện mối liên hệ giữa các mục dữ liệu / các tập mục dữ liệu.

o

Luật kết hợp: qui tắc kết hợp có điều kiện giữa các tập mục dữ liệu, thể
hiện mối liên hệ (có điều kiện) giữa chúng. Một luật kết hợp là một cơng
thức có dạng 𝑋 → 𝑌 trong đó 𝑋, 𝑌 là itemset (𝑋 ⊂ 𝕀, 𝑌 ⊂ 𝕀) thỏa 𝑋 ∩ 𝑌 =
∅, 𝑋 được gọi là tiền đề và 𝑌 được gọi là hệ quả của luật.

9


-

Độ hỗ trợ của luật kết hợp: Độ hỗ trợ của một luật 𝑋 → 𝑌 xác định trên giao
tác 𝑇, ký hiệu là 𝑠𝑢𝑝𝑝(𝑋 → 𝑌, 𝔻) là khả năng mà tập giao tác 𝑇 hỗ trợ cho các
thuộc tính trong cả 𝑋 và 𝑌.
𝑠𝑢𝑝𝑝(𝑋 → 𝑌, 𝔻) =

-

𝑠𝑢𝑝𝑝(𝑋 ∪ 𝑌, 𝔻)
|𝔻|

Độ tin cậy của luật kết luật Độ tin cậy của một luật 𝑋 → 𝑌, ký hiệu là
𝑐𝑜𝑛𝑓(𝑋 → 𝑌, 𝔻) là xác suất có điều kiện 𝑃(𝑌|𝑋).
𝑐𝑜𝑛𝑓(𝑋 → 𝑌, 𝔻) =

𝑠𝑢𝑝𝑝(𝑋 ∪ 𝑌, 𝔻)

𝑠𝑢𝑝𝑝(𝑋, 𝔻)

Ví dụ 1.5: Cho cơ sở dữ liệu giao tác như bảng 1.1, xét luật {𝐵, 𝐶 } → {𝐸 } viết
gọn 𝐵𝐶 → 𝐸, ta có:
𝑠𝑢𝑝𝑝(𝐵𝐶 → 𝐸, 𝔻) = 𝑠𝑢𝑝𝑝(𝐵𝐶𝐸, 𝔻) = 3
𝑐𝑜𝑛𝑓(𝐵𝐶 → 𝐸, 𝔻) =
-

𝑠𝑢𝑝𝑝(𝐵𝐶𝐸, 𝔻) 3
= = 0.75 (75%)
𝑠𝑢𝑝𝑝(𝐵𝐶, 𝔻)
4

Luật kết hợp hợp lệ: Một luật kết hợp hợp lệ là một luật kết hợp mà với cặp
hệ số 𝑚𝑖𝑛_𝑠𝑢𝑝𝑝, 𝑚𝑖𝑛_𝑐𝑜𝑛𝑓 do người dùng cho trước: 0 ≤ 𝑚𝑖𝑛_𝑠𝑢𝑝𝑝 ≤ 1 và
0 ≤ 𝑚𝑖𝑛_𝑐𝑜𝑛𝑓 ≤ 1 thì luật phải thỏa các điều kiện sau:
𝑠𝑢𝑝𝑝(𝑋 → 𝑌, 𝔻) ≥ min _sup và 𝑐𝑜𝑛𝑓(𝐵𝐶 → 𝐸, 𝔻) ≥ min _𝑐𝑜𝑛𝑓

Chú ý: Trong một số tài liệu, các tác giả biểu diễn độ hỗ trợ, độ tin cậy theo tỉ lệ
phần trăm.
1.4.2. Các phương pháp khai phá tập phổ biến và luật kết hợp
Bài toán khai phá luật kết hợp trên một cơ sở dữ liệu được chia thành hai bài toán
nhỏ như sau:
Bài toán 1: Khai phá tất cả các tập mục phổ biến từ cơ sở dữ liệu 𝔻 với ngưỡng
hỗ trợ tối thiểu min_supp.
Bài toán 2: Sinh tất cả các luật mạnh từ các tập phổ biến được khai phá ở bài toán
1 với ngưỡng tin cậy tối thiểu min_conf, Luật mạnh là luật đáp ứng ràng buộc về độ hỗ
trợ và độ tin cậy.

10



Trong 2 bài tốn này, bài tốn 1 có độ phức tạp tính tốn cao hơn và thường chiếm
phần lớn thời gian khai phá luật kết hợp. Với 𝑛 mục dữ liệu quan tâm, có tối đa 2𝑛 − 1
tập con (khơng kêt tập rỗng) có thể là luật kết hợp phổ biến, vì vậy thuật tốn u cần
cần duyệt hết khơng gian tìm kiếm (dàn các tập mục dữ liệu) này để tìm ra các luật. Ví
dụ với 𝕀 = {𝑖1 , 𝑖2 , … , 𝑖100 }, chúng ta có 2100 − 1 ≈ 1,27 ∗ 1030 tập con, việc duyệt hết
số lượng tập con này rõ ràng là rất tốn thời gian. Vì vậy đã có nhiều nghiên cứu và thuật
toán ra đời nhằm giải quyết bài tốn này theo cách hiệu quả nhất.
Có nhiều thuật tốn để khai phá tập phổ biến như: Vét cạn, Apriori, FP-Growth,
Eclat, .... Ngoài ra phát hiện luật kết hợp dựa vào lý thuyết tập thô (rough set), tập mờ
(fuzzy set) cho dữ liệu không đầy đủ cũng là hướng nghiên cứu được nhiều tác giả quan
tâm [11]. Mục tiếp sau sẽ giới thiệu khái quát một số thuật toán và các vấn đề liên quan.
1.5. Dàn các tập mục dữ liệu
Cho tập các mục dữ liệu 𝕀 = {𝑖1 , 𝑖2 , … , 𝑖𝑛 }, với tập hợp này chúng ta có 2|𝕀| = 2𝑛
tập mục (bao gồm cả tập rỗng). Các tập mục được kết nối với nhau thành một dàn các
tập mục (itemset lattice), trong đó tập mục 𝑋 và 𝑌 được nối với nhau trên dàn nếu và chỉ
nếu 𝑋 là tập con trực tiếp của 𝑌, nghĩa là 𝑋 ⊆ 𝑌 và |𝑌| = |𝑋| + 1. Dàn các tập mục cho
biết quan hệ giữa tất cả các tập mục con có thể có của 𝕀. Một số tài liệu coi đây là khơng
gian tìm kiếm tập phổ biến.
Ví dụ, với tập các mục 𝕀 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸 }, chúng ta có dàn bao gồm 25=32 tập mục
bao gồm cả tập rỗng và chính nó.

11


Hình 1.3. Minh họa dàn

Các tập mục trên dàn có thể được duyệt theo chiều rộng (Breadth – first search BFS) hoặc duyệt theo chiều sâu (Depth – first search -DFS).
Duyệt theo chiều rộng là duyệt theo kích thước 𝑘 của các tập mục ứng viên trên

dàn lần lượt từ kích thước 1, 2, … Một thuật tốn tiêu biểu cho tiếp cận này là thuật toán
Apriori [12].
Duyệt theo chiều sâu là duyệt xong các tập ứng viên liên quan với một tập mục
phổ biến mới chuyển sang xem xét đối với tập mục phổ biến cùng kích thước khác. Hai
thuật tốn điển hình theo cách tiếp cận này là: FP-Growth [13] , Eclat [14].
1.6. Thuật toán vét cạn khai phá tập phổ biến
Thuật toán tiếp cận theo hướng xem mỗi nút 𝑋 trên dàn là ứng viên cho một tập
mục phổ biến, sau đó tính tốn độ hỗ trợ của mỗi ứng viên bởi việc duyệt qua tất cả các
giao tác trong CSDL. Có thể mã hóa thuật tốn theo mã giả như sau:

12


1: procedure B RU TE F O RCE (𝔻 = {𝑇1 , 𝑇2 , … , 𝑇𝑚 }, 𝕀 = {𝑥1 , 𝑥2 , … , 𝑥𝑛 }, 𝑚𝑖𝑛𝑠𝑢𝑝)
2:
Khởi tạo tập các tập phổ biến: 𝔽 ← ∅;
3:
for each 𝑋 ⊆ 𝕀 do
4:
sup(𝑋, 𝔻) ← ComputeSuport(𝑋, 𝔻);
5:
if sup(𝑋, 𝔻) ≥ 𝑚𝑖𝑛𝑠𝑢𝑝 then
6:
𝔽 ← 𝔽 ∪ {𝑋};
7:
end if
8:
end for
9:
return 𝔽;

10: end procedure
1:
2:
3:
4:
5:
6:
7:
8:
9:

porcedure C OMP UTE S UP PORT ((𝑋, 𝔻 = {𝑇1 , 𝑇2 , … , 𝑇𝑚 })
Khởi tạo: sup(𝑋, 𝔻) ← 0;
for each 𝑇 ∈ 𝔻 do
if 𝑋 ⊆ 𝑇 then
sup(𝑋, 𝔻) ← sup(𝑋, 𝔻) + 1;
end if
end for
return sup(𝑋, 𝔻);
end procedure

Nhận xét:
- Thuật tốn tính tốn độ hỗ trợ (ComputeSupport) có độ phức tạp tính tốn lớn
𝑂( |𝕀|. |𝔻| )
- Vì có 2| 𝕀 | tập con của 𝕀 nên thuật tốn BruteForce có độ phức tạp tính toán là
𝑂( |𝕀|. |𝔻|. 2| 𝕀 | ).
- Độ phức tạp vào ra (I/O complexity) cũng là 𝑂(2| 𝕀 | ) quét cơ sở dữ liệu giao dịch.
- Phải duyệt hết tồn bộ khơng gian các tập mục trên dàn.
- Kiểm tra rất nhiều ứng viên khơng có tiểm năng là tập phổ biến.
1.7. Thuật toán Apriori

Thuật toán do Agrawal đề nghị năm 1994 [12], ý tưởng của thuật toán dựa và tính
chất Apriori (dùng tri thức biết trước prior knowlegde về đặc điểm của các tập mục phổ
biến) để quyết định việc có kiểm tra tiếp ứng viên (𝑘 + 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 hay không nhằm
loại bỏ sớm các ứng viên không tiềm năng. Các ứng viên (𝑘 + 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 có độ hỗ
trợ ≥ min _𝑠𝑢𝑝𝑝 phải được sinh ra từ các 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 có độ hỗ trợ ≥ min _𝑠𝑢𝑝𝑝.
Tích chất Apriori được phát biểu như sau [11]:
- Mọi tập con của một tập phổ biến đều phổ biến, nghĩa là:
∀ 𝑌 ⊆ 𝑋, nếu 𝑠𝑢𝑝𝑝(𝑋) ≥ min _𝑠𝑢𝑝𝑝 ⇒ 𝑠𝑢𝑝𝑝(𝑌) ≥ min _𝑠𝑢𝑝𝑝
13


- Mọi tập mẹ của tập không phổ biến đều không phổ biến, nghĩa là:
∀ 𝑌 ⊇ 𝑋, nếu 𝑠𝑢𝑝𝑝(𝑋) ≤ min _𝑠𝑢𝑝𝑝 ⇒ 𝑠𝑢𝑝𝑝(𝑌) ≤ min _𝑠𝑢𝑝𝑝
Mã giả thuật toán Apriori cụ thể như sau:
1: procedure A PRIORI (𝔻 = {𝑇1 , 𝑇2 , … , 𝑇𝑚 }, 𝕀 = {𝑥1 , 𝑥2 , … , 𝑥𝑛 }, 𝑚𝑖𝑛𝑠𝑢𝑝)
2:
Khởi tạo tập các tập phổ biến: 𝔽 ← ∅;
3:
𝔽(1) ← FindFrequent1Itemsets(𝔻, 𝕀, 𝑚𝑖𝑛𝑠𝑢𝑝);
4:
for (𝑘 = 2; 𝔽(𝑘−1) ≠ ∅; 𝑘 + +) do
5:
ℂ(𝑘) ← Apriori(𝔽(𝑘−1) );
6:
for (each transaction 𝑇 ∈ 𝔻) do
7:
ℂ 𝑇 ← SubsetOfT(ℂ(𝑘) , 𝑇);
8:
for (each 𝐶 ∈ ℂ 𝑇 ) do
9:

𝐶. 𝑐𝑜𝑢𝑛𝑡 + +;
10:
end for
11:
end for
12:
𝔽(𝑘) ← { 𝐶 ∈ ℂ(𝑘) |𝐶. 𝑐𝑜𝑢𝑛𝑡 ≥ 𝑚𝑖𝑛𝑠𝑢𝑝};
13: end for
14: 𝔽 ← 𝔽(1) ∪ 𝔽(2) ∪ … ∪ 𝔽(𝑘) ;
15: return 𝔽;
16: end procedure

Trong đó:
-

Hàm FindFrequent1itemsets trả về các 1-Itemset có số support lớn hơn hay bằng
minsup.
1: for all transaction 𝑡 ∈ 𝔻 do
2:
for all item 𝑖 ∈ 𝑡 do
3:
𝑖. 𝑐𝑜𝑢𝑛𝑡 + +;
4: 𝐿1 = {𝑖|𝑖. 𝑐𝑜𝑢𝑛𝑡 ≥ 𝑚𝑖𝑛𝑠𝑢𝑝};

-

Hàm Apriori_Gen (𝐿𝑘−1 ) thực hiện việc kết các cặp (k-1)-ItemSet để phát sinh
các tập k-ItemSet mới. Tham số của hàm là 𝕃𝑘−1 – tập tất cả các (k-1)-ItemSet và
kết quả trả về của hàm là tập các k-ItemSet (gọi là tập ứng viên 𝐶𝑘 ).


14


1: procedure APRIORIGEN (𝔽(𝑘−1) )
2:
Khởi tạo tập các mục ứng viên: ℂ(𝑘) ← ∅;
3:
for (each itemset 𝐹1 ∈ 𝔽(𝑘−1) ) do
4:
for(each itemset 𝐹2 ∈ 𝔽(𝑘−1) ) do
5:
if(𝐹1 [1] = 𝐹2 [1] ∧ … ∧ 𝐹1 [𝑘 − 2] = 𝐹2 [𝑘 − 2] ∧ 𝐹1 [𝑘 − 1] < 𝐹2 [𝑘 − 1] then
6:
𝐶 ← 𝐹1 ⋈ 𝐹2 ;
7:
if (HasInfrequentSubset(𝐶, 𝔽(𝑘−1) )) then
8:
remove 𝐶;
9:
else
10:
ℂ(𝑘) ← ℂ(𝑘) ∪ {𝐶};
11:
end if
12:
end if
13:
end for
14:
end for

15:
return ℂ(𝑘) ;
16: end procedure

1: procedure HASINFREQUENTSUBSET(𝐶, 𝔽(𝑘−1) )
2:
for (each (𝑘 − 1) −subset 𝑆 of 𝐶 do
3:
if(𝑆 ∉ 𝐹 (𝑘−1) ) then
4:
return TRUE;
5:
end if
6:
end for
7:
return FALSE;
8: end procedure

Nhận xét:
-

Thuật tốn có ưu điểm và nhờ vào các tính chất Apriori để cắt tỉa nhiều nhánh
trên dàn giảm bớt đáng kể việc sinh các tập mục ứng viên và kiểm tra tính phổ
biến của các tập ứng viên đó.

-

Tuy vậy, thuật tốn vẫn cịn sinh ra một số lượng lớn các tập ứng viên. Ví dụ nếu
có 104 tập mục phổ biến gồm 1 mục dữ diệu (1-itemsets), thuật tốn cần sinh ra

hơn 107 tập ứng viên có 2 mục dữ liệu (2-itemsets).

-

Và cần quét cơ sở dữ liệu nhiều lần để tính độ hỗ trợ của các tập ứng viên trong
q trình thực hiện thuật tốn.

15


×