Thuật toán Apriori tiêu biểucho phương pháp sinh ra các tập mục ứng viên rồi duyệt cơ sở dữ liệu để tính độ hỗ trợ của nó.. Khai phá tập mục thường xuyên xuất hiện như là bàitoán con của
Trang 1ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG
BẾ QUANG HUẤN
NGHIÊN CỨU MỘT SỐ THUẬT TOÁN KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN VÀ TẬP MỤC CỔ PHẦN CAO
TRONG CƠ SỞ DỮ LIỆU
Chuyên nghành: Khoa học máy tính
Mã số: 60.48.01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: GS TS Vũ Đức Thi
Trang 2THÁI NGUYÊN 2012
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan toàn bộ nội dung trong Luận văn hoàn toàn theo đúngnội dung đề cương cũng như nội dung mà cán bộ hướng dẫn giao cho Nội dungluận văn, các phần trích lục các tài liệu hoàn toàn chính xác Nếu có sai sót tôihoàn toàn chịu trách nhiệm
Tác giả luận văn
Bế Quang Huấn
Trang 4MỤC LỤC
LỜI CAM DOAN i
DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT iv
DANH MỤC CÁC BẢNG BIỂU v
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vi
MỞ ĐẦU 1
Chương 1 KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN VÀ MỘT SỐ MỞ RỘNG .5
1.1 MỞ ĐẦU 5
1.2 CÁC KHÁI NIỆM CƠ BẢN 6
1.2.1 Cơ sở dữ liệu giao tác 7
1.2.2 Tập mục thường xuyên và luật kết hợp 10
1.2.3 Bài toán khai phá luật kết hợp 12
1.3 KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN 14
1.3.1 Các cách tiếp cận khai phá tập mục thường xuyên 14
1.3.2 Thuật toán Apriori 16
1.3.3 Thuật toán FP-growth 22
1.4 MỞ RỘNG BÀI TOÁN KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN 31
1.5 KẾT LUẬN CHƯƠNG 1 33
Chương 2 KHAI PHÁ TẬP MỤC CỔ PHẦN CAO 34
Trang 52.1 GIỚI THIỆU 34
2.2 BÀI TOÁN KHAI PHÁ TẬP MỤC CỔ PHẦN CAO 35
2.3 THUẬT TOÁN FSM 41
2.3.1 Cở sở lý thuyết của thuật toán FSM 41
2.3.2 Thuật toán FSM 42
2.3.3 Nhận xét thuật toán FSM 44
2.4 THUẬT TOÁN AFSM 45
2.4.1 Cơ sở lý thuyết của thuật toán AFSM 45
2.4.2 Thuật toán AFSM 52
2.4.3 Đánh giá thuật toán AFSM 59
2.5 KẾT LUẬN CHƯƠNG 2 60
Chương 3 THỰC NGHIỆM VÀ ĐÁNH GIÁ THUẬT TOÁN 61
3.1 ĐẶT BÀI TOÁN 61
3.2 THIẾT KẾ MODUL CHƯƠNG TRÌNH VÀ GIẢI THUẬT 62
3.3 GIAO DIỆN SỬ DỤNG VÀ CHỨC NĂNG CHƯƠNG TRÌNH 67
3.4 ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN CỦA CHƯƠNG TRÌNH 70
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 73
Trang 6DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT
DB ={T 1 ,T 2 ,…,T m} Cơ sở dữ liệu có m giao tác
Trang 7X Số phần tử của tập hợp X
DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1: Biểu diễn ngang của cơ sở dữ liệu giao tác
Bảng 1.2: Biểu diễn dọc của cơ sở dữ liệu giao tác
Bảng 1.3: Ma trận giao tác của cơ sở dữ liệu bảng 1.1 10
Bảng 1.4: Cơ sở dữ liệu giao tác minh họa thực hiện thuật toán Apriori 20
Bảng 1.5: Cơ sở dữ liệu giao tác minh họa thực hiện thuật toán COFI-tree 25
Bảng 1.6: Các mục dữ liệu và độ hỗ trợ 26
Bảng 1.7: Các mục dữ liệu thường xuyên đã sắp thứ tự 26
Bảng 1.8: Các mục dữ liệu trong giao tác sắp giảm dần theo độ hỗ trợ 27
Bảng 2.1: Cơ sở dữ liệu ví dụ 36
Bảng 2.2: Giá trị lmv và cổ phần các mục dữ liệu trong CSDL bảng 2.1 38
Bảng 2.3: Các tập mục cổ phần cao của CSDL bảng 2.1 38
Bảng 2.4: CSDL minh họa ngữ nghĩa của tập mục cổ phần cao 40
Bảng 2.5a: CSDL minh họa có trường hợp hai hàm tới hạn bằng nhau 51
Bảng 2.5b: CSDL minh học có trường hợp hai hàm tới hạn luôn băng nhau 51
Bảng 2.6: Giá trị hai hàm tới hạn khi k=1 52
Bảng 2.7: Các giá trị lmv và hàm tới hạn với k=1 56
Bảng 2.8: Các giá trị lmv và hàm tới hạn với k=2 57
Trang 8Bảng 2.9: Các giá trị lmv và hàm tới hạn với k=3 57
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1.1: Phân loại các thuật toán khai phá tập mục thường xuyên 15
Hình 1.2: Cây FP-tree của CSDL bảng 1.5 28
Hình 1.3: Cây COFI-tree của mục D 28
Hình 1.4: Các bước khai phá cây D-COFI-tree 31
Hình 2.1: Không gian tìm kiếm tập mục cổ phần cao theo thuật toán AFSM 58
Hình 3.1: Giao diện chính của chương trình demo 63
Hình 3.2: Giao diện hiển thị bảng dữ liệu 64
Hình 3.3: Giao diện cập nhật ngưỡng cổ phần và ngưỡng tin cậy cho bảng dữ liệu 65
Hình 3.4: Giao diện hiển thị kết quả tìm tập mục cổ phần cao 66
Trang 9MỞ ĐẦU
Một trong những ứng dụng quan trọng nhất của công nghệ thông tin trongđời sống là giúp giải quyết các bài toán quản lý Kể từ khi máy tính điện tử trởthành một công cụ lao động quan trọng thì một trong những nhu cầu đầu tiên làlưu trữ, tìm kiếm và xử lý số liệu thống kê Đến nay, các cơ sở dữ liệu đã trở nênkhổng lồ và người ta mong muốn kho dữ liệu đó cần được khai thác hiệu quảhơn trên nhiều bình diện Trong những năm gần đây, khai phá dữ liệu (Datamining) đã trở thành một trong những hướng nghiên cứu lớn nhất của lĩnh vựckhoa học máy tính và công nghệ thông tin Khai phá dữ liệu đang được áp dụngmột cách rộng rãi trong nhiều lĩnh vực kinh doanh và đời sống khác nhau:marketing, tài chính, ngân hàng và bảo hiểm, khoa học, y tế, an ninh, internet…
Khai phá dữ liệu và khám phá tri thức (Data Mining and KnowledgeDiscovery) đâ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 mục thường xuyên là bài toán cóvai trò quan trọng trong nhiều nhiệm vụ khai phá dữ liệu Khai phá tập mụcthường xuyên được biết đến ban đầu là bài toán con của bài toán khai phá luậtkết hợp được giới thiệu bởi Agrawal vào năm 1993 khi phân tích cơ sở dữ liệubán hàng của siêu thị, phân tích sở thích mua của khách hàng bằng cách tìm ranhững mặt hàng khác nhau được khách hàng mua cùng trong một lần mua.Những thông tin như vậy sẽ giúp người quản lý kinh doanh tiếp thị trọn lọc vàthu xếp không gian bày hàng hợp lý hơn, giúp cho kinh doanh hiệu quả hơn
Mô hình khai phá tập mục thường xuyên cơ bản có nhiều ứng dụng trongthực tế nhưng có những hạn chế, không đáp ứng đầy đủ yêu cầu của người sửdụng
Trang 10Để đáp ứng nhu yêu cầu của thực tiễn, một số hướng mở rộng bài toán đãđược quan tâm nghiên cứu Một hướng mở rộng bài toán có rât nhiều ứng dụng
là quan tâm đến cấu trúc dữ liệu và mức độ quan trọng khác nhau của các mục
dữ liệu, các thuộc tính trong cơ sở dữ liệu Theo hướng này, từ bài toán khai phátập mục thường xuyên ban đầu, nhiều nhà nghiên cứu đề xuất các mô hình mởrộng: Khai phá tập mục cổ phần cao, đánh giá sự đóng góp của tập mục dữ liệutrong tổng số các mục dữ liệu của cơ sở dữ liệu
Trên thế giới, các kết quả nghiên cứu về khai phá tập mục cổ phần cao đãđược công bố nhiều từ các nhóm nghiên cứu tại một số trường đại học ở Mỹ,Canada, Úc, Đài Loan, Singapo, Hồng Kông,… Tại Việt Nam, Khai phá luật kếthợp đã được các nhóm nghiên cứu tại Viện Công nghệ Thông tin thuộc ViệnKhoa học và Công nghệ Việt Nam, các nhóm nghiên cứu tại một số trường đạihọc như Đại học Quốc gia Hà Nội, Đại học Bách Khoa Hà Nội, Đại học Quốcgia thành phố Hồ Chí Minh thực hiện và đã có nhiều kết quả được công bố
Với mục đích đóng góp vào lĩnh vực nghiên cứu này, tôi đã chọn đề tàiluận văn: “ Nghiên cứu một số thuật toán khai phá tập mục thường xuyên
và tập mục cổ phần cao trong cơ sở dữ liệu” làm chủ đề nghiên cứu củamình
Mục đích của luận văn là phát triển một số thuật toán khai phá tập mục cổphần cao trong cơ sở dữ liệu giao tác cỡ lớn Trên cơ sở đó áp dụng vào một bàitoán cụ thể là cài đặt trương trình
Với mục tiêu đó, luận văn được trình bày trong ba chương:
Trang 11Chương 1: Khai phá tập mục thường xuyên và một số mở rộng
Trình bày bài toán khai phá tập mục thường xuyên: Các khái niệm cơ bản
và các mô hình khai phá Sau khi trình bày khái quát các thuật toán khai phá,trong trương trình bày chi tiết hai thuật toán tiêu biểu cho hai cách tiếp cận khácnhau là thuật toán Apriori và thuật toán FP-growth Thuật toán Apriori tiêu biểucho phương pháp sinh ra các tập mục ứng viên rồi duyệt cơ sở dữ liệu để tính độ
hỗ trợ của nó Thuật toán FP-growth là thuật toán đầu tiên giới thiệu cấu trúc câyFP-tree nén toàn bộ các giao tác của cơ sở dữ liệu lên cây với 2 lần duyệt, sau đókhai phá theo phương pháp phát triển dần các mẫu ở trên cây mà không cầnduyệt cơ sở dữ liệu nữa Bên cạnh đó luận văn đã trình bày chi tiết phương phápCOFI-tree khai phá cây FP-tree thay cho phương pháp FP-growth
Chương 2: Khai phá tập mục cổ phần cao
Trình bày mô hình khai phá cổ phần cao, giới thiệu thuật toán FSM làthuật toán nhanh khai phá tất cả các tập mục cổ phần cao trong cơ sở dữ liệu giaotác Luận văn đề xuất khái niệm “tập mục cổ phần theo giao tác cao” và chứngminh nó có tính chất phản đơn điệu (Anti Monotone), có thể ứng dụng vào nhiềuthuật toán khai phá tập mục thường xuyên đã có để tìm được tập mục cổ phầntheo giao tác cao, từ đó tìm ra tập mục cổ phần cao Sử dụng ý tưởng này, luận
văn đề xuất thuật toán AFSM (Advanced FSM) dựa trên các bước của thuật toán
FSM với phương pháp mới tỉa hiệu quả hơn các tập mục ứng viên
Chương 3: Thực nghiệm và đánh giá thuật toán
Để có được kết quả này tôi đã nhận được sự quan tâm, động viên, giúp đỡrất nhiều của các Thầy giáo, Cô giáo trong Khoa Công nghệ thông tin - Đại học
Trang 12Thái Nguyên cũng như của bạn bè, đồng nghiệp, đặc biệt là sự chỉ bảo tận tình
của GS TS Vũ Đức Thi và sự nỗ lực của bản thân, đến nay tôi đã hoàn thành đề
tài
Tuy nhiên trong quá trình làm việc, mặc dù đã cố gắng, nỗ lực hết sứcnhưng không thể tránh khỏi thiếu sót, em kính mong nhận được sự chỉ bảo củacác thầy cô để đề tài được hoàn thiện hơn
Tôi xin chân thành cảm ơn !
Thái Nguyên, tháng 09 năm 2012
Học viên
Bế Quang Huấn
Trang 13Chương 1 KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN VÀ MỘT SỐ MỞ RỘNG 1.1 MỞ ĐẦU
Khai phá tập mục thường xuyên đóng vai trò quan trọng trong nhiềunhiệm vụ khai phá dữ liệu Khai phá tập mục thường xuyên xuất hiện như là bàitoán con của nhiều lĩnh vực khai phá dữ liệu như khám phá luật kết hợp, khámphá mẫu tuần tự, phân tích tương quan, phân lớp, phân cụm dữ liệu, khai pháWeb,… Bài toán khai phá tập mục thường xuyên được giới thiệu lần đầu bởiAgrawal vào năm 1993 khi phân tích cơ sở dữ liệu bán hàng siêu thị trong môhình của bài toán khai phá luật kết hợp Khai phá luật kết hợp là phát hiện nhữngmối quan hệ giữa các giá trị dữ liệu trong cơ sở dữ liệu, các mối quan hệ đóchính là các luật kết hợp
Khai phá luật kết hợp có hai bước: Bước thứ nhất, tìm các tập mục
thường xuyên thỏa mãn ngưỡng độ hỗ trợ tối thiểu minsup cho trước, bước thứ
hai, từ các tập mục thường xuyên tìm được, sinh ra các luật kết hợp thỏa mãn
ngưỡng độ tin cậy minconf cho trước Mọi khó khăn của bài toán khai phá luật
kết hợp tập trung ở bước thứ nhất, đó là khai phá tất cả các tập mục thườngxuyên thỏa mãn ngưỡng độ cho trước
Kể từ khi Agrawal đề xuất, khai phá tập mục thường xuyên đã thu hútđược sự quan tâm của nhiều nhà nghiên cứu, đã có hàng trăm kết quả nghiên cứuđược công bố giới thiệu các thuật toán mới hay đề xuất các giải pháp nâng caohiệu quả các thuật toán đã có Tâp mục thường xuyên đã có vai trò quan trọngtrong nhiều ứng dụng thực tế như quản lý quan hệ khách hàng, nâng cao hiệu
Trang 14quả của thương mại điên tử, trong lĩnh vực tin sinh học, phân tích cấu trúcProtein va AND, mở rộng truy vấn, phát hiện xâm nhập mạng,…
Mô hình khai phá tập mục thường xuyên cơ bản có nhiều ứng dụng trongthực tế nhưng có những hạn chế, không đáp ứng đầy đủ yêu cầu của người sửdụng Ràng buộc về độ hỗ trợ và độ tin cậy của luật kết hợp chỉ mang ngữ nghĩathống kê, không phản ánh được vai trò khác nhau của các thuộc tính cũng nhưđặc tính dữ liệu vốn có của chúng trong cơ sở dữ liệu
Để đáp ứng nhu cầu thực tiễn, khai phá tập mục thường xuyên đã cónhiều cách thức mở rộng và ứng dụng, từ thay đổi phương pháp luận đến thayđổi đa dạng các kiểu dữ liệu, mở rộng các nhiệm vụ khai phá và đa dạng các ứngdụng mới Trong những năm qua, đã có rất nhiều hướng mở rộng bài toán đượcquan tâm nghiên cứu
Chương một này sẽ trình bày các vấn đề cơ bản của bài toán khai phá tậpmục thường xuyên và một số mở rộng của bài toán
1.2 CÁC KHÁI NIỆM CƠ BẢN
Khai phá luật kết hợp là một kỹ thuật quan trọng của khai phá dữ liệu.Mục tiêu khai phá là phát hiện những mối quan hệ giữa các giá trị dữ liệu trong
cơ sở dữ liệu Mô hình đầu tiên của bài toán khai phá luật kết hợp là mô hình nhịphân (hay còn gọi là mô hình cơ bản) được R Agrawal, T Imielinski và A.Swami đề xuất vào năm 1993, xuất phát từ nhu cầu phân tích dữ liệu của cơ sở
dữ liệu giao tác, phát hiện các mối quan hệ giữa các tập mục hàng hóa (Itemsets)
đã bán được tại các siêu thị Việc xác định các quan hệ này không phân biệt vai
Trang 15trò khác nhau cũng như không dựa vào các đặc tính dữ liệu vốn có của các thuộctính mà chỉ dựa vào sự xuất hiện cùng lúc của chúng.
Phần tiếp sau đây nêu một số khái niệm cơ bản và phát biểu bài toán khaiphá luật kết hợp, bài toán đầu tiên dẫn đến bài toán khai phá tập mục thườngxuyên
1.2.1 Cơ sở dữ liệu giao tác
Định nghĩa 1.1:
i gdfg
Cho tập các mục (item) I= {i 1 ,i 2 ,…,i n } Một giao tác (transaction) T là một tập con của I, T⊆I Cơ sở dữ liệu giao tác là một tập các giao tác DB={T 1 ,T 2 ,
…,T m } Mỗi giao tác được gán một định danh TID Một tập mục con X⊆I, gồm k
mục phân biệt được gọi là một k-tập mục Giao tác T gọi là chứa tập X nếu X⊆T.
Biểu diễn cơ sở dữ liệu giao tác: Cơ sở dữ liệu giao tác thường được
biểu diễn ở dạng biểu diễn ngang, biểu diễn dọc và biểu diễn bởi ma trận giaotác
Biểu diễn ngang: Cơ sở dữ liệu là một danh sách các giao tác Mỗi giao
tác có một định danh TID và một danh sách các mục dữ liệu trong giao tác đó.
Trang 16Biểu diễn dọc: Cơ sở dữ liệu là một danh sách các mục dữ liệu, mỗi mục
dữ liệu có một danh sách tất cả các định danh của các giao tác chứa mục dữ liệu này
Bảng 1.2: Biểu diễn dọc của cơ sở dữ liệu giao tác.
Trang 17Mục dữ liệu Định danh giao tác
Trang 18Ví dụ 1.2: Cơ sở bản dữ liệu 1.1 biểu diễn ở dạng ma trận giao tác là:
Bảng 1.3: Ma trận giao tác của cơ sở dữ liệu bảng 1.1.
1.2.2 Tập mục thường xuyên và luật kết hợp
Định nghĩa 1.2: Cho tập mục X ⊆ I Ta gọi độ hỗ trợ (Support) của X trong cơ
sở dữ liệu giao tác DB, ký hiệu sup(X), là tỷ lệ phần trăm các giao tác chứa X
trên tổng số các giao tác trong DB, tức là : sup(X)= { }
DB
X T DB
Ta có: 0 ≤ sup(X) ≤ 1 với mọi tập mục X ⊆ I.
Định nghĩa 1.3: Cho tập mục X ⊆ I và ngưỡng hỗ trợ tối thiểu (minimum
support) minisup ∈[0,1 ] (được xác định trước bởi người sử dụng) X được gọi là
tập mục thường xuyên(frequent itemset hoặc large itemset) với độ hỗ trợ tối
Trang 19thiểu minisup nếu sup(X) ≥ minisup, ngược lại X gọi là tập mục không thường
xuyên
Định nghĩa 1.4: Một luật kết hợp là biểu thức dạng X → Y, trong đó X và Y là
các tập con của I, X ∩ Y = ∅; X gọi là tiền đề, Y gọi là kết luận của luật.
Luật kết hợp có hai thông số quan trọng là độ hỗ trợ và độ tin cậy.
Định nghĩa 1.5: Độ hỗ trợ (Support) của một luật kết hợp X → Y, ký hiệu là
sup(X → Y), là độ hỗ trợ của tập mục X ∪ Y, sup(X → Y) =sup(X ∪ Y).
Như vậy độ hỗ trợ của luật kết hợp X → Y chính là xác suất P(X ∪ Y)
của sự xuất hiện đồng thời của X và Y trong một giao tác.
Ta có: 0 ≤ sup(X → Y) ≤ 1.
Định nghĩa 1.6: Độ tin cậy(Confidence) của một luật X → Y , ký hiệu conf(X
→ Y), là tỷ lệ phần trăm giữa số giao tác chứa X ∪ Y và số giao tác chứa X trong
cơ sở dữ liệu DB.
Conf(X → Y) =sup(sup(X X∪)Y)
Độ tin cậy của luật kết hợp X → Y chính là xác suất có điều kiện P(Y/X):
P(Y/X) = = =
)sup(
)sup(
X
Y
X ∪
Và ta có 0 ≤ conf(X → Y) ≤ 1
Trang 20Các luật thỏa mãn cả hai ngưỡng độ hỗ trợ tối thiểu (minsup) và độ tin cậy tối thiểu (minconf), tức thỏa mãn sup(X → Y) ≥ minsup và conf(X → Y) ≥
minconf, được gọi là luật kết hợp mạnh.
Tính chất cơ bản của tập mục thường xuyên:
Cho cơ sở dữ liệu giao tác DB và ngưỡng độ hỗ trợ tối thiểu minsup Các
tập mục thường xuyên có các tính chất sau:
(1) Nếu X, Y là các tập và X ⊆ Y thì sup(X) ≥ sup(Y).
(2) Nếu một tập mục là không thường xuyên thì mọi tập cha của nó cũngkhông thường xuyên
(3) Nếu một tập mục là thường xuyên thì mọi tập con khác rỗng của nócũng là tập mục thường xuyên
Tính chất (3) được gọi là tính chất Apriori, tính chất này là cơ sở để rútgọn không gian tìm kiếm các tập mục thường xuyên
1.2.3 Bài toán khai phá luật kết hợp
Cho cơ sở dữ liệu giao tác DB, ngưỡng độ hỗ trợ tối thiểu minsup và ngưỡng độ tin cậy tối thiểu minconf.
Yêu cầu: Tìm tất cả các luật kết hợp X → Y trên cơ sở dữ liệu DB sao cho
sup(X → Y) ≥ minsup và conf(X → Y) ≥ minconf.
Bài toán khai phá luật kết hợp này được gọi là bài toán cơ bản hay bài toánnhị phân, vì ở đây, giá trị của mục dữ liệu trong cơ sở dữ liệu là 0 hoặc 1 (xuấthiện hay không xuất hiện)
Trang 21Bài toán khai phá luật kết hợp được chia thành hai bài toán con Bài toánthứ nhất là tìm tất cả các tập mục thỏa mãn độ hỗ trợ tối thiểu cho trước, tức làtìm tất cả các tập mục thường xuyên Bài toán thứ hai là sinh ra các luật kết hợp
từ các tập mục thường xuyên đã tìm được thỏa mãn độ tin cậy tối thiểu chotrước
Bài toán thứ hai được giải quyết như sau: Giả sử đã tìm được X là tập mụcthường xuyên, ta sinh ra các luật kết hợp bằng cách tìm ∀ Y ⊂ X, kiểm tra độ tin
cậy của luật X\Y→Y có thỏa mãn độ tin cậy tối thiểu không Bài toán thứ hai này
đơn giản, mọi khó khăn nằm ở bài toán thứ nhất, hầu hết các nghiên cứu về luậtkết hợp đều tập trung giải quyết bài toán thứ nhất là tìm các tập mục thườngxuyên
Phần tiếp theo sau đây sẽ trình bày chi tiết về khai phá tập mục thườngxuyên
1.3 KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN
1.3.1 Các cách tiếp cận khai phá tập mục thường xuyên
Các nghiên cứu về khai phá tập mục thường xuyên vào các tim thuật toánmới hoặc đề xuất giải pháp nâng cao hiệu quả các thuật toán đã có Phần này sẽtrình bày khái quát các kỹ thuật chính để khai phá tập mục thường xuyên
Trang 22Bài toán khai phá tập mục thường xuyên có thể chia thành hai bài toánnhỏ: Tìm các tập mục ứng viên và tìm các tập mục thường xuyên Tập mục ứngviên là tập mục mà ta hy vọng nó là tập mục thường xuyên, phải tính độ hỗ trợcủa nó để kiểm tra Tập mục thường xuyên là tập mục có độ hỗ trợ lớn hơn hoặcbằng ngưỡng hỗ trợ tối thiểu cho trước Đã có rất nhiều thuật toán tìm tập mụcthường xuyên được công bố, ta có thể phân chúng theo hai tiêu chí sau:
• Phương pháp duyệt qua không gian tìm kiếm
• Phương pháp xác định độ hỗ trợ của tập mục
Phương pháp duyệt qua không gian tìm kiếm được phân làm hai cách:Duyệt theo chiều rộng(Breadth First Search - BFS) và duyệt theo chiềusâu(Depth First Search - DFS)
Duyệt theo chiều rộng là duyệt qua cơ sở dữ liệu gốc để tính độ hỗ trợ củatất cả các tập mục ứng viên có (k-1) mục trước khi tính độ hỗ trợ của các tậpmục ứng viên có k mục Với cơ sở dữ liệu có n mục dữ liệu, lần lặp thứ k phảikiểm tra độ hỗ trợ của tất cả = tập mục ứng viên có k mục
Duyệt theo chiều sâu là duyệt qua cơ sở dữ liệu đã được chuyển đổi thànhcấu trúc cây, quá trình duyệt gọi đệ quy theo chiều sâu của cây
Với cơ sở dữ liệu có n mục dữ liệu, không gian tìm kiếm có tất cả 2n tậpcon, rõ ràng đây là bài toán NP khó, do vậy cần phải có phương pháp duyệt thíchhợp, tỉa nhanh các tập ứng viên
Trang 23Phương pháp xác định độ hỗ trợ của tập mục X được chia làm hai cách: cách thứ nhất là đếm số giao tác chứa X trong cơ sở dữ liệu và cách thứ hai là tính phần giao của các tập chứa định danh của các giao tác chứa X.
Các thuật toán khai phá có thể phân loại như sau:
Hình 1.1: Phân loại các thuật toán khai phá tập mục thường xuyên.
Phần tiếp sau mô tả chi tiết nội dung hai thuật toán tiêu biểu và là cơ sở đểphát triển các thuật toán mới trong luận án: Thuật toán Apriori tiêu biểu chophương pháp sinh ra các tập mục ứng viên và kiểm tra độ hỗ trợ của chúng;Thuật toán FP-growth, đại diện cho phương pháp không sinh ra tập mục ứngviên, cơ sở dữ liệu được nén lên cấu trúc cây, sau đó khai phá bằng cách pháttriển dần các mẫu cây này
1.3.2 Thuật toán Apriori
BFS
Eclat
growth Partition
FP-AIS Apriori Dic
Giao
Trang 24Apriori là thuật toán khai phá tập mục thường xuyên do R.Agrawal vàR.Srikant đề xuất vào năm 1993 Ý tưởng của thuật toán Apriori còn là nền tảngcho việc phát triển nhiều thuật toán khai phá tập mục thường xuyên khác về sau.
Ý tưởng chính của thuật toán như sau: sinh ra các tập mục ứng viên từ cáctập mục thường xuyên ở bước trước, sử dụng kỹ thuật “tỉa” để bỏ đi các tập mụcứng viên không thỏa mãn ngưỡng hỗ trợ cho trước Cơ sở của kỹ thuật này là
tính chất Apriori(xem 1.2.2): Bất kỳ tập con nào của tập mục thường xuyên cũng
phải là tập mục thường xuyên Vì vậy các tập mục ứng viên gồm k mục có thể
được sinh ra bằng cách kết nối các tập mục thường xuyên có (k-1) mục và loại
bỏ tập mục ứng viên nếu nó có chứa bất kỳ một tập con nào không phải làthường xuyên
Giả sử các mục dữ liệu trong mỗi giao tác được lưu theo trật tự từ điển.Thuật toán sử dụng các ký hiệu sau đây:
Tập k mục Chức năng
Lk Tập các k-tập mục thường xuyên(với độ hỗ trợ tối thiểu
minsup) Mỗi phần tử của tập này có 2 trường:
i) Tập mục(itemsets)ii) Độ hỗ trợ(count)
Ck Tập các k-tập mục ứng viên(các tập mục thường xuyên tiềm
năng) Mỗi phần tử của tập này có 2 trường:
Trang 25i) Tập mục(itemsets) ii) Độ hỗ trợ(count)
Thuật toán duyệt cơ sở dữ liệu nhiều lần Mỗi lần duyệt, thuật toán thực
hiện hai bước: bước kết nối và bước tỉa Trong lần lặp thứ k, thuật toán nối hai
(k-1)-tập mục để sinh ra k-tập mục, sử dụng tính chất Apriori để tỉa các tập ứngviên Bước nối và bước tỉa như sau:
Bước kết nối (tìm Ck): Tập các k-tập mục ứng viên Ck được sinh ra bở việc kếtnối Lk-1với chính nó Hai tập mục L1 và L2 của Lk-1 được kết nối nếu chúng có (k-2) mục dữ liệu đầu bằng nhau, mục dữ liệu thứ (k-1) của L1 nhỏ hơn của L2:
Thuật toán Apriori(tìm các tập mục thường xuyên)
Input: Cơ sở dữ liệu DB, ngưỡng độ hỗ trợ minsup
Trang 26Output: Tập các tập mục thường xuyên L trong DB
Trang 27Ví dụ minh họa thuật toán Apriori:
Ta minh họa thực hiện thuật toán Apriori trên cơ sở dữ liệu trong bảng 1.4
với minsup =50%, tức xuất hiện ít nhất 2 lần.
Bảng 1.4: Cơ sở dữ liệu giao tác minh họa thực hiện thuật toán Apriori
TID Các mục dữ liệu
Trang 29Nối L3 với L3 được L4 = ∅, thuật toán dừng.
Các tập mục thừng xuyên tìm được theo thuật toán Apriori là:
L = L1 ∪ L2 ∪ L3 = {A, B, C, E, AC, BC, BE, CE, BCE}
C 3
Trang 30Nhận xét: Thuật toán duyệt cơ sở dữ liệu nhiều lần, số lần duyệt bằng độ
dài của tập mục thường xuyên dài nhất tìm được
Thuật toán FP-growth
Thuật toán Apriori gặp phải hai chi phí lớn:
- Chi phí sinh ra số lượng khổng lồ các tập ứng viên Ví dụ, nếu có 104
mục thường xuyên thì thuật toán Apriori sẽ cần sinh ra hơn 107 các ứng viên tập mục và thực hiện kiểm tra độ hỗ trợ của chúng
2 Lặp nhiều lần duyệt cơ sở dữ liệu, số lần duyệt cơ sở dữ liệu của thuậttoán Apriori bằng độ dài của tập mục thường xuyên dài nhất tìm được Thuậttoán Apriori chỉ thích hợp cho các cơ sở dữ liệu thưa (sparse), với các cơ sở dữliệu dày (dense) thì thuật toán thực hiện kém hiệu quả
Để khắc phục nhược điểm trên của thuật toán Apriori, J Han, J Pei, Y.Yin và R Mao đề xuất thuật toán FP-growth Thuật toán FP-growth được xâydựng với 3 kỹ thuật chính:
(1) Nén dữ liệu thích hợp vào một cấu trúc cây gọi là cây FP-tree Chỉ có các1-tập mục(1-item) ở trong cây và các nút của cây được sắp xếp để các nútxuất hiện thường xuyên hơn có thể dễ dàng chia sẽ với các nút xuất hiện íthơn
(2) Thực hiện phương pháp khai phá phát triển (growth) từng đoạn dựa trêncây FP-tree gọi là phương pháp FP-growth
(3) Kỹ thuật tìm kiếm được dùng ở đây là dựa vào sự phân chia, “chia để trị”,phân rã nhiệm vụ khai phá thành các nhiệm vụ nhỏ hơn
Trang 31Thuật toán FP-growth do nén toàn bộ cơ sở dữ liệu lên một cấu trúc dữliệu nhỏ hơn là cây FP-tree nên tránh được việc duyệt nhiều lần cơ sở dữliệu(thuật toán chỉ duyệt cơ sở dữ liệu 2 lần) Tiếp theo thuật toán khai phá câybằng cách phát triển dần các mẫu mà không sinh các tập mục ứng viên, do đótránh được khối lượng tính toán lớn Tuy vậy, thuật toán FP-growth khai phá câyFP-tree sử dụng phương pháp đệ quy, đòi hỏi khối lượng tính toán lớn và cầnnhiều bộ nhớ Năm 2003, nhóm tác giả Mohammad El-Hajj và Osmar R Zaiane
ở đại học Alberta Edmonton, Canada đề xuất thuật toán không đệ quy khai phácây FP-tree dựa trên cấu trúc cây COFI-tree có nhiều ưu điểm hơn thuật toán FP-growth
Thuật toán COFI-tree gồm 2 giai đoạn chính Giai đoạn thứ nhất, xâydựng cây FP-tree Giai đoạn thứ hai, khai phá cây FP-tree chia thành nhiều bướctương ứng với các mục dữ liệu trong bảng đầu mục của cây FP-tree, mỗi bước sửdụng một cấu trúc dữ liệu phụ trợ là cây COFI-tree của mục dữ liệu đó
Mỗi nút của cây FP-tree gồm 3 trường: tên mục dữ liệu, độ hỗ trợ và mộtcon trỏ(con trỏ này trỏ đến nút tiếp theo cùng tên trên cây hoặc là null nếu khôngcó) Cây FP-tree có một bảng đầu mục(header table) Mỗi mục của bảng có 3trường: tên mục dữ liệu, độ hỗ trợ và con trỏ, con trỏ này trỏ đến nút đầu tiênbiểu diễn mục dữ liệu này trong cây
Cây COFI-tree có bảng đầu mục giống như cây FP-tree nhưng các mục dữliệu có thứ tự ngược lại Mỗi mục trong bảng đầu mục chứa 3 trường: tên mục
dữ liệu, độ hỗ trợ địa phương(số lần xuất hiện của mục dữ liệu trong cây tree) và con trỏ(trỏ đến nút đầu tiên biểu diễn mục dữ liệu này trong cây) Mộtdanh sách liên kết được duy trì giữa các nút cùng tên để thuận lợi cho quá trình
Trang 32COFI-khai phá Mỗi nút của cây COFI-tree có 4 trường: tên mục dữ liệu, hai biến s vàp(biến s biểu diễn độ hỗ trợ của nút, biến p cho biết số lần nút đó đã tham gia tạomẫu), con trỏ(trỏ đến nút tiếp theo cùng tên trên cây).
Ta minh họa thuật toán COFI-tree qua xét cơ sở dữ liệu bảng 1.5 với
Trang 33Duyệt cơ sở dữ liệu lần thứ nhất tính được độ hỗ trợ của mỗi mục dữ liệu,
loại bỏ các mục dữ liệu không thỏa mãn ngưỡng minsup=3, sắp các mục còn lại
theo thứ tự giảm dần của độ hỗ trợ, nhận được bảng 1.6
Trang 34Giai đoạn 2: Khai phá cây FP-tree.
Xét lần lượt các mục dữ liệu từ dưới lên trong bảng đầu mục của cây tree, với mỗi mục dữ liệu, xây dựng cây COFI-tree của nó, khai phá cây này tìmmẫu thường xuyên, sau khi khai phá xong, loại bỏ cây đó và xây dựng câyCOFI-tree cho mục dự liệu tiếp theo Minh họa thuật toán qua xét mục dữ liệuđầu tiên D như sau:
FP-• Xây dựng cây COFI-tree của mục D(gọi cây này là D-COFI-tree)
Có 3 nút trên cây có nhãn D, từ các nút này đi lên gốc tìm được 3 đường đi:(D:2,B:2,C:8), (D:1,B:2,A:3) và (D:2,C:8), các đường đi này xác định các mẫu
dữ liệu với độ hỗ trợ bằng độ hỗ trợ của nút đầu D, tức là: DBC:2, DBA:1 vàDC:2 Xây dựng cây D-COFI-tree từ các mẫu này Hình 1.4 biểu diễn cây D-COFI-tree
Bảng 1.8: Các mục dữ liệu trong giao tác sắp giảm dần theo độ hỗ trợ.
Trang 35Hình 1.2: Cây FP-tree của CSDL bảng 1.5
Hình 1.3: Cây COFI-tree của mục D
Trang 36• Khai phá cây D-COFI-tree: xét lần lượt các mục dữ liệu trong bảng đầu
mục, bắt đầu từ mục có độ hỗ trợ lớn nhất là C, cuối cùng đến mục có độ
hỗ trợ nhỏ nhất A Mục C có 2 nhánh trên cây là (C:2, B:3, D:5) và (C:2,D:5) Nhánh thứ nhất tạo ra mẫu CBD với độ hỗ trợ là s – p = 2 - 0 = 2(s
và p là hai biến tại nút nhãn C) Thuật toán tăng giá trị biến p của tất cả
các nút trên đường đi này lên 2 Mẫu CBD:2 và tất cả các mẫu con có
chứa D của nó được cất vào danh sách ứng viên của mục D là {CBD:2,CD:2, BD:2} (bước 1)
Nhánh thứ hai nhận được mẫu CD:2 và kết nạp nó vào danh sách ứngviên Trong danh sách ứng viên đã có mẫu CD:2 nên chỉ điều chỉnh độ hỗ trợ củamẫu này thành CD:4 và danh sách ứng viên trở thành {CBD:2, CD:4, BD:2}.Tăng biến p của các nút trên đường đi này lên 2 đơn vị (bước 2)
Tương tự, xét tiếp mục B, có một nhánh là BD nên sinh ra mẫu BD:1, kếtnạp vào danh sách ứng viên được {CBD:2, CD:4, BD:3} (bước 3)
Mục A còn lại trong bảng đầu mục bỏ qua vì có độ hỗ trợ nhỏ hơn minsup
(bước 3) Hình 1.5 minh họa các bước khai phá cây D-COFI-tree
Bước 1
Các ứng viên: CBD:2, CD:2, BD:2
Trang 37Bước 3
Các ứng viên: CBD:2, CD:4, BD:3
Trang 38Hình 1.4: Các bước khai phá cây D-COFI-tree.
Thuật toán duyệt qua các mẫu trong danh sách ứng viên, loại các mẫukhông thỏa mãn ngưỡng hỗ trợ và nhận được các mẫu thường xuyên là CD:4,BD:3 Cây D-COFI-tree được loại bỏ và tiếp tục xây dựng cây COFI-tree chomục dữ liệu tiếp theo
1.4 MỞ RỘNG BÀI TOÁN KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN
Mô hình khai phá tập mục thường xuyên cơ bản có nhiều ứng dụng trongthực tế nhưng nó có những hạn chế, không đáp ứng đầy đủ yêu cầu của người sửdụng Ràng buộc về độ hỗ trợ của tập mục thường xuyên chủ yếu mang ngữnghĩa thống kê, không phản ánh được vai trò khác nhau của các thuộc tính cũngnhư đặc tính dữ liệu vỗn có của chúng trong cơ sở dữ liệu
Bước 4
Các ứng viên: CBD:2, CD:4, BD:3
Trang 39Để đáp ứng yêu cầu của thực tiễn, bài toán khai phá tập mục thường xuyên
đã có nhiều cách thức mở rộng và ứng dụng
Một hướng mở rộng bài toán có nhiều ứng dụng là quan tâm đến cấu trúc
dữ liệu và mức độ quan trọng khác nhau của các mục dữ liệu, các thuộc tínhtrong cơ sở dữ liệu Một số mô hình mở rộng bài toán đã được nghiên cứu là:
• Quan tâm đến mức độ quan trọng khác nhau của các mục dữ liệu bằngcách gán cho mỗi mục một giá trị được gọi là trọng số Độ hỗ trợ và độ tincậy của luật kết hợp khi đó lần lượt trở thành độ hỗ trợ và độ tin cậy cótrọng số Luật kết hợp có độ hỗ trợ và độ tin cậy trọng số hóa được gọi làluật kết hợp có trọng số Các thuật toán MINWAL(O), MINWAL(W) giảiquyết vấn đề này
• Quan tâm đến các kiểu thuộc tính khác nhau trong cơ sở dữ liệu như nhịphân, đa phân, định lượng Luật kết hợp khi đó được gọi là luật kết hợpđịnh lượng Để tìm các luật kết hợp định lượng người ta đưa bài toán vềdạng nhị phân bằng cách phân khoảng các giá trị thuộc tính, sau đó có thể
sử dụng các thuật toán khai phá luật kết hợp nhị phân đã biết
• Chú ý đến cả cấu trúc dữ liệu lẫn mức độ quan trọng khác nhau của cácthuộc tính trong cơ sở dữ liệu Theo hướng này, nhiều nhà nghiên cứu đềxuất các mô hình mở rộng khai phá tập mục cổ phần cao, đánh giá sự đónggióp của tập mục trong tổng số các mục dữ liệu của cơ sở dữ liệu
Trang 401.5 KẾT LUẬN CHƯƠNG 1
Chương 1 trình bày chi tiết các khái niệm cơ bản, bài toán khai phá tậpmục thường xuyên và hai thuật toán cơ bản là thuật toán Apriori và FP-growth.Thuật toán Apriori tiêu biểu cho phương pháp sinh ra các tập mục ứng viên rồiduyệt cơ sở dữ liệu kiểm tra độ hỗ trợ của chúng, thuật toán FP-growth đại diệncho phương pháp không sinh ra các tập mục ứng viên mà nén cơ sở dữ liệu lêncấu trúc cây, sau đó khai phá cây này Ở đây trình bày phương pháp COFI-treekhai phá cây FP-tree để tìm các tập mục thường xuyên thay cho phương phápFP-growth của J Han
Chương hai của luận văn trình bày hai mô hình mở rộng của bài toán khaiphá tập mục thường xuyên là khai phá tập mục cổ phần cao, đề xuất hai thuậttoán khai phá cho các mô hình này