Trong thực tế khó có thể tìm được luật kết hợp mạnh trong các mục dữ liệu ở mức trừu tượng gốc, bởi tính thưa thớt của dữ liệu trong không gian đa chiều.. Nhìn chung các thuật toán đều s
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2Mục lục
Lời cảm ơn 6
MỞ ĐẦU 7
1 Chương 1: Tổng quan về khai phá dữ liệu (KPDL) 9
1.1 Khái niệm 9
1.2 Các hướng tiếp cận chính trong KPDL 10
1.3 Một số phương pháp KPDL phổ biến 10
1.3.1 Phương pháp suy diễn và quy nạp 10
1.3.2 Cây quyết định và luật 10
1.3.3 Phát hiện các luật kết hợp 11
1.3.4 Phân nhóm và phân đoạn 11
1.3.5 Mạng Neural 12
1.3.6 Giải thuật di truyền 12
1.4 Lựa chọn các kỹ thuật khai phá 13
1.5 Các dạng CSDL thường được sử dụng để KPDL 14
1.6 Một số ứng dụng của KPDL 14
2 Chương 2: Một số vấn đề cơ bản về Luật kết hợp 16
2.1 Định nghĩa luật kết hợp 16
2.1.1 Ví dụ về luật kết hợp 16
2.1.2 Các định nghĩa và tính chất 16
2.1.2.1 Các định nghĩa cơ bản 16
2.1.2.2 Một số tính chất của tập mục phổ biến 19
2.1.2.3 Một số tính chất của luật kết hợp 19
2.2 Các loại luật kết hợp và hướng tiếp cận 20
2.2.1 Luật kết hợp nhị phân 20
2.2.2 Luật kết hợp định lượng 20
2.2.2.1 Giới thiệu 20
2.2.2.2 Khai phá luật kết hợp định lượng 20
2.2.3 Luật kết hợp đơn chiều 22
2.2.4 Luật kết hợp đa chiều 22
2.2.5 Luật kết hợp đa mức 22
2.2.5.1 Giới thiệu 22
2.2.5.2 Khai phá luật kết hợp đa mức 24
2.2.6 Luật kết hợp với thuộc tính có trọng số 27
2.2.7 Luật kết hợp mờ 27
2.2.8 Luật kết hợp đóng 27
Trang 33 Chương 3: Một số phương pháp KPDL sinh luật kết hợp 29
3.1 Thuật toán Apriori 29
3.1.1 Giới thiệu 29
3.1.2 Thuật toán 33
3.1.3 Nâng cao hiệu quả của thuật toán Apriori 35
3.1.3.1 Sử dụng kỹ thuật băm 35
3.1.3.2 Rút gọn số giao dịch sau mỗi lần quét CSDL 37
3.1.3.3 Phân hoạch (Partitioning) 37
3.1.3.4 Lấy mẫu (Sampling) 38
3.1.4 Sinh luật kết hợp từ tập mục phổ biến 39
3.1.4.1 Thuật toán đơn giản sinh luật kết hợp từ tập mục phổ biến 39
3.1.4.2 Thuật toán nhanh hơn sinh luật kết hợp từ tập mục phổ biến 40
3.2 Thuật toán FP-Growth 42
3.2.1 Giới thiệu 42
3.2.2 Thuật toán 47
3.2.3 Tổng kết 49
3.3 Thuật toán Charm 50
3.3.1 Giới thiệu 50
3.3.1.1 Một số khái niệm 50
3.3.1.2 Toán tử đóng và tập đóng 52
3.3.1.3 Cây tìm kiếm “tập mục – tập định danh” và Lớp tương đương 53
3.3.2 Thuật toán 56
3.3.3 Sinh luật kết hợp từ tập mục đóng phổ biến 59
3.3.4 Tổng kết 60
3.4 Thuật toán Closet 63
3.4.1 Giới thiệu 63
3.4.2 Thuật toán 67
3.4.3 Tổng kết 68
4 Chương 4: Xây dựng ứng dụng minh hoạ 70
4.1 Giới thiệu 70
4.2 Phân tích và Thiết kế hệ thống 71
4.3 Cài đặt và Đánh giá 79
KẾT LUẬN 80
Danh sách tài liệu tham khảo tiếng Việt 82
Danh sách tài liệu tham khảo tiếng Anh 82
Danh sách WebSites tham khảo 83
Phụ lục (Mã nguồn chương trình) 83
Trang 4Ký hiệu và Từ viết tắt
Stt Ký hiệu viết tắt Nghĩa tiếng Việt Nghĩa tiếng Anh
2 HQTCSDL Hệ quản trị cơ sở dữ liệu Database Management System
Trang 5Danh sách các bảng trong luận văn
Bảng 2.1: Ví dụ một CSDL giao dịch .17
Bảng 2.2: Ví dụ về các tập mục phổ biến .17
Bảng 2.3: Các luật kết hợp được sinh từ tập mục phổ biến ACW 19
Bảng 2.4: Dữ liệu điều tra dân số .21
Bảng 2.5: Danh sách thuộc tính sau khi rời rạc hoá .22
Bảng 2.6: Ví dụ CSDL giao dịch bán hàng .23
Bảng 3.1: Ký hiệu mô tả trong thuật toán Apriori .30
Bảng 3.2: Cơ sở dữ liệu minh hoạ thuật toán Apriori .31
Bảng 3.3: Thuật toán Apriori .34
Bảng 3.4: Thủ tục Apriori_Gen .34
Bảng 3.5: Thủ tục Has_Infrequent_Subset .35
Bảng 3.6: Thủ tục tính tích luỹ độ hỗ trợ của các ứng cử là tập con của giao dịch t .37
Bảng 3.7: Thuật toán đơn giản sinh luật kết hợp từ tập mục phổ biến .40
Bảng 3.8: Thủ tục GenRules .40
Bảng 3.9: Thuật toán nhanh hơn sinh luật kết hợp từ tập mục phổ biến .40
Bảng 3.10: Thủ tục Ap_GenRules .41
Bảng 3.11: Cơ sở dữ liệu minh hoạ thuật toán FP-Growth .43
Bảng 3.12: Mô tả cây FP-tree .43
Bảng 3.13: Kết quả khai phá dữ liệu bởi thuật toán FP-Growth .46
Bảng 3.14: Thủ tục thêm 1 tập mục vào FP-tree .47
Bảng 3.15: Thủ tục tạo cây FP-tree T từ CSDL D .47
Bảng 3.16: Thủ tục tạo CSDL phụ thuộc mẫu từ cây T .48
Bảng 3.17: Thủ tục FP_Growth .48
Bảng 3.18: Cơ sở dữ liệu minh hoạ thuật toán Charm .51
Bảng 3.19: Mô tả cây IT-tree .54
Bảng 3.20: Thuật toán Charm .56
Bảng 3.21: Thủ tục Charm_Extend .57
Bảng 3.22: Thủ tục Charm_Property .57
Bảng 3.23: Thủ tục Subsumption_Check .58
Bảng 3.24: Thủ tục GenAllClosedRules .60
Bảng 3.25: Cơ sở dữ liệu minh hoạ thuật toán Closet .63
Bảng 3.26: Thủ tục ClosetMining .67
Bảng 3.27: Thủ tục Closet .67
Bảng 4.1: Cấu trúc file dữ liệu RawDataFile .70
Bảng 4.2: Cấu trúc file dữ liệu StandardData .72
Bảng 4.3: Cấu trúc file ItemMap .73
Trang 6Bảng 4.4: Cấu trúc file DirectData .73
Bảng 4.5: Cấu trúc file DirectItemsets .73
Bảng 4.6: Cấu trúc file StandardItemsets .73
Bảng 4.7: Cấu trúc file DirectRules .74
Bảng 4.8: Cấu trúc file StandardRules .74
Bảng 4.9: Cấu trúc file ActualRules .74
Bảng 4.10: Cấu trúc file CompareInfo .75
Danh sách các hình vẽ trong luận văn Hình 1.1: Các bước trong quá trình KDD 9
Hình 2.1: Sự phân cấp mức độ trừu tượng của dữ liệu .23
Hình 2.2: Khai phá luật kết hợp đa mức với minsup giống nhau tại các mức .24
Hình 2.3: Khai phá luật kết hợp đa mức với minsup giảm dần .25
Hình 2.4: Khai phá luật kết hợp đa mức với minsup giảm dần kết hợp lọc .25
Hình 2.5: Khai phá luật kết hợp đa mức với minsup giảm dần kết hợp lọc k-mục .26
Hình 3.1: Minh hoạ thuật toán Apriori .32
Hình 3.2: Minh hoạ cây băm (Hash tree) .36
Hình 3.3: Sơ đồ khai phá bằng phân hoạch dữ liệu .38
Hình 3.4: Minh hoạ xây dựng cây FP-tree .45
Hình 3.5: So sánh FP-Growth và Apriori .49
Hình 3.6: Cây IT-tree (Itemset-Tidset Search Tree) .54
Hình 3.7: Minh hoạ thuật toán Charm .58
Hình 3.8: So sánh Charm với Apriori, Close, Pascal, Mafia và Closet .61
Hình 3.9: Minh hoạ thuật toán Closet .64
Hình 3.10: So sánh Closet với A-Close và Charm .68
Hình 4.1: Mô hình quan hệ CSDL đơn hàng thực tế .70
Hình 4.2: Sơ đồ luồng dữ liệu trường hợp dùng thuật toán cụ thể .71
Hình 4.3: Sơ đồ luồng dữ liệu trường hợp so sánh các thuật toán .72
Hình 4.4: Màn hình nhập liệu dạng Text .76
Hình 4.5: Màn hình nhập liệu dạng Grid (Visual) .76
Hình 4.6: Màn hình tiến trình thực hiện khai phá dữ liệu .77
Hình 4.7: Màn hình tiến trình so sánh các giải thuật .77
Hình 4.8: Màn hình kết quả khai phá dữ liệu dạng Text .78
Hình 4.9: Màn hình kết quả khai phá dữ liệu dạng Grid (Visual) .78
Trang 7MỞ ĐẦU
Ngày nay với một Hệ quản trị cơ sở dữ liệu (HQTCSDL) mạnh, các doanh nghiệp có thể dễ dàng tổ chức, lưu trữ hàng triệu hồ sơ khách hàng, hợp đồng, số liệu kinh doanh, công văn, chứng từ, tài liệu, cũng như khai thác chúng một cách có hiệu quả Có thể nói rằng với ngôn ngữ truy vấn SQL, các HQTCSDL ngày nay có thể đáp ứng được khoảng 80% nhu cầu khai thác thông tin của con người Tuy nhiên, chỉ có một chuyên viên phân tích thị trường đầy kinh nghiệm mới có thể đưa ra được những kết luận đại loại như:
“Khách hàng ở độ tuổi 18-22 khi mua hoa và quà lưu niệm thường mua thêm thiệp” hay
“Khi giá dầu thô tăng đột biến thì chỉ số chứng khoán giảm” Vấn đề đặt ra là liệu máy
tính có thể tự phát hiện ra được các kết luận như thế sau khi phân tích một khối lượng lớn
dữ liệu hay không? Câu trả lời là hoàn toàn có thể
Trong một vài thập niên gần đây, Khai phá dữ liệu (KPDL) đã trở thành một trong những hướng nghiên cứu chính trong lĩnh vực khoa học máy tính và công nghệ tri thức Trong quá trình phát triển đó với hàng loạt nghiên cứu, đề xuất được thử nghiệm và ứng dụng thành công vào đời sống, đã chứng tỏ rằng KPDL là một lĩnh vực nghiên cứu ổn định, có nền tảng lý thuyết vững chắc KPDL bao hàm rất nhiều hướng tiếp cận Các kỹ thuật chính được áp dụng trong lĩnh vực này phần lớn được thừa kế từ lĩnh vực cơ sở dữ liệu (CSDL), máy học (Machine Learning), trí tuệ nhân tạo (AI – Artificial Intelligence),
lý thuyết thông tin, xác xuất thống kê và tính toán hiệu năng cao (High performance computing) Các bài toàn chủ yếu trong KPDL là khai phá luật kết hợp (Association rules mining), phân lớp/dự đoán (Classification/Prediction), phân cụm (Clustering), khai phá chuỗi (Sequence mining), … Lĩnh vực này là điểm hội tụ và giao thoa của nhiều lĩnh vực khác nhau KPDL đã và đang được ứng dụng thành công trong thương mại, tài chính & thị trường chứng khoán, sinh học, y học, giáo dục, viễn thông, …
Khai phá luật kết hợp là một nội dung quan trọng trong KPDL được đề xuất lần đầu
tiên năm 1993 thậm chí có chuyên gia đã khẳng định Phát hiện luật kết hợp là mục tiêu cơ
bản của lĩnh vực khai phá dữ liệu [002] Vì đây là một lĩnh vực nghiên cứu có nhiều triển
vọng, nên tôi đã chọn Một số phương pháp khai phá dữ liệu sinh luật kết hợp làm đề tài
cho luận văn của mình Luận văn được xây dựng dựa trên nền của một số nghiên cứu chính yếu trong lĩnh vực khai phá luật kết hợp trong những năm gần đây
Trang 8Luận văn được tổ chức thành 4 chương:
Chương 1: Tổng quan về Khai phá dữ liệu
Trình bày những nét khái quát nhất về KPDL, các hướng tiếp cận, phương pháp và các ứng dụng
Chương 2: Một số vấn đề cơ bản về Luật kết hợp
Trình bày các vấn đề chung, cơ bản nhất về Luật kết hợp, các hướng tiếp cận và các vấn đề liên quan
Chương 3: Một số phương pháp khai phá dữ liệu sinh luật kết hợp
Trình bày các phương pháp, giải thuật cơ bản khai phá luật kết hợp từ dữ liệu như Apriori, FP-Growth, Charm và Closet
Chương 4: Xây dựng ứng dụng minh hoạ
Triển khai các giải thuật khai phá luật kết hợp trình bày trong Chương 3 và áp dụng vào CSDL đơn hàng thực tế và so sánh chúng với nhau
Trang 91 Chương 1: Tổng quan về khai phá dữ liệu (KPDL)
1.1 Khái niệm
KPDL (Data Mining) là quá trình tìm kiếm, phát hiện các tri thức tiềm ẩn và hữu dụng trong CDSL nhất định Trong đó tri thức được ngầm hiểu là các thông tin mang tính chất quy luật và hữu ích đối với người sử dụng
KPDL là bước quan trọng nhất trong quá trình Khai phá tri thức (KDD – Knowledge Discovery in Database) - gồm 5 bước như sau [006]:
+ Thu thập dữ liệu (Data colection): là bước thu thập, trích chọn những tập dữ liệu cần
được khai phá từ các tập dữ liệu lớn (Databases, Data marts, Data warehouses, Data repositories) ban đầu theo một số tiêu chí nhất định
+ Tiền xử lý dữ liệu (Data preprocessing): là bước làm sạch dữ liệu (xử lý với dữ liệu
không đầy đủ, dữ liệu nhiễu, dữ liệu không nhất quán, …), rút gọn dữ liệu (sử dụng hàm nhóm và tính tổng, các phương pháp nén dữ liệu, sử dụng histograms, lấy mẫu, …), rời rạc hoá dữ liệu (rời rạc hoá dựa vào histograms, entropy, phân khoảng, …) Sau bước này,
dữ liệu sẽ nhất quán, đầy đủ, được rút gọn, và được rời rạc hóa
+ Biến đổi dữ liệu (Data Transformation): đây là bước chuẩn hoá và làm mịn dữ liệu
để đưa dữ liệu về dạng thuận lợi nhất nhằm phục vụ cho các kỹ thuật khai phá ở bước sau
+ KPDL (Data mining): đây là bước áp dụng những kỹ thuật phân tích (phần nhiều là
các kỹ thuật của máy học) nhằm để khai phá dữ liệu, trích chọn được những mẫu thông tin, những mối liên hệ đặc biệt trong dữ liệu Đây được xem là bước quan trọng nhất và tốn nhiều thời gian nhất của toàn quá trình KDD
+ Đánh giá và biểu diễn tri thức (Knowledge presentation and evaluation): chuyển
hoặc biểu diễn những mẫu thông tin và mối liên hệ trong dữ liệu đã được khám phá ở bước trên về một dạng gần gũi với người sử dụng như đồ thị, cây, bảng biểu, luật, … Đồng thời bước này cũng đánh giá những tri thức khám phá được theo những tiêu chí nhất định
Hình 1.1: Các bước trong quá trình KDD
Đánh giá và Biểu diễn TT
Biến đổi DL
Khai phá DL Tri thức
Trang 101.2 Các hướng tiếp cận chính trong KPDL
Các hướng tiếp cận trong KPDL có thể được phân chia theo chức năng hay lớp các bài toán khác nhau, dưới đây là một số hướng tiếp cận chính:
+ Phân lớp và Dự đoán (Classification and Prediction): xếp một đối tượng vào một
trong những lớp đã biết trước Ví dụ: phân lớp các bệnh nhân theo dữ liệu trong hồ sơ bệnh án Hướng tiếp cận này thường sử dụng một số kỹ thuật của học máy như cây quyết định (Decision tree), mạng nơron nhân tạo (Neural network), … Phân lớp và dự đoán còn được gọi là học có giám sát (Supervised learning)
+ Khai phá luật kết hợp (Association rules mining): khai phá các tri thức dạng luật kết hợp Ví dụ: “60% nam giới vào siêu thị nếu mua bia thì có tới 80% trong số họ sẽ mua
thêm đậu phộng” Luật kết hợp được ứng dụng nhiều trong lĩnh vực kinh doanh, y học,
tin-sinh, tài chính và thị trường chứng khoán, …
+ Phân tích chuỗi theo thời gian (Sequential/Temporal patterns): tương tự như khai
phá luật kết hợp nhưng có thêm tính thứ tự và tính thời gian Phương pháp này được ứng dụng nhiều trong lĩnh vực tài chính và thị trường chứng khoán vì nó có tính dự báo cao
+ Phân cụm (Clustering/Segmentation): xếp các đối tượng theo từng cụm dữ liệu tự
nhiên Phân cụm còn được gọi là học không giám sát (Unsupervised learning)
+ Mô tả khái niệm (Concept description and summarization): thiên về mô tả, tổng hợp
và tóm tắt khái niệm Ví dụ: tóm tắt văn bản
1.3 Một số phương pháp KPDL phổ biến
1.3.1 Phương pháp suy diễn và quy nạp
+ Phương pháp suy diễn: Rút ra thông tin là kết quả logic từ các thông tin nằm trong
CSDL dựa trên các quan hệ trong dữ liệu Phương pháp suy diễn dựa trên các sự kiện chính xác để suy ra các tri thức mới từ các thông tin cũ Mẫu chiết suất được bằng cách sử dụng phương pháp này thường là các luật suy diễn
+ Phương pháp quy nạp: Các thông tin được suy ra từ CSDL bằng cách nó tự tìm
kiếm, tạo mẫu và sinh ra tri thức chứ không bắt đầu với các tri thức đã biết trước
1.3.2 Cây quyết định và luật
+ Cây quyết định: Cây quyết định là một phương pháp mô tả tri thức dạng đơn giản
nhằm phân các đối tượng dữ liệu thành một số lớp nhất định Các nút trong của cây được gán nhãn là tên các thuộc tính, các cạnh được gán các giá trị có thể của các thuộc tính, các
lá miêu tả các lớp khác nhau Các đối tượng được phân lớp theo các đường đi trên cây, qua các cạnh tương ứng với giá trị của các thuộc tính của đối tượng tới lá
Trang 11+ Tạo luật: Các luật được tạo ra nhằm suy diễn cho một số mẫu dữ liệu có ý nghĩa về
mặt thống kê Các luật có dạng nếu P thì Q, trong đó P là mệnh đề đúng với một phần dữ liệu trong CSDL và Q là mệnh đề dự đoán Ví dụ: Ta có mẫu phát hiện được bằng phương
pháp tạo luật “Nếu mỗi năm cứ tăng vốn lưu động thêm 20% và vốn cố định tăng 10% thì
lợi nhuận trước thuế tăng 25%”
Cây quyết định là phương pháp dùng trong các bài toán phân loại dữ liệu theo một tiêu chuẩn nào đó dựa trên mức độ khác nhau của thuộc tính Cây quyết định và luật có ưu điểm là hình thức miêu tả đơn giản, mô hình suy diễn khá dễ hiểu đối với người sử dụng Tuy nhiên, giới hạn của nó là miêu tả cây và luật chỉ có thể biểu diễn được một số dạng chức năng và vì vậy giới hạn cả về độ chính xác của mô hình
Cho một lược đồ R = {A 1 , A 2 , …, A p } với các thuộc tính có miền giá trị {0, 1} và một
quan hệ r trên R Cho W R, đặt s(W, r) là tần số xuất hiện của W trong r được tính bằng
tỉ lệ của các hàng trong r có giá trị 1 tại mỗi cột Ta định nghĩa một luật kết hợp trên quan
hệ r: X => B với X R và B R\X với độ hỗ trợ (tần số xuất hiện) và độ tin cậy:
- Độ hỗ trợ = s(X{B}, r)
- Độ tin cậy = s(X{B}, r) / s(X, r)
Nhiệm vụ của việc phát hiện các luật kết hợp là phải tìm tất cả các luật X => B sao
cho tần số xuất hiện của luật không nhỏ hơn ngưỡng min cho trước và độ tin cậy của luật không nhỏ hơn ngưỡng min cho trước Những ngưỡng này thường do người dùng hoặc các chuyên gia trong lĩnh vực xác định
Giải thuật tìm các luật kết hợp được bắt đầu bằng việc tìm tất cả các tập mục thường xuyên xuất hiện (FIS - Frequent ItemSet), đây là các tập mục mà tần số xuất hiện lớn hơn
min Sau đó các luật kết hợp sẽ được khai phá từ các tập mục phổ biến này dựa trên min Chúng ta sẽ đi sâu nghiên cứu về Luật kết hợp trong Chương 2 và Chương 3
1.3.4 Phân nhóm và phân đoạn
Kỹ thuật phân nhóm và phân đoạn là những kỹ thuật phân chia dữ liệu sao cho mỗi phần hoặc mỗi nhóm giống nhau theo một tiêu chuẩn nào đó Mối quan hệ thành viên của các nhóm có thể dựa trên mức độ giống nhau của các thành viên và từ đó xây dựng nên các luật ràng buộc giữa các thành viên trong nhóm Một kỹ thuật phân nhóm khác là xây dựng nên các hàm đánh giá các thuộc tính của các thành phần như là hàm của các tham số của các thành phần Kỹ thuật này được gọi là kỹ thuật phân hoạch tối ưu
Trang 12Một trong những ứng dụng của kỹ thuật phân nhóm theo độ giống nhau là cơ sở dữ liệu khách hàng để phân nhóm khách hàng theo các tham số và các nhóm thuế tối ưu có được khi thiết lập biểu thuế bảo hiểm
Mẫu đầu ra của quá trình khai phá dữ liệu sử dụng kỹ thuật này là các tập mẫu chứa dữ liệu có chung những tính chất nào đó được phân tách từ cơ sở dữ liệu Khi các mẫu được thiết lập, chúng có thể được sử dụng để tái tạo các tập dữ liệu dễ hiểu hơn, đồng thời cũng cung cấp các nhóm dữ liệu cho các hoạt động cũng như công việc phân tích Đối với cơ sở
dữ liệu lớn, việc lấy ra các nhóm này là rất quan trọng
1.3.5 Mạng Neural
Mạng neural là một phương pháp khai phá dữ liệu phát triển dựa trên cấu trúc toán học với khả năng học trên mô hình hệ thần kinh con người Mạng neural có thể đưa ra các kết luận từ các dữ liệu phức tạp hoặc không chính xác và có thể được sử dụng để chiết xuất các mẫu và phát hiện xu hướng quá phức tạp mà con người cũng như các kỹ thuật máy tính khác không thể phát hiện được
Một trong những ưu điểm phải kể đến của mạng neural là khả năng tạo ra các mô hình
dự đoán do có độ chính xác cao, có thể áp dụng được cho nhiều các bài toán khác nhau đáp ứng được các nhiệm vụ đặt ra của khai phá dữ liệu như phân lớp, phân nhóm, mô hình hoá, dự báo,…
Mẫu chiết xuất bằng mạng neural được thể hiện ở các nút đầu của mạng Mạng neural
có thể sử dụng các hàm số bất kỳ chứ không chỉ đơn giản là sử dụng các hàm biểu tượng
để tính mức tích cực của các nút đầu ra và cập nhật các trọng số của nó
Đặc điểm của mạng neural là không cần gia công dữ liệu nhiều trước khi bắt đầu quá trình học như các kỹ thuật khác Tuy nhiên để có thể sử dụng mạng neural có hiệu quả cần xác định các yếu tố khi thiết kế mạng như:
- Mô hình mạng (kiến trúc) là gì ?
- Mạng cần bao nhiêu tầng và bao nhiêu nút ?
- Khi nào thì việc học dừng ?
Mạng neural được đóng góp với những thông tin trợ giúp của các chuyên gia đáng tin cậy và được họ đảm bảo các mô hình này làm việc tốt Sau khi học, mạng có thể được coi
là một chuyên gia trong lĩnh vực thông tin mà nó vừa được học
1.3.6 Giải thuật di truyền
Đây là phương pháp không chỉ phục vụ phát hiện tri thức mà còn phục vụ rất nhiều bài toán khác Ví dụ bài toán tối ưu hoá hoặc lập lịch Tư tưởng của thuật toán là áp dụng quy luật của sự chọn lọc tự nhiên Người ta mô phỏng tập hợp dữ liệu ban đầu bằng ký tự nhị phân và gọi là những quần thể xuất phát Bằng các thao tác lai ghép, đột biến chúng ta biến đổi quần thể gene ban đầu và loại bỏ đi một số gene làm cho số lượng gene trong quần thể là không thay đổi Một hàm thích nghi được xây dựng để xác định mức độ thích
Trang 13nghi của quần thể theo các giai đoạn Quá trình tiến hoá làm cho các quần thể thích nghi ngày càng cao Về mặt lý thuyết giải thuật di truyền cho ta lời giải tối ưu toàn cục (Khác với phương pháp mạng neural) Tuy nhiên, người ta cũng hạn chế lời giải với một mức độ thích nghi nào đó để hạn chế số lượng các bước xây dựng quần thể
Nói theo nghĩa rộng thì giải thuật di truyền mô phỏng lại hệ thống tiến hoá trong tự nhiên, chính xác hơn là các giải thuật chỉ ra tập các cá thể được hình thành, được ước lượng và biến đổi như thế nào Ví dụ như xác định xem làm thế nào để lựa chọn các cá thể tạo giống và lựa chọn các cá thể nào để loại bỏ
Giải thuật di truyền là một thuật giải tối ưu hoá, nó được sử dụng rất rộng rãi trong việc tối ưu hoá các kỹ thuật khai phá dữ liệu trong đó có kỹ thuật mạng neural Sự liên hệ của nó với các giải thuật khai phá dữ liệu là ở chỗ tối ưu hoá là cần thiết để xác định các giá trị tham số nào tạo ra các luật tốt nhất
1.4 Lựa chọn các kỹ thuật khai phá
Các giải thuật khai phá dữ liệu tự động mới chỉ ở giai đoạn phát triển ban đầu Hiện nay người ta vẫn chưa đưa ra được một tiêu chuẩn nào trong việc quyết định sử dụng phương pháp nào vào trong trường hợp nào thì hiệu quả Hầu hết các kỹ thuật về khai phá
dữ liệu đều là mới trong các lĩnh vực Hơn nữa lại có rất nhiều kỹ thuật được sử dụng cho nhiều bài toán khác nhau Vì vậy câu hỏi dùng kỹ thuật nào để khai phá không phải là đơn giản Mỗi phương pháp đều có những điểm mạnh và điểm yếu riêng của nó, nhưng đa số các điểm yếu đều có thể khắc phục được
Vậy phải làm như thế nào để áp dụng kỹ thuật một cách đơn giản nhất, dễ sử dụng, để không cảm thấy sự phức tạp vốn có của kỹ thuật đó và vấn đề là tất cả các mẫu tìm được đều đáng quan tâm ? Đây chính là vấn đề quan tâm đối với một hệ thống khai phá dữ liệu
Hệ thống khai phá có thể sinh ra hàng nghìn mà thậm chí có thể hàng triệu mẫu hoặc luật,
do vậy với câu hỏi trên thì câu trả lời là: Chỉ có một phần nhỏ trong các mẫu hay các luật
là đáng quan tâm và hữu ích với người sử dụng
Có một vài câu hỏi thường đặt ra đối với một hệ thống khai phá dữ liệu là:
+ (1) Cái gì tạo ra các mẫu quan tâm ?
+ (2) Hệ thống khai phá có thể sinh ra được tất cả các mẫu quan tâm không ?
+ (3) Hệ thống khai phá có thể chỉ sinh các mẫu quan tâm không ?
Đối với câu hỏi 1: Mẫu là đáng quan tâm nếu nó dễ hiểu đối với con người, hợp lệ hoặc dữ liệu được kiểm tra với độ chắc chắn nào đó, có khả năng (tiềm năng) hữu ích, và cuối cùng là càng mới lạ càng tốt Có vài độ đo cho các mẫu quan tâm dựa trên cấu trúc
của mẫu đã khai phá và thống kê chúng Chẳng hạn độ đo của luật kết hợp dạng X => Y là
độ hỗ trợ và độ tin cậy của luật và cụ thể ta định nghĩa độ hỗ trợ là xác suất P(XY) và độ
tin cậy là xác suất có điều kiện P(X|Y)
Trang 14Đối với câu hỏi thứ 2: Có thể tạo ra được tất cả các mẫu đáng quan tâm không ? Vấn
đề này liên quan đến tính hoàn thiện của thuật toán khai phá Nó thường không thực hiện được và không có khả năng đối với cả hệ thống khai phá dữ liệu để sinh ra tất cả các mẫu
có thể có, có thể tồn tại Thay cho điều đó người ta tập trung vào mục tiêu tìm kiếm Khai phá luật kết hợp là một ví dụ, ở đó người ta sử dụng các độ đo có thể đảm bảo khai phá trọn vẹn, có nghĩa là với ngưỡng độ hỗ trợ và độ tin cậy nhỏ nhất xác định trước thì có thể tìm được
Đối với câu hỏi thứ 3: Hệ thống khai phá có thể chỉ sinh ra các mẫu cần quan tâm không ? Đây chính là vấn đề tối ưu trong khai phá dữ liệu Vấn đề này còn là thách thức rất lớn đối với các nhà khoa học trong lĩnh vực khai phá dữ liệu
1.5 Các dạng CSDL thường được sử dụng để KPDL
Do KPDL được ứng dụng rộng rãi nên có rất nhiều dạng dữ liệu khác nhau được chấp nhận trong KPDL [105] Sau đây là một số dữ liệu điển hình:
+ CSDL quan hệ (Relational databases): là CSDL tác nghiệp được tổ chức theo mô
hình quan hệ Hầu hết các hệ quản trị CSDL hiện nay đều hỗ trợ dạng CSDL này như SQL Server, Oracle, DB2, MySQL, MS Access, …
+ CSDL giao dịch (Transaction databases): đây cũng là một dạng CSDL tác nghiệp,
nhưng các bản ghi thường là các giao dịch Dạng dữ liệu này phổ biến trong lĩnh vực thương mại và tài chính ngân hàng
+ CSDL đa chiều (Multidimentional structures, Data warehouses, Data mart): là các
kho dữ liệu được tập hợp, chọn lọc từ nhiều nguồn khác nhau Dạng dữ liệu này có mang tính lịch sử (mang tính thời gian) và chủ yếu phục vụ cho quá trình phân tích cũng như khai phá tri thức nhằm hỗ trợ quá trình ra quyết định
+ CSDL hướng đối tượng (Object-oriented databases): dạng CSDL là tập các đối
tượng, các đối tượng này có quan hệ và có thể tương tác với nhau
+ Dữ liệu không gian và thời gian (Spatial, Temporal, and Time-series data): là dạng
dữ liệu có tích hợp thuộc tính về không gian (ví dụ: dữ liệu bản đồ) hoặc thời gian (ví dụ:
dữ liệu về thị trường chứng khoán)
+ CSDL đa phương tiện (Multimedia databases): dữ liệu được tích hợp gồm nhiều
dạng khác nhau: âm thanh, hình ảnh, văn bản,…
1.6 Một số ứng dụng của KPDL
KPDL là một lĩnh vực mới, nó thu hút được nhiều nhà nghiên cứu nhờ vào những ứng dụng thực tiễn của nó Sau đây là một số hướng nghiên cứu và ứng dụng điển hình của nó hiện nay:
+ Phân tích dữ liệu và hỗ trợ quyết định (data analysis & decision support)
Trang 15+ Điều trị trong y học (medical treatment): mối liên hệ giữa triệu chứng, chuẩn đoán
và phương pháp điều trị
+ Text ming & Web mining: phân lớp, tóm tắt văn bản và phân lớp các trang WEB + Tin – sinh (Bio-informatics): tìm kiếm, đối sánh các hệ gene và thông tin di truyền, mối liên hệ giữa một số hệ gene và một số bệnh di truyền,…
+ Tài chính và thị trường chứng khoán (finance & stock market): phân tích tình hình tài chính và dự báo giá của các cổ phiếu trong thị trường chứng khoán
+ Bảo hiểm (insurance), Giáo dục (education), …
Trang 162 Chương 2: Một số vấn đề cơ bản về Luật kết hợp
Khai phá dữ liệu sinh luật kết hợp là một hướng tiếp cận quan trọng trong KPDL nói chung (thậm chí có những chuyên gia đánh giá là hướng tiếp cận quan trọng nhất), nó được ra đời và phát triển mạnh mẽ trong những năm gần đây Lần đầu tiên nó được các tác giả R Agrawal, T Imielinski và A Swami đề xuất năm 1993, sau đó ngày càng được nhóm tác giả và các nhà khoa học khác nghiên cứu phát triển và hoàn thiện
2.1 Định nghĩa luật kết hợp
2.1.1 Ví dụ về luật kết hợp
Ví dụ 1: “Tại siêu thị 10% giao dịch là khách hàng mua bia và lạc Cũng để ý thấy
nếu một người mua bia thì chắc đến 70% rằng người đó sẽ mua thêm lạc.”
Ví dụ 2: “Tại quầy lưu niệm 12% giao dịch là khách hàng nam giới mua quà lưu niệm
và hoa để tặng bạn gái anh ta Người bán hàng chắc đến 90% rằng nếu khách hàng là nam giới mua quà lưu niệm mua cả hoa thì người được tặng là bạn gái anh ta.”
Ở đây vế trái (tiền đề - antecedent) của luật là “mua bia”, “nam giới, mua quà lưu
niệm và hoa”, còn “mua lạc” và “tặng bạn gái” là vế phải (mệnh đề kết luận -
consequent) của luật
Các số 10%, 12% được gọi là độ hỗ trợ của luật (Support – số phần trăm các giao dịch chứa cả về phải và vế trái của luật)
Các số 70%, 90% được gọi là độ tin cậy của luật (Confidence – số phần trăm giao dịch thoả mãn vế trái thì cũng thoả mãn vế phải)
Chúng ta thấy rằng tri thức đem lại bởi những luật kết hợp ở dạng trên có sự khác biệt
cơ bản so với thông tin thu được từ các câu lệnh truy vấn dữ liệu thông thường Đó thường là những tri thức, những mối liên hệ chưa được biết trước và mang tính dự báo đang tiềm ẩn trong dữ liệu Những tri thức này không chỉ đơn giản là kết quả của các phép nhóm, tính tổng hay sắp xếp mà là kết quả của quá trình tính toán phức tạp và tốn nhiều thời gian
Tuy luật kết hợp là dạng luật khá đơn giản nhưng lại mang rất nhiều ý nghĩa Thông tin mà dạng luật này đem lại rất đáng kể và hỗ trợ không nhỏ trong quá trình ra quyết
định Tìm kiếm được những luật kết hợp quý hiếm và mang nhiều thông tin từ CSDL tác
nghiệp là một trong những hướng tiếp cận chính của lĩnh vực KPDL và đây chính là động lực không nhỏ thúc đẩy việc tập trung nghiên cứu của nhiều nhà tin học
2.1.2 Các định nghĩa và tính chất
2.1.2.1 Các định nghĩa cơ bản
Cho tập các mục I = {i 1 , i 2 , …, i n } và tập các giao dịch T = {t 1 , t 2 , …, t m } Trong đó
Trang 17+ i j (j = 1 n) là một mục (item) hay một thuộc tính (property)
bởi TID (Transaction Identifier)
Cho δ là một quan hệ nhị phân trên I và T (δ: IxT => {0, 1}) sao cho nếu mục i xuất hiện trong giao dịch t thì ta viết δ(i, t) Về ý nghĩa, một CSDL là một tập các giao dịch, mỗi giao dịch t là một tập mục: t 2 I (với 2 I là tập các tập con của I)
Ví dụ: CSDL (dạng giao dịch) I = {A, B, C, D, T, W}, T = {1, 2, 3, 4, 5, 6} với thông
tin về giao dịch cho ở bảng sau:
+ Độ hỗ trợ (Support): Cho tập mục (Itemset) X: X I Ta định nghĩa Độ hỗ trợ của
tập mục X trong CSDL D như sau:
%100
*
|
|
|}:
{
|)sup(
D
t X D t
hỗ trợ của nó lớn hơn hoặc bằng minsup: s(X) minsup
Bảng sau đây liệt kê các FIS trong CSDL cho ở trên với giá trị minsup = 50%
Bảng 2.2: Ví dụ về các tập mục phổ biến
Trang 18+ Luật kết hợp (Association Rule): Luật kết hợp có dạng: r: X => Y (s, c), với X, Y là các tập mục thoả mãn điều kiện XY = Ø, X là tiền đề, Y là kết quả của luật, s là độ hỗ trợ
(Support), c là độ tin cậy (Confidence) của luật trong đó:
+ Pha 2: Sinh các luật tin cậy từ các tập phổ biến đã tìm thấy ở pha 1 Pha này tương
đối đơn giản và tốn ít thời gian hơn so với pha trên Nếu X là một tập mục phổ biến thì luật kết hợp được sinh từ X có dạng r: X\Y => Y, với Y X, Y Ø và c(r) minconf
Trang 19Bảng 2.3: Các luật kết hợp được sinh từ tập mục phổ biến ACW
2.1.2.2 Một số tính chất của tập mục phổ biến
+ Tính chất 1: Độ hỗ trợ của tập con
Cho X, Y là các tập mục và X Y thì sup(X) sup(Y)
+ Tính chất 2: Một tập chứa tập không phổ biến thì nó cũng không phổ biến
Cụ thể: Nếu X Y và sup(X) < minsup thì sup(Y) < minsup
+ Tính chất 3: Mọi tập con của một tập phổ biến cũng là tập phổ biến
Cụ thể: Nếu X Y và sup(Y) > minsup thì sup(X) > minsup
2.1.2.3 Một số tính chất của luật kết hợp
+ Tính chất 1: Không hợp các luật kết hợp
Giả sử có hai luật kết hợp mạnh X => Z và Y => Z thì X Y => Z chưa chắc đã là
luật kết hợp mạnh Tương tự nếu có X => Y và X => Z thì X => Y Z chưa chắc mạnh
Thật vậy xét: I = {x, y, z}, T = {xz, yz, xy, xyz}, minsup = 50%, minconf = 60%
Thật vậy ta chỉ cần chứng minh X => Y là luật kết hợp mạnh
<=> sup(X Y) minsup và sup(X Y) / sup(X) minconf (*)
Xuất phát từ giả thiết: X => Y Z là luật kết hợp mạnh nên
sup(X Y Z) minsup và sup(X Y Z) / sup(X) minconf
mà hiển nhiên sup(X Y) sup(X Y Z) nên (*) đã được chứng minh
Tương tự X => Z cũng là luật kết hợp mạnh
+ Tính chất 3: Các luật kết hợp không có tính chất bắc cầu
Giả sử có các luật kết hợp mạnh X => Y và Y => Z thì X => Z chưa chắc đã là luật kết
hợp mạnh
Trang 20Thật vậy xét: I = {x, y, z}, T = {xy, yz}, minsup = 30%, minconf = 60%
Dễ thấy x => y (50%, 100%) và y => z (50%, 100%) đều mạnh
Còn x => z (0%, 0%) không mạnh
+ Tính chất 4: Nếu luật A => (L \ A) không thoả mãn độ tin cậy cực tiểu (minconf) thì luật B => (L \ B) cũng không thoả mãn, trong đó B A L, B Ø
Thật vậy conf(B => (L \ B)) = sup(L) / sup(B) sup(L) / sup(A) < minconf
Tương tự: Nếu luật (L \ C) => C là luật kết hợp mạnh thì luật (L \ D) => D cũng mạnh, trong đó D C L, D Ø
Thật vậy conf((L \ D) => D) = sup(L) / sup(L \ D) sup(L) / sup(L \ C) minconf
Và hiển nhiên theo giả thiết sup(L) minsup nên (L \ D) => D là mạnh
Các tính chất này của luật kết hợp sẽ được sử dụng trong các thuật toán về sau
2.2 Các loại luật kết hợp và hướng tiếp cận
2.2.1 Luật kết hợp nhị phân
// Binary association rule or Boolean association rule
Đối với các luật kết hợp này, các mục chỉ được quan tâm là có xuất hiện hay không
xuất hiện trong giao dịch chứ không quan tâm đến mức độ xuất hiện
Ví dụ: “Mua bia => Mua lạc”, “Mua quà, Mua hoa => Tặng bạn gái”,
Đây là dạng luật kết hợp đơn giản nhất và điều đặc biệt là chúng ta có thể chuyển các dạng luật khác về dạng luật này nhờ phương pháp rời rạc hoá Các thuật toán tiêu biểu thực hiện khai phá luật kết hợp nhị phân là Apriori và FP-Growth Chúng ta sẽ đi sâu nghiên cứu trong phần tiếp sau
Ví dụ: “Mua bia 2-5 chai => Mua lạc 5-10 gói”,
“Tuổi 20-30, Mua quà $5-$10, Mua hoa $3-$8 => Tặng bạn gái thân”,
2.2.2.2 Khai phá luật kết hợp định lượng
Để phát hiện ra luật kết hợp định lượng ta phải thực hiện các bước sau:
+ Tiền xử lý: Thực hiện rời rạc hoá chuyển đổi các thuộc tính số và thuộc tính phân loại thành các thuộc tính nhị phân để có thể sử dụng được các thuật toán khai phá luật kết hợp nhị phân Điểm quan trọng của bước này là phải xác định các khoảng thuộc tính số
Trang 21sao cho phù hợp, bởi việc làm này ảnh hưởng tới quá trình khai phá dữ liệu Có nhiều công trình nghiên cứu và nhiều thuật toán để chia khoảng các thuộc tính số sao cho phù hợp [003]
+ Khai phá: Thực hiện khai phá trên CSDL nhị phân
+ Hậu xử lý: Chuyển các luật nhị phân sang các luật định lượng tương ứng với các khoảng rời rạc hoá
Ví dụ: xét dữ liệu điều tra dân số trong bảng sau:
TID Tuổi Giới tính Đã kết hôn Số con Lương
Giới tính: Thuộc tính này nhận một trong hai giá trị “nam” hoặc “nữ” do đó ta ánh xạ thuộc tính này thành 2 thuộc tính là giới tính “nam” và giới tính “nữ”
Đã kết hôn: Tương tự như thuộc tính giới tính, ta chuyển thành 2 thuộc tính “Đã kết
hôn” và “Chưa kết hôn”
Số con: Ánh xạ thuộc tính này thành các thuộc tính “Không con”, “Một con” và
“Nhiều con”
Lương: Ánh xạ thuộc tính này thành các thuộc tính “Lương ít” (dưới 200), “Lương
trung bình” (trên 200 và dưới 400) và “Lương cao” (trên 400)
Việc thực hiện ánh xạ phải rõ ràng đối với người khai phá dữ liệu Với việc ánh xạ như trên, CSDL trong ví dụ trên trở thành CSDL có 14 thuộc tính như sau:
Trang 221 Rất trẻ 6 Nữ 11 Nhiều con
3 Trung niên 8 Chưa kết hôn 13 Lương trung bình
Bảng 2.5: Danh sách thuộc tính sau khi rời rạc hoá
Giả sử sau khi khai phá ta tìm được các luật sau:
2 ^ 6 => 13, 3 ^ 7 => 14,
Ta chuyển các luật này về dạng định lượng tương ứng:
“Trẻ” ^ “Nữ”=>“Lương trung bình”, “Trung niên” ^ “Đã kết hôn”=>“Lương cao”,
Hay “Tuổi 16-30” ^ “Giới tính nữ” => “Lương trên 200 và dưới 400”,
“Tuổi 31-55” ^ “Đã kết hôn” => “Lương trên 400”,
2.2.3 Luật kết hợp đơn chiều
// Single-dimention assiociation rule
Đối với loại này, các luật chỉ tham chiếu đến 1 chiều của dữ liệu
Ví dụ: “Mua bia => Mua lạc”, “Mua quà, Mua hoa => Mua thiếp”,
Ở đây chỉ đề cập tới 1 chiều đó là Mua và ta có thể viết lại luật dưới dạng sau:
Mua(X, “bia”) => Mua(X, “lạc”),
Mua(X, “quà”) ^ Mua(X, “hoa”) => Mua(X, “thiếp”),
Trong đó X là biến biểu diễn khách hàng
2.2.4 Luật kết hợp đa chiều
// Multi-dimention assiociation rule
Đối với loại này, các luật có thể tham chiếu đến nhiều hơn 1 chiều của dữ liệu
Ví dụ: “Tuổi trung niên, Mua quà, Mua hoa => Tặng vợ”,
Ở đây ta đã đề cập tới Tuổi, Mua, và Tặng, ta có thể viết lại luật dưới dạng sau:
Tuổi(X, “trung niên”) ^ Mua(X, “quà”) ^ Mua(X, “hoa”) => Tặng(X, “vợ”),
Trong đó X là biến biểu diễn khách hàng
2.2.5 Luật kết hợp đa mức
// Multi-level assiociation rule
2.2.5.1 Giới thiệu
Đối với loại này, các luật dựa trên mức độ trừu tượng chứa trong luật
Ví dụ: “Mua bia => Mua lạc” (R1),“Mua bia => Mua lạc rang” (R2),
Ở đây ta thấy “lạc rang” là một trường hợp cụ thể của “lạc” hay nói ngược lại “lạc” có mức trừu tượng cao hơn “lạc rang”, do đó (R1) có mức độ trừu tượng cao hơn (R2)
Trang 23Trong thực tế khó có thể tìm được luật kết hợp mạnh trong các mục dữ liệu ở mức trừu tượng gốc, bởi tính thưa thớt của dữ liệu trong không gian đa chiều Khai phá các luật kết hợp mạnh ở mức khái niệm cao có thể mô tả tri thức có nghĩa phổ thông hơn Tuy nhiên, các luật tìm được có thể tầm thường với người này nhưng lại mới lạ, quan trọng đối với người khác Do vậy, các hệ thống khai phá dữ liệu nên cung cấp khả năng khai phá các luật kết hợp ở nhiều mức trừu tượng khác nhau
Ví dụ: Xét CSDL giao dịch sau:
1 Máy tính để bàn IBM, Máy in HP màu
2 Phần mềm bảng tính Excel, Hệ quản trị CSDL MySql
3 Chuột Mitsumi, Bàn phím Mitsumi
4 Máy tính để bàn HP, Hệ quản trị CSDL MySql
5 Máy tính để bàn Fujitsu, Máy tính xách tay Toshiba
Bảng 2.6: Ví dụ CSDL giao dịch bán hàng
Bảng trên cho biết các giao dịch của một cửa hàng bán máy tính: định danh giao dịch TID và các mục bán được tương ứng Khái niệm phân cấp cho các mục chỉ ra trong hình
sau (Theo chiều mũi tên, khi độ sâu tăng mức trừu tượng giảm dần):
Hình 2.1: Sự phân cấp mức độ trừu tượng của dữ liệu
Khái niệm phân cấp được xác định tuần tự từ mức thấp đến mức cao Trong hình trên, khái niệm phân cấp thành 5 mức: 0, 1, 2, 3 và 4 Ta qui ước các mức được đánh số từ trên
Trang 24xuống, bắt đầu từ mức 0 ở nút gốc cho tất cả các nút (mức tổng quát nhất) Mức 1 bao
gồm “Phần cứng” và “Phần mềm”, , Mức 4 là mức cụ thể, riêng biệt nhất
Các mục trong bảng dữ liệu cho ban đầu là mức cao nhất của khái niệm phân cấp trong hình trên Khó có thể tìm ra các mẫu mua đáng quan tâm trong mức nguyên thuỷ này
Chẳng hạn: “Máy tính để bàn IBM” hoặc “Phần mềm Lotus”, chúng chỉ xuất hiện rất ít
trên tổng số các giao dịch, vì thế khó có thể tìm được các luật kết hợp có chứa chúng
Các luật được sinh ra từ khai phá luật kết hợp đa mức với khái niệm phân cấp được gọi
là luật kết hợp đa mức (vì chúng đề cập đến hơn một mức khái niệm)
2.2.5.2 Khai phá luật kết hợp đa mức
Có một số hướng tiếp cận dựa trên khung làm việc độ hỗ trợ và độ tin cậy confidence framework) Nhìn chung các thuật toán đều sử dụng chiến lược chia để trị Top-down, ở đó thực hiện tính tích luỹ cho các tập mục trong mỗi mức khái niệm, bắt đầu
(support-từ mức khái niệm 1 và đi xuống mức cao hơn, mức khái niệm cụ thể hơn, cho đến khi không còn tập mục phổ biến nào được tìm thấy Điều đó có nghĩa là: lần đầu tiên ta tìm tất
cả các tập mục phổ biến ở mức khái niệm 1, sau đó tìm các tập mục phổ biến ở mức khái niệm 2, và cứ tiếp tục như vậy… Với mỗi mức, có thể sử dụng bất kỳ thuật toán nào để phát hiện tập mục phổ biến, chẳng hạn như Apriori, FP-Growth hoặc các biến thể của chúng Tuy nhiên khi áp dụng các thuật toán đó ta phải có một số cải tiến như sau:
+ Sử dụng ngưỡng độ hỗ trợ (minsup) giống nhau cho tất cả các mức trừu tượng
Ví dụ: trong hình sau, sử dụng minsup = 10% cho cả hai mức trừu tượng (ví dụ từ mức
“Máy tính” xuống mức “Máy tính để bàn” và “Máy tính xách tay”) Khi đó cả “Máy tính” và “Máy tính để bàn” được tìm thấy là phổ biến, trong khi đó “Máy tính xách tay”
thì không
Hình 2.2: Khai phá luật kết hợp đa mức với minsup giống nhau tại các mức
Khi sử dụng minsup giống nhau thì thủ tục tìm kiếm sẽ đơn giản hơn Phương pháp
này thực sự đơn giản trong trường hợp người dùng yêu cầu chỉ một ngưỡng độ hỗ trợ cực
tiểu xác định Tuy nhiên, với minsup giống nhau sẽ nảy sinh một số khó khăn đó là: không
phù hợp với các mục ở mức trừu tượng thấp, do các mục ở mức trừu tượng thấp có tính
Trang 25phổ biến thấp hơn Nếu minsup đặt quá cao sẽ mất một số luật có ích ở các mức trừu tượng thấp Nếu minsup đặt quá thấp, có thể sinh ra nhiều luật không cần quan tâm ở mức
trừu tượng cao Điều đó dẫn đến cách tiếp cận khác được trình bày ở dưới đây
+ Hạ thấp ngưỡng độ hỗ trợ (minsup) khi mức trừu tượng thấp dần
Ta xác định minsup cho mỗi mức trừu tượng Mức trừu tượng càng thấp thì minsup càng thấp Ví dụ: trong sau, ở mức trừu tượng 2 là minsup = 10%, ở mức 3 minsup = 5% Với cách này các mục “Máy tính”, “Máy tính xách tay”, “Máy tính để bàn” đều là phổ
biến
Hình 2.3: Khai phá luật kết hợp đa mức với minsup giảm dần
Với các tiếp cận trên, ta có một số lựa chọn:
+ Từ mức này đến mức khác một cách độc lập (level-by-level independent): Đây là cách tìm kiếm hoàn toàn theo chiều rộng, ở đó không có tri thức cơ sở của các tập mục phổ biến được dùng để tỉa Mỗi nút đều được xét mà không chú ý đến nút cha đã xét có là phổ biến hay không
+ Đi qua các mức có chọn lọc (level-cross filtering): Một mục ở mức thứ i được xét khi và chỉ khi nút cha ở mức thứ (i-1) là phổ biến Nói cách khác là, ta chỉ nghiên cứu luật
kết hợp cụ thể hơn từ luật trừu tượng (tổng quát) hơn Nếu một nút là phổ biến thì các nút con của nó sẽ được xét, nếu không các nút con của nó sẽ bị tỉa Điều đó sẽ làm giảm
không gian tìm kiếm Ví dụ: trong hình sau, các nút con của “Máy tính” sẽ không được xét vì “Máy tính” không là phổ biến
Hình 2.4: Khai phá luật kết hợp đa mức với minsup giảm dần kết hợp lọc
Trang 26+ Đi qua các mức lọc bởi tập k-mục: Tập k-mục ở mức thứ i được xét khi và chỉ khi nếu nó có tập cha là tập k-mục ở mức (i-1) là phổ biến
Ví dụ: hình sau chỉ ra tập 2-mục {“Máy tính”, “Máy in”} là phổ biến, do đó các
nút sau đây sẽ được xét:
{“Máy tính để bàn”, “Máy in đen trắng”}
{“Máy tính để bàn”, “Máy in màu”}
{“Máy tính xách tay”, “Máy in đen trắng”}
{“Máy tính xách tay”, “Máy in màu”}
Hình 2.5: Khai phá luật kết hợp đa mức với minsup giảm dần kết hợp lọc k-mục
So sánh các phương pháp trên ta thấy:
+ Với cách tiếp cận các mức cùng độ hỗ trợ cực tiểu: nếu để minsup thấp sẽ phải
xét một số lớn các tập mục không cần thiết và có nhiều luật được tìm ra không đáng quan
tâm hoặc ngược lại nếu để minsup có thể gây mất các luật quan trọng
+ Với cách đi qua các mức có lọc: cho phép hệ thống chỉ khai phá các tập con của
tập k-mục phổ biến, giảm đáng kể không gian tìm kiếm
Rõ ràng với hướng tiếp cận sử dụng khái niệm phân cấp cho phép khám phá tri thức ở các mức trừu tượng khác nhau, như các luật kết hợp đa mức Vì vậy, phương pháp này tỏ
ra rất hữu ích trong khai phá Tuy nhiên, khi các luật kết hợp đa mức được tìm thấy thì một số luật cần được rút gọn Ví dụ xét:
(R1): Máy tính để bàn => máy in đen trắng [minsup = 8%, conf = 70%]
(R2): Máy tính để bàn IBM => máy in đen trắng [minsup = 2%, conf = 72%]
Nếu cả hai luật được tìm thấy thì luật (R2) sẽ ít có ý nghĩa, bởi luật (R2) có tính trừu tượng thấp, nhưng lại không đưa ra được thông tin mới Do đó nó dễ bị loại Luật (R1) có
thể thu được từ luật (R2) nếu thế “Máy tính để bàn” cho “Máy tính để bàn IBM” trong
khái niệm phân cấp
Máy tính và Máy in
sup = 20%
Máy để bàn
và Máy in đen trắng
sup = 6%
Máy xách tay và Máy
in đen trắng
sup = 5%
Máy xách tay và Máy
in màu
sup = 3%
Trang 272.2.6 Luật kết hợp với thuộc tính có trọng số
// Association rule with weight items
Trong thực tế, các thuộc tính của CSDL không phải luôn có vai trò ngang bằng nhau
Có một số thuộc tính được chú trọng và lúc đó ta nói những thuộc tính đó có mức độ quan trọng hơn các thuộc tính khác Ví dụ khi khảo sát về khả năng lây nhiễm của bệnh SARS
thì thông tin về “thân nhiệt”, “đường hô hấp” rõ ràng là quan trọng hơn thông tin về
“tuổi” Trong quá trình tìm kiếm luật, chúng ta sẽ gán cho các thuộc tính “thân nhiệt”,
“đường hô hấp” trọng số cao hơn thuộc tính “tuổi” Với luật kết hợp có thuộc tính được
đánh trọng số, chúng ta sẽ khai phá được những luật mang nhiều ý nghĩa hơn
2.2.7 Luật kết hợp mờ
// Fuzzy association rule
Với những hạn chế gặp phải trong quá trình rời rạc hoá các thuộc tính số, các nhà nghiên cứu đã đề xuất luật kết hợp mờ nhằm khắc phục những hạn chế trên và chuyển luật kết hợp về một dạng tự nhiên hơn, gần gũi hơn với người sử dụng [104] Hay nói cách khác vấn đề khai phá luật kết hợp nhị phân có một số hạn chế khi ta không chỉ cần quan tâm đến sự có mặt hoặc không có mặt của một thuộc tính nào đó Đối với các thuộc tính định lượng (quantitative) chúng ta cần phải làm trơn các điểm biên gãy và phương pháp khai phá luật kết hợp mờ đã đem lại hiệu quả đáng kể
Khai phá luật kết hợp mờ là phát hiện các luật kết hợp sử dụng khái niệm tập mờ đối với các thuộc tính định lượng Khi khai phá chúng ta cần phải định nghĩa và làm rõ những khái niệm như: tập mờ, tập mức, số mờ, các phép toán mờ, độ ủng hộ, độ hỗ trợ, độ quan trọng và độ chắc chắn, trước khi áp dụng các giải thuật cụ thể để khai phá dữ liệu Trong phạm vi khuôn khổ của luận văn, tôi không trình bày sâu tiếp về luật kết hợp mờ mà dành
nó cho phần phát triển tiếp theo
2.2.8 Luật kết hợp đóng
// Closed association rule
Trong thực tế, khi khai phá dữ liệu trên một CSDL lớn thường đòi hỏi một lượng tính toán khổng lồ, không những vậy số lượng luật sinh ra cũng cực lớn thậm chí vượt ra khỏi
sự kiểm soát và trong đó tồn tại một lượng rất lớn những luật không cần thiết
Có nhiều công trình nghiên cứu đã chứng minh được chỉ cần tìm những tập mục phổ biến cực đại (maximal frequent intemsets) là đủ đại diện cho các tập mục phổ biến, hoặc tốt hơn là chỉ cần tìm tập các tập mục đóng phổ biến (closed frequent intemsets) và thực hiện sinh luật trên những tập mục này là đủ Những thuật toán tương ứng với cách tiếp cận
Trang 28này như Charm, Closet cải thiện đáng kể về mặt tốc độ so với thuật toán kinh điển trước
đó như Apriori hay FP-Growth Chi tiết về luật kết hợp đóng và các giải thuật tương ứng
sẽ được trình bày cụ thể trong Chương 3
Trang 293 Chương 3: Một số phương pháp KPDL sinh luật kết hợp
3.1 Thuật toán Apriori
3.1.1 Giới thiệu
Các thuật toán khai phá luật kết hợp được đưa ra đều thực hiện hai pha:
+ Pha 1: tìm tất cả các tập mục phổ biến (độ hỗ trợ lớn hơn minsup), đây là pha tốn
khá nhiều thời gian
+ Pha 2: tìm các luật kết hợp từ các tập mục phổ biến (độ tin cậy lớn hơn minconf),
pha này đơn giản và tốn ít thời gian hơn nhiều so với Pha 1
Các thuật toán khai phá luật kết hợp được đưa ra chủ yếu quan tâm đến Pha 1 Từ khi vấn đề khai phá tập mục phổ biến được đề cập, một số lượng lớn các thuật toán được đề xuất Các thuật toán khai phá tập mục phổ biến đi theo hai hướng tiếp cận chính sau [105]:
+ Các thuật toán dựa trên hướng tiếp cận sinh ứng cử và kiểm tra (Generate candidate
– and – test), điển hình là thuật toán Apriori
+ Các thuật toán dựa trên hướng tiếp cận không sinh ứng cử, điển hình là thuật toán FP
– Growth
Thuật toán Apriori được Rakesh Agrawal, Tomaz Imielinski, Arun Swanmi đề xuất năm 1993, cho đến nay thuật toán này đã được nhiều nhà nghiên cứu phát triển để làm tăng tính hiệu quả của nó Tên thuật toán APRIORI được bắt nguồn từ “Algorithm PRIOR knowledgement of frequent Itemset properties” [109] Thuật toán sử dụng chiến lược đi từ dưới lên (bottom-up) và tìm kiếm theo chiều rộng (breath-first search)
Trong thuật toán này chúng ta sẽ duyệt nhiều lần CSDL Trong lần duyệt thứ nhất, chúng ta tính độ hỗ trợ của các mục riêng biệt và xác định các mục phổ biến trong chúng
(độ hỗ trợ lớn hơn minsup) – ký hiệu L 1 Trong các lần duyệt thứ k, chúng ta thực hiện
như sau:
(1) Bắt đầu với tập hạt giống (ký hiệu L k-1) là tập các tập mục phổ biến đã tìm thấy
trong lần duyệt trước (thứ k-1) để sinh ra (generate) các tập mục phổ biến tiềm năng hay các tập mục ứng cử (ký hiệu C k)
(2) Duyệt CSDL để xác định độ hỗ trợ cho từng tập mục ứng cử Lọc ra các tập mục
có độ hỗ trợ lớn hơn minsup ta thu được L k để làm tập hạt giống cho lần duyệt tiếp theo (3) Giải thuật dừng khi không có tập mục phổ biến nào tìm thấy (Lk = )
Ta thấy trong thuật toán Apriori, tập ứng cử C k được sinh ra hoàn toàn dựa trên tập hạt
giống L k-1 , chứ không phải dựa trên việc quét CSDL Cơ sở của điều này là tính chất: bất
thể được sinh ra bằng cách kết nối các thành viên của tập các mục phổ biến hạt giống L k-1
và loại đi các ứng cử nếu nó có chứa bất kỳ tập con nào không phổ biến Thủ tục này nói
Trang 30chung dẫn đến một số nhỏ hơn nhiều các tập ứng cử viên thông qua chiến lược tỉa không
gian tìm kiếm như trên
Không mất tính tổng quát, chúng ta giả định các mục trong mỗi giao dịch được lưu giữ
theo trật tự từ điển Gọi số lượng các mục trong một tập mục là kích thước của tập mục,
và gọi tập mục có kích thước k là tập k-mục Các mục trong mỗi tập mục cũng được lưu giữ theo trật tự từ điển Chúng ta có bảng ký hiệu sau:
L k Tập các k-itemset phổ biến (vượt ngưỡng minsup nào đó) Mỗi
phần tử của tập này có hai trường hợp:
- Tập mục
- Độ hỗ trợ tương ứng của nó
C k Tập các k-itemset ứng cử (tập các tập phổ biến tiềm năng) Mỗi
phần tử của tập này có hai trường:
- Tập mục
- Độ hỗ trợ tương ứng của nó
Bảng 3.1: Ký hiệu mô tả trong thuật toán Apriori
Chúng ta nhắc lại tính chất quan trọng đã nêu ở trên (còn gọi là tính chất Apriori) được
sử dụng để rút gọn không gian tìm kiếm: Tất cả các tập con khác rỗng của tập mục phổ
biến phải là tập mục phổ biến hay nói ngược lại: Nếu một tập mục không là phổ biến thì mọi tập mục chứa nó cũng không phải là phổ biến Cụ thể: cho các tập mục I, A trong đó sup(I) < minsup thì sup(I A) < minsup
Quay lại thuật toán Apriori, ta xem xét cụ thể bước kết nối và bước tỉa tại bước k:
+ Bước kết nối:
Để tìm C k ta kết nối L k-1 với chính nó Ký hiệu l i [j] là mục thứ j trong tập mục l i Như trên chúng ta đã quy ước các mục trong mọi giao dịch và trong mọi tập mục có trật tự từ điển Phép nối Lk-1 với chính Lk-1 được thực hiện như sau: cho l 1 , l 2 Lk-1, l 1 và l2 được
kết nối nếu (l 1 [1]=l 2 [1]) ^ (l 1 [2]=l 2 [2]) ^ ^ (l 1 [k-2]=l 2 [k-2]) ^ (l 1 [k-1]<l 2 [k-2]) Điều kiện (l 1 [k-1]<l 2 [k-2]) để đảm bảo không sinh lặp ứng cử Kết quả của kết nối
Trang 31nhận được L k Tuy nhiên, C k có thể rất lớn, và do đó khối lượng tính rất lớn Để rút gọn
kích thước của C k , tính chất Apriori được áp dụng như sau: Bất kỳ tập con (k-1)-mục nào của ứng cử k-mục mà không có mặt trong L k-1 thì ứng cử đó không phổ biến và ta loại nó
khỏi C k Việc kiểm tra tập con (k-1)-mục này có thể làm nhanh bằng cách duy trì một cây
băm của tất cả các tập mục phổ biến đã tìm thấy
T100 1, 2, 5 T200 2, 4 T300 2, 3 T400 1, 2, 4 T500 1, 3 T600 2, 3 T700 1, 3 T800 1, 2, 3, 5 T900 1, 2, 3
Bảng 3.2: Cơ sở dữ liệu minh hoạ thuật toán Apriori
Xét CSDL D ở trên với minsup = 2 Thuật toán Apriori được minh hoạ như sau:
Trang 32Hình 3.1: Minh hoạ thuật toán Apriori
supminsup
Quét D
để tính sup
Itemset sup null ?
C4
Kết thúc
Sinh các ứng
cử C4 từ L3
Trang 33Cụ thể:
(1) Trong lần lặp đầu tiên của thuật toán, mỗi mục là phần tử của tập ứng cử 1-mục: C 1 Thuật toán đơn giản quét tất cả các giao dịch theo thứ tự để tính số lần xuất hiện của mỗi mục
(2) Lọc lấy các phần tử thoả minsup ta được L 1
(3) Sinh ra tập ứng cử 2-mục: C 2 bằng thực hiện phép kết nối L 1 với L 1 Chú ý là trong bước này ta có áp dụng tính chất Apriori, nhưng trong lần kết nối này nó không có tác dụng vì mọi tập con khác rỗng của các ứng cử đều phổ biến Do đó số ứng cử được
sinh ra chính là số tổ hợp C(2, |L 1 |) = C(2, 5) = 5!/(2!*3!) = 10
(4) Quét CSDL D để tính độ hỗ trợ cho các phần tử trong C 2
(5) Lọc lấy các phần tử thoả minsup ta được L 2 ={{1,2}, {1,3}, {1,5}, {2,3}, {2,4}, {2,5}} (6) Sinh ra tập ứng cử 3-mục: C 3 Thực hiện phép kết nối L 2 với L 2 ta thu được các ứng cử
{{1,2,3}, {1,2,5}, {1,3,5}, {2,3,4}, {2,3,5}, {2,4,5}} Áp dụng tính chất Apriori rằng tất
cả các tập con của tập mục phổ biến phải là phổ biến, ta loại đi 4 ứng cử cuối (ví dụ
loại {2,4,5} vì {4,5}L 2) Ý nghĩa của việc này là giảm tối đa sự cố gắng không cần
thiết tính độ hỗ trợ cho các ứng cử khi quét CDSL và cũng chú ý là với ứng cử k-mục,
ta chỉ cần xét sự tồn tại của các tập con (k-1)-mục trong L 2 là đủ vì các tập con nhỏ hơn
đã được kiểm tra trong các bước trước rồi Kết quả C 3 = {{1,2,3}, {1,2,5}}
(7) Quét CSDL D để tính độ hỗ trợ cho các phần tử trong C 3
(8) Lọc lấy các phần tử thoả minsup ta được L 3 ={{1,2,3}, {1,2,5}}
(9) Sinh ra tập ứng cử 4-mục: C 4 Thực hiện phép kết nối L 3 với L 3 ta thu được duy nhất
ứng cử {1,2,3,5} Áp dụng tính chất Apriori rằng tất cả các tập con của tập mục phổ biến phải là phổ biến, ta loại đi ứng cử cuối (vì {2,3,5}L 3) Do vậy C4 = và kết thúc quá trình lặp
(10) Kết quả L = L 1 L 2 L 3
= { {1}, {2}, {3}, {4}, {5}, {1,2}, {1,3}, {1,5}, {2,3}, {2,4}, {2,5}, {1,2,3}, {1,2,5}
}
3.1.2 Thuật toán
Tại dòng (1) ta tìm các tập 1-mục phổ biến L1 Dòng (2)-(10), L k-1 được sử dụng để
sinh ra các ứng cử C k , từ đó tìm ra L k Thủ tục Apriori_Gen (dòng (3)) sinh ra các ứng cử,
trong đó sử dụng tính chất Apriori để loại trừ những ứng cử có tập con không phổ biến và
xác định điều kiện lặp kết thúc khi L k = Quét CSDL D (dòng (4)), với mỗi giao dịch
tD, tìm tất cả các tập con (Subset) c của t mà cC k (dòng (5)) Tính tích luỹ độ hỗ trợ cho các tập con c này (dòng (6), (7)) Lọc lấy các tập con cC k thoả mãn minsup ta thu được L k (dòng (9)) Tập hợp các L k ta thu được tập các tập mục phổ biến L (dòng (11))
Trang 34Thủ tục Apriori_Gen thực hiện 2 công việc là kết nối và tỉa Trong bước nối, L k-1 được
nối với L k-1 để sinh ra các ứng cử tiềm năng (dòng (1)-(4)) Bước tỉa (dòng (5)-(7)) sử
dụng tính chất Apriori để loại các ứng cử có tập con không phải tập mục phổ biến, thủ tục
được sử dụng là Has_Infrequent_Subset
Có thể thấy thuật toán là đúng đắn tuy nhiên để khai phá được một mẫu phổ biến kích
thước là l thì thuật toán phải sinh và kiểm tra (2 l
-1) mẫu phổ biến tiềm năng (số lượng tập
con có thể có ngoại trừ rỗng) Và nếu coi mọi phép tính toán, kiểm tra và so sánh là 1 đơn
vị thì trong trường hợp xấu độ phức tạp của thuật toán là O(n*2 lmax ) trong đó lmax là độ
dài của tập mục phổ biến lớn nhất và n là số lượng tập mục
Bảng 3.3: Thuật toán Apriori
Input: CSDL D, ngưỡng độ hỗ trợ cực tiểu minsup
Output: Tập L chứa mọi k-mục phổ biến trong D
Thực hiện: Apriori(D, minsup)
(1) L1 = {x | x is a frequent item in D}; // L 1 : tập các tập 1-mục phổ biến
(2) For (k=2; Lk-1!=null; k++) {
(3) Ck = Apriori_Gen(Lk-1); // Sinh tập ứng cử từ L k-1
(4) Foreach (t in D) { // Quét D tính độ hỗ trợ cho các ứng cử
(5) Ct=GetAllSubSets(Ck, t); // Tìm mọi c là subset của t và cC k
Trang 353.1.3 Nâng cao hiệu quả của thuật toán Apriori
Phần này nêu một số phương pháp cải tiến, biến đổi thuật toán Apriori nhằm nâng cao hiệu quả của thuật toán
3.1.3.1 Sử dụng kỹ thuật băm
Bước tỉa (dòng (6) của thủ tục Apriori_Gen) đòi hỏi kiểm tra tất cả các tập con
Để có thể kiểm tra nhanh chóng, ta lưu L k-1 vào bảng băm (Hash table)
Bước tìm các ứng cử (dòng (5) của thuật toán Apriori) yêu cầu tìm tất cả các ứng cử c được chứa trong giao dịch t khi biết tập các ứng cử C k Một giải pháp hiệu quả được đề xuất đó là sử dụng một cấu trúc dữ liệu đặc biệt là cây băm (Hash tree) để lưu tập các ứng
cử Ck
Cây băm là cây có thứ tự có cấu trúc như sau [101]:
+ Gốc của cây có độ sâu là 1
+ Nút trong: Chứa một bảng băm với B cụm (bucket), mỗi cụm có giá trị định danh thuộc đoạn [0, B-1] Mỗi cụm lại trỏ tới một nút khác Nút trong ở độ sâu d trỏ tới các nút con ở độ sâu d+1 Trên các cung đi từ nút cha tới nút con được gán nhãn tương ứng với
định danh của cụm
+ Nút lá: là một danh sách chứa các tập k-mục được thuộc C k
Xây dựng cây băm [101]:
+ Khi thêm một tập mục c, chúng ta bắt đầu đi từ gốc cây cho đến khi gặp nút lá Tại
một nút trong ở độ sâu d, chúng ta quyết định đi theo nhánh nào bằng cách áp dụng hàm băm cho mục thứ d của tập mục c Ban đầu tất cả các nút được tạo ra là lá Khi số lượng
tập mục trong mỗi lá vượt quá ngưỡng nào đó thì ta chuyển lá thành nút trong
+ Các trường trong nút lá của cây băm T được mô tả như sau:
Trang 36+ v là một lá của cây băm ở độ sâu d
+ b 0 , b 1 , , b d-1 là các nhãn bắt gặp trên cung của đường đi từ gốc T đến v
+ C v C k là tập con của tập ứng cử lưu trong lá v
Khi đó C v
= {XC k : h(X[i]) = b i , 0i<d} với X[i] là mục thứ i của tập mục X
Ví dụ: Ta xây dựng cây băm sau với các mục là các số nguyên Trong đó:
+ Số bucket tại 1 nút trong: B = 3
+ Hàm băm: h(w) = w mod 3
+ Số phần tử tối đa tại nút lá Max = 3
+ Tập mục ứng cử C k = C 3 = {{1,2,3}, {1,2,4}, {1,2,5}, {1,3,4}, {1,3,5}, {1,4,5}, {2,3,4}, {3,4,5}}
Hình 3.2: Minh hoạ cây băm (Hash tree)
Tính độ hỗ trợ của các tập mục ứng cử với giao dịch t:
+ Bắt đầu từ nút gốc, chọn mục đầu tiên của t, và thực hiện băm với mục này Giá trị
của hàm băm cho biết nút đến ở bước tiếp theo
+ Nếu ta đang ở nút lá ta tìm tập mục trong lá đó chứa trong t và thực hiện tăng số đếm
độ hỗ trợ của tập đó lên 1 đơn vị
+ Nếu ta đang ở nút trong của cây và ta đi tới nó bằng việc băm mục thứ i trong t thì nếu i<|t| thì thực hiện băm trên mục thứ i+1 trong t và thực hiện gọi đệ quy với kết quả băm mục thứ i+1
Trang 37Bảng 3.6: Thủ tục tính tích luỹ độ hỗ trợ của các ứng cử là tập con của giao dịch t
Input: Giao dịch t, Nút hiện thời trên cây băm v, Chỉ mục i (giả sử i đánh số từ 0) hiện thời đang xét trong t và các mục trong t được sắp theo chiều tăng dần
Output: Tích luỹ độ hỗ trợ cho các ứng cử X trên cây băm T
Ví dụ: Xét t = {1,2,4,5}, sau thủ tục Accumulate(t, Root, 0) thì các ứng cử X sau lần
lượt được tích luỹ biến đếm:
+ {1,2,4}, {1,2,5} qua các nút Root, C 1 , C 12
+ {1,4,5} qua các nút Root, C 1 , C 11
3.1.3.2 Rút gọn số giao dịch sau mỗi lần quét CSDL
Một giao dịch không chứa bất kỳ tập k-mục phổ biến nào thì cũng không thể chứa bất
kỳ tập (k+1)-mục phổ biến Do đó, ta có thể đánh dấu giao dịch này để loại bỏ không
duyệt nó trong lần duyệt tiếp sau
3.1.3.3 Phân hoạch (Partitioning)
Chúng ta biết rằng truy cập bộ nhớ ngoài tốc độ khá chậm, nên với kỹ thuật này chúng
ta chỉ cần quét CSDL 2 lần trên bộ nhớ ngoài để khai phá các tập mục phổ biến
Trang 38Hình 3.3: Sơ đồ khai phá bằng phân hoạch dữ liệu
Khai phá bằng phân hoạch dữ liệu gồm 2 giai đoạn:
+ Giai đoạn 1, thuật toán chia các giao dịch trong CSDL D thành n vùng Nếu ngưỡng
hỗ trợ cực tiểu của D là minsup thì ngưỡng hỗ trợ cực tiểu của vùng D i là
minsup*(|D i |/|D|) Ta đi tìm các tập mục phổ biến cho các D i và gọi là tập các tập mục
phổ biến địa phương (local frequent itemsets) trong đó D i được tải hoàn toàn vào bộ nhớ trong và xử lý trực tiếp trên bộ nhớ trong do đó để tìm các tập mục phổ biến địa phương
thì ta chỉ cần duyệt CSDL D (bộ nhớ ngoài) duy nhất 1 lần Các tập mục phổ biến địa phương có thể hoặc không là tập mục phổ biến của toàn bộ CSDL D nhưng bất kỳ tập
mục nào là phổ biến tổng thể phải là phổ biến của ít nhất 1 vùng, do đó tập hợp các tập mục phổ biến địa phương từ tất cả các vùng sẽ được tập các tập mục ứng cử tổng thể
+ Giai đoạn 2, duyệt CSDL D lần thứ 2 để tính độ hỗ trợ cho mỗi ứng cử nhằm xác
định tập mục phổ biến tổng thể
3.1.3.4 Lấy mẫu (Sampling)
Ý tưởng cơ bản của cách tiếp cận lấy mẫu này là dựa trên xác suất thống kê, lấy ngẫu
nhiên S trên trên CSDL đã cho D và sau đó tìm các tập mục phổ biến trong S thay cho D Kích thước của mẫu S phải đảm bảo đủ nhỏ để khai phá trực tiếp trong bộ nhớ trong nhờ
đó tốc độ được cải thiện đáng kể nhưng điều quan trọng nhất là độ lớn của không gian hay
độ phức tạp được cải thiện rất nhiều Tuy nhiên, do S chỉ là bộ phận của D nên rất có thể
một số tập mục phổ biến sẽ bị mất khi khai phá Do đó cách lấy mẫu phải đảm bảo tính
ngẫu nhiên và S cũng phải đủ lớn hơn một ngưỡng tối thiểu nào đó Đồng thời chúng ta hạ thấp ngưỡng độ hỗ trợ cực tiểu minsup để tìm được nhiều hơn các tập mục phổ biến địa
n vùng
Tìm các tập mục phổ biến địa phương cho mỗi vùng
Quét D lần 1
Tổ hợp các tập mục phổ biến địa phương
để được tập mục ứng cử
Tìm các tập mục phổ biến đích trong
số các ứng cử
Quét D lần 2
Các tập mục phổ biến trong
D
Trang 39phương trong S (ký hiệu L S
), tránh việc mất mát các tập mục phổ biến tổng thể Lúc này ta
chỉ cần duyệt toàn bộ D duy nhất 1 lần để tìm các tập mục phổ biến tổng thể Cách tiếp cận lấy mẫu này rất hiệu quả khi D là cực lớn và phân bố tương đối ngẫu nhiên
3.1.4 Sinh luật kết hợp từ tập mục phổ biến
Sau khi các tập mục phổ biến từ các giao dịch trong CSDL được tìm thấy, chúng ta đi tìm các luật kết hợp mạnh (Strong association rule) – là luật thoả mãn cả độ hỗ trợ cực
tiểu và độ tin cậy cực tiểu: sup(X=>Y) minsup và conf(X=>Y) minconf
Trong đó: sup(X=>Y) = sup(XY) và conf(X=>Y) = P(Y|X) = sup(XY) / sup(X)
Các luật kết hợp có thể sinh ra như sau:
+ Với mỗi tập mục phổ biến l (sup(l) minsup), thực hiện sinh ra tất cả tập con a khác
rỗng và khác l của l
+ Với mỗi tập con a này, ta có luật a=>(l\a) nếu sup(l)/sup(a) minconf
Xét CSDL D trong Bảng 3.2 và độ hỗ trợ được tính trong Hình 3.1, giả sử dữ liệu chứa tập mục phổ biến l={1,2,5} Khi đó ta có các tập con khác rỗng của l (theo lực lượng giảm dần) là: {1,2}, {1,5}, {2,5}, {1}, {2}, {5} với độ tin cậy lần lượt là:
3.1.4.1 Thuật toán đơn giản sinh luật kết hợp từ tập mục phổ biến
Chúng ta cải tiến thủ tục xử lý bằng cách sinh ra các tập con của tập mục lớn theo kiểu
đệ quy ưu tiên độ sâu và theo lực lượng của tập con nhỏ dần Ví dụ: với tập mục ABCD,
đầu tiên ta xét ABC, sau đó mới là AB, Ưu điểm ở đây là nếu tập con a của tập mục lớn l không sinh ra được luật thì ta không cần xét đến các tập con của nó nữa Chẳng hạn, nếu luật ABC=>D không đủ độ tin cậy thì ta không cần xét đến luật AB=>CD nữa
Điều này có thể chứng minh như sau: Nếu luật a=>(l\a) không thoả mãn độ tin cậy:
conf(a=>(l\a)) < minconf, thì ba ta đều có sup(b)sup(a) và do vậy:
conf(b=>(l\b)) = sup(l)/sup(b) sup(l)/sup(b) = conf(a=>(l\a)) < minconf
Trang 40Bảng 3.7: Thuật toán đơn giản sinh luật kết hợp từ tập mục phổ biến
Input: Tập các k-mục phổ biến L, ngưỡng tin cậy cực tiểu minconf
Input: Tập k-mục phổ biến l k dùng để sinh luật, tập m-mục a m dùng để sinh ra các tập con làm
vế trái của luật, ngưỡng tin cậy cực tiểu minconf
Output: Tập luật ứng với l k
Thực hiện: GenRules(l k , a m , minconf)
3.1.4.2 Thuật toán nhanh hơn sinh luật kết hợp từ tập mục phổ biến
Ở trên ta đã chỉ ra rằng nếu một luật không thoả mãn độ tin cậy với tập cha a (ở vế
trái) thì cũng không thoả mãn với tập con của nó Ví dụ: nếu ABC=>D không đủ độ tin cậy thì luật AB=>CD cũng không đủ độ tin cậy, tương tự nếu ABD=>C không đủ độ tin cậy thì luật AB=>CD cũng không đủ độ tin cậy Điều đó gợi ý cho ta áp dụng tính chất
Apriori đối với vế phải của luật
Bảng 3.9: Thuật toán nhanh hơn sinh luật kết hợp từ tập mục phổ biến
Input: Tập các k-mục phổ biến L, ngưỡng tin cậy cực tiểu minconf