Trong tin sinh học: cây con phổ biến sử dụng để dự đoán mối quan hệ tương tác giữa các protein, dự đoán cấu trúc bậc 2 phân tử của protein, dò tìm đột biến trong cấu trúc protein v.v … T
Trang 1MỤC LỤC
DANH MỤC CÁC HÌNH ẢNH iii
DANH MỤC BẢNG BIỂU v
DANH MỤC CÁC TỪ VIẾT TẮT vi
MỞ ĐẦU 1
CHƯƠNG 1 KHAI PHÁ DỮ LIỆU VÀ CẤU TRÚC CÂY DỮ LIỆU 5
1.1 Khai phá dữ liệu 5
1.1.1 Tại sao lại cần khai phá dữ liệu 5
1.1.2 Khai phá dữ liệu là gì? 5
1.1.3 Các chức năng chính của khai phá dữ liệu 7
1.1.4 Các công cụ khai phá dữ liệu 8
1.1.5 Các kỹ thuật khai phá dữ liệu 8
1.1.6 Ứng dụng của khai phá dữ liệu 13
1.2 Cấu trúc cây dữ liệu 13
1.2.1 Các loại cây 13
1.2.2 Các cách biểu diễn cây cấu trúc dữ liệu 18
1.3 Dạng chuẩn của cây dữ liệu 19
1.3.1 Dạng chuẩn chính tắc theo chiều rộng (BFCF) 19
1.3.2 Dạng chính tắc theo chiều sâu DFCF 24
1.3.3 Cây liệt kê 29
1.4 Kết luận chương 1 33
CHƯƠNG 2 PHÁT HIỆN CÁC CÂY CON PHỔ BIẾN 34
2.1 Khai phá cây con phổ biến 34
2.1.1 Cây con phổ biến 34
2.1.2 Bài toán khai phá các cây con phổ biến 35
Trang 22.2 Thuật toán khai phá các cây con phổ biến trong cơ sở dữ liệu cây dữ liệu 36
2.2.1 Thuật toán khai phá các cây con phổ biến DTMiner 36
2.2.2 Thuật toán khai phá cây con phổ biến đóng và cực đại 39
2.2.3 Thứ tự tính toán - Heuristic 48
2.2.4 Thuật toán khai phá các cây con phổ biến đóng và cực đại CMT_Miner(D, minsup) 50
2.2.5 Thuật toán khai phá các cây conphổ biến đóng và cực đạiNCMT_Miner(D, minsup) 52
2.3 Kết luận chương 2 55
CHƯƠNG 3 CHƯƠNG TRÌNH THỬ NGHIỆM 56
3.1 Ứng dụng phát hiện cấu trúc chức năng của protein trong tin sinh học 56
3.1.1 Phân tích trình tự 57
3.1.2 Dò tìm đột biến và SNP 57
3.1.3 Phân tích chức năng gene 57
3.1.4 Nhận diện protein 58
3.1.5 Dự đoán cấu trúc protein 58
3.2 Chương trình thử nghiệm 59
3.2.1 Môi trường thử nghiệm 59
3.2.2 Kết quả thực nghiệm 59
3.2.3 So sánh kết quả thực nghiệm 67
3.3 Kết luận chương 3 68
KẾT LUẬN 69
TÀI LIỆU THAM KHẢO 70
Trang 3DANH MỤC CÁC HÌNH ẢNH
Hình 1-1 Các bước trong Khai phá dữ liệu & KDD [6] 7
Hình 1-2 Luồng thông tin được sử dụng theo cách kết hợp[1] 9
Hình 1-3 Phân cụm [6] 10
Hình 1-4 Cây quyết định [6] 12
Hình 1-5 Tám cây có thứ tự nhận được từ một cây không có thứ tự 15
Hình 1-6 Cây tìm kiếm nhị phân với tập khóa là các số nguyên 16
Hình 1-7 Cây t’ ở dạng chính tắc DFCF 29
Hình 1-8 Cây liệt kê các cây con phổ biến 33
Hình 2-1 Chuẩn hóa và đánh số các cây giao tác 36
Hình 2-2 CSDL gồm 3 cây giao tác 41
Hình 2-3 (a) Đồ thị định hướng phi chu trình liệt kê DAG, (b) Cây liệt kê 42
Hình 2-4 Cây t và các cây t rên a), b), c), d) trong lớp phủ Bt 43
Hình 2-5 a) Cây trước khi tỉa b) Cây sau khi tỉa 44
Hình 2-6 a) Đường đi phải nhất, b) Lớp phủ trái/phải 45
Hình 2-7 Vị trí của đỉnh mới có thể được thêm vào một cây con phổ biến t 46
Hình 3-1 Cây không có thứ tự T1, T2,T3 59
Hình 3-2 Chính tắc hóa cây T1 60
Hình 3-3 Chính tắc hóa cây T2 60
Hình 3-4 Chính tắc hóa cây T3 60
Hình 3-5 Tập chuỗi mã hóa cây chính tắc T1 61
Hình 3-6 Tập chuỗi mã hóa cây chính tắc T2 61
Hình 3-7 Tập chuỗi mã hóa cây chính tắc T3 61
Hình 3-8 Tập các cây con phổ biến đóng cực đại của tập CSDL T1 62
Hình 3-9 Tập các cây con phổ biến đóng cực đại của tập CSDL T1, T2 62
Trang 4Hình 3-10 Tập các cây con phổ biến đóng cực đại của tập CSDL T1, T2, T3 63
Hình 3-11 Chính tắc hóa cây T1 63
Hình 3-12 Chính tắc hóa cây T2 64
Hình 3-13 Chính tắc hóa cây T3 64
Hình 3-14 Tập chuỗi mã hóa cây chính tắc T1 64
Hình 3-15 Tập chuỗi mã hóa cây chính tắc T2 65
Hình 3-16 Tập chuỗi mã hóa cây chính tắc T3 65
Hình 3-17 Tập các cây con phổ biến đóng cực đại của tập CSDL T1 65
Hình 3-18 Tập các cây con phổ biến đóng cực đại của tập CSDL T1, T2 66
Hình 3-19 Tập các cây con phổ biến đóng cực đại của tập CSDL T1, T2, T3 66
Hình 3-20 So sánh số lượng cây con phổ biến đóng cực đại của 2 thuật toán 67
Trang 5DANH MỤC BẢNG BIỂU
Bảng 3.1 Cấu hình phần cứng sử dụng trong thực nghiệm 59 Bảng 3.2 Công cụ phần mềm sử dụng trong thực nghiệm 59
Trang 6DANH MỤC CÁC TỪ VIẾT TẮT
Depth-first search DFS Tìm kiếm theo chiều sâu Breadth-first search BFS Tìm kiếm theo chiều rộng Breadth-Frist String Encoding BFSE Mã chuỗi theo chiều rộng Breadth-First Canonical String BFCS Chuỗi chuẩn theo chiều rộng Breadth-First Canonical Form BFCF Dạng chuẩn theo chiều rộng Depth-First String Encoding DFSE Mã chuỗi theo chiều sâu Depth-First Canonical Form DFCF Dạng chuẩn theo chiều sâu
phichu trình Partially Ordered set POSET Tập thứ tự bộ phận Frequent Subgraphs Mining FSM Khai phá đồ thị con phổ biến Inductive Logic Programming ILP Chương trình Logic qui nạp eXtensible Markup Language XML Ngôn ngữ đánh dấu Mở rộng
Trang 7MỞ ĐẦU
1 Đặt vấn đề
Cùng với sự phát triển của xã hội, con người đã tạo ra những thiết bị xử lý dữ liệu thông minh đáp ứng nhu cầu của họ Thế hệ máy tính đầu tiên xuất hiện vào những thập kỉ đầu của thế kỉ 20, đó là những cỗ máy với kích thước khổng lồ có khi bằng cả gian phòng lớn và tiêu thụ rất nhiều điện năng Tuy nhiên do nhu cầu xử lý
dữ liệu ngày càng lớn, con người đã sáng tạo và cải tiến các thế hệ máy tính trở nên gọn nhẹ với những chiếc máy tính xách tay chỉ nặng vài kilogam và tiêu thụ rất ít điện năng đã đáp ứng được hầu hết các yêu cầu của con người trong việc xử lí khối
dữ liệu lớn và phức tạp
Đồng hành với sự phát triển của thông tin và công nghệ, khai phá dữ liệu ra đời mở ra một hướng đi mới để giải quyết những yêu cầu về xử lý khối dữ liệu khổng lồ Hướng đi này đã được ứng dụng vào rất nhiều lĩnh vực, ví dụ như: tin sinh học, điều trị y học, phân tích dữ liệu và hỗ trợ ra quyết định, tài chính và thị trường chứng khoán, bảo hiểm, nhân dạng… Đặc biệt, khi nghiên cứu về tin sinh học ta thấy công nghệ thông tin cũng là một công cụ quan trọng góp phần hỗ trợ trong công tác nghiên cứu và phát triển ngành công nghệ sinh học nói chung và sinh học nói riêng Điển hình đó là ứng dụng phát hiện cấu trúc chức năng của protein trong tin sinh Bên cạnh đó ta thấy được rằng, khai phá dữ liệu đồ thị là một kĩ thuật được dùng để phát hiện tri thức và đặc biệt thích hợp với dữ liệu có cấu trúc vì có thể
Trang 8Trong phân tích sự tiến hóa của các phân tử: cây tiến hóa được sử dụng để mô tả lịch sử tiến hóa của các loài; trong mạng máy tính, cây được sử dụng để xác định định tuyến của các gói tin Trong tin sinh học: cây con phổ biến sử dụng để dự đoán mối quan hệ tương tác giữa các protein, dự đoán cấu trúc bậc 2 phân tử của protein,
dò tìm đột biến trong cấu trúc protein v.v … Từ những ứng dụng nêu trên, ta thấy cây trong các ứng dụng thực tế thường là cây được gắn nhãn vào các đỉnh, nhưng nhãn của các cạnh không cần thiết phải duy nhất – điều này phản ánh đúng thực tế
Và việc xác định được các cấu trúc con phổ biến của tập dữ liệu sẽ hỗ trợ để hiểu và giúp nghiên cứu sâu, chi tiết hơn về dữ liệu đó
Chính vì vậy, để thực hiện khai phá dữ liệu cây, bài toán cơ bản là phát hiện các cây con thường xuyên và được giải quyết bằng các phương pháp liệt kê vét cạn
Số các cây liệt kê được sinh ra thường rất lớn, khá tốn kém trong lưu trữ và thời gian xử lý Bởi vậy, học viên tiếp cận vấn đề theo hướng chỉ quan tâm đến những cây con phổ biến, và ở mỗi mức chỉ cần lưu lại những cây con phổ biến thỏa mãn điều kiện đặt ra để phát triển tiếp các cây con ở mức tiếp theo Bài toán khai phá các cây phổ biến là tìm tất cả những cây con liên thông phổ biến trong một cơ sở dữ liệu các cây Điều cốt lõi của thuật toán khai thác cây con phổ biến là:
- Xác định những cây con đẳng cấu: một cây có phải là một cây con của cây khác hay không?
- Xây dựng một lược đồ liệt kê hiệu quả tất cả các cây con phổ biến
Với những lý do trên nên học viên chọn đề tài "Khai phá dữ liệu đồ thị (cây
dữ liệu), phát hiện các cây con phổ biến "
2 Đối tượng và phạm vi nghiên cứu
Trong phạm vi luận văn, học viên tập trung nghiên cứu các cây con phổ biến đóng và cực đại, các thuộc tính và mối quan hệ giữa chúng Trước tiên, để làm tiền
đề cho nghiên cứu, học viên tìm hiểu về cấu trúc cây dữ liệu, các dạng chính tắc theo chiều sâu DFCF, chiều rộng BFCF cũng như các dạng chuẩn hóa theo chiều sâu DFSE và chiểu rồng BFSE Sau đó, trình bày thuật toán khai phá tất cả các cây con phổ biến đóng và cực đại trong kho các cây dữ liệu đã được gán nhãn không có
Trang 9thứ tự, sử dụng cấu trúc cây liệt kê DAG, lớp phủ và các kỹ thuật cắt tỉa cây Học viên đi sâu nghiên cứu thuật toán CMT_Miner xác định cây con phổ biến đóng cực đại, do số lượng các cây con thường xuyên tăng theo hàm mũ của kích cỡ của cây con, vì vậy, khai phá tất cả các cây con thường xuyên là không khả thi đối với những cây dữ liệu cỡ lớn Thuật toán CMT_Miner rất hiệu quả trong việc phát hiện những cây con thường xuyên cực đại và đóng trong CSDL các cây con được gắn nhãn Thuật toán này tìm các cây con thường xuyên cực đại và đóng theo cách duyệt cây liệt kê để xác định tất cả cây con thường xuyên Có một số kỹ thuật được
sử dụng để tỉa những nhánh của cây liệt kê mà nó không phải là cây con thường xuyên cực đại hoặc đóng, trong đó phương pháp Heuristic được áp dụng để tổ chức tính toán và xác định cây con thường xuyên hiệu quả nhất có thể Thông qua kết quả thực nghiệm trên những tập dữ liệu thực tế cho thấy rằng thuật toán này khá hiệu quả trong việc giảm thiểu không gian tìm kiếm và nhanh chóng phát hiện các cây con thường xuyên cực đại và đóng Bên cạnh đó, học viêncũng đề cập đến thuật toán NCMT_Miner nhằm mục đích kiểm nghiệm, so sánh, đánh giá lại kết quả thuật toán CMT_Miner Ngoài ra, học viên cũng tìm hiểu về lĩnh vực tin sinh học, khả năng ứng dụng của khai phá cây con phổ biến trong các bài toán của lĩnh vực này
3 Hướng nghiên cứu
+ Tìm hiểu về khai phá dữ liệu, dữ liệu dạng cây Nghiên cứu các dạng biểu diễn chuẩn tắc dữ liệu dạng cây Nghiên cứu ứng dụng phát hiện cấu trúc chức năng của protein trong tin sinh
+ Thuật toán phát hiện cây con phổ biến Ứng dụng cài đặt thực nghiệm thuật toán
4 Phương pháp nghiên cứu
Phương pháp nghiên cứu lý thuyết: Nghiên cứu lý thuyết về khai phá dữ
liệu Lý thuyết về đồ thị, cấu trúc dữ liệu dạng cây Thuật toán để phát hiện cây con phổ biến đóng và cực đại
Phương pháp nghiên cứu thực nghiệm: Sử dụng ngôn ngữ lập trình để cài
đặt chương trình thực nghiệm
Trang 10Phương pháp trao đổi khoa học: Trao đổi nội dung, hướng phát triển của đề
tài với giáo viên hướng dẫn để đề xuất và giải quyết các vấn đề mà luận văn đặt ra
5 Ý nghĩa khoa học của đề tài
+ Đề ra các hướng biểu diễn chuẩn tắc dữ liệu dạng cây
+ Đề xuất thuật toán phát hiện cây con phổ biến đóng và cực đại
+ Kết quả nghiên cứu giúp xác định cây con phổ biến đóng và cực đại mà không cần phải phát triển cây hoàn chỉnh
Trang 11CHƯƠNG 1 KHAI PHÁ DỮ LIỆU VÀ CẤU TRÚC CÂY
DỮ LIỆU
Nội dung chương sẽ giới thiệu khái niệm về khai phá dữ liệu, tiến trình khai phá dữ liệu, các kĩ thuật khai phá dữ liệu, các phương pháp khai phá dữ liệu thông dụng, những thách thức gặp phải trong quá trình khai phá dữ liệu và giới thiệu một
số công cụ hỗ trợ trong khai phá dữ liệu
1.1 Khai phá dữ liệu
1.1.1 Tại sao lại cần khai phá dữliệu
Theo [1] khoảng hơn một thập kỷtrởlại đây, lượng thông tin được lưu trữtrên các thiết bị điện tử(đĩa cứng, CD-ROM, băng từ, v.v.) không ngừng tăng lên Người ta ước đoán rằng lượng thông tin trên toàn cầu tăng gấp đôi sau khoảng hai năm và theo đó sốlượng cũng nhưkích cỡcủa các cơsởdữliệu (CSDL) cũng tăng lên một cách nhanh chóng
Khai phá dữ liệu ra đời nhưmột hướng giải quyết hữu hiệu cho câu hỏi vừa
đặt ra ở trên Khá nhiều định nghĩa vềkhai phá dữ liệu, tuy nhiên có thểhiểu đơn giản rằng khai phá dữ liệu nhưlà một công nghệtri thứcgiúp khai thác những thông tin hữu ích từnhững kho dữliệu được tích trữtrong suốt quá trình hoạt động của một công ty, tổchức nào đó
1.1.2 Khai phá dữliệu là gì?
Thuật ngữkhai phá dữ liệu ám chỉviệc tìm kiếm một tập hợp nhỏcó giá trịtừmột sốlượng lớn các dữ liệu thô Có nhiều thuật ngữhiện được dùng cũng có nghĩa tương tựvớiKhai phá dữ liệu (Data Mining) nhưKhai phá tri thức (Knowledge Mining), Chắt lọc tri thức (knowledge extraction), Phân tích dữliệu/mẫu (data/patern analysis), Khảo cổ dữ liệu (data archaeoloogy), Nạo vét dữ liệu (datadredging), [6]
Định nghĩa 1.1Khai phá dữ liệu là một tập hợp các kỹthuật được sửdụng đểtựđộng
khai thác và tìm ra các mối quan hệlẫn nhau của dữ liệu trong một tập hợp dữliệu
Trang 12khổng lồvà phức tạp, đồng thời cũng tìm ra các mẫu tiềm ẩn trong tập dữ liệu đó.[2]
Khai phá dữ liệu là một bước trong bảy bước của quá trình KDD (Knowleadge Discovery in Database) và KDD được xem như7 quá trình khác nhau theo thứtự sau:
1 Làm sạch dữ liệu (data cleaning & preprocessing)s: Loại bỏnhiễu và các dữliệu không cần thiết
2 Tích hợp dữ liệu: (data integration): quá trình hợp nhất dữ liệu thành những kho dữ liệu (data warehouses & data marts) sau khi đã làm sạch và tiền xửlý (data cleaning & preprocessing)
3 Trích chọn dữ liệu (data selection): trích chọn dữ liệu từnhững kho dữ liệu và sau đó chuyển đổi vềdạng thích hợp cho quá trình khai thác tri thức
4 Chuyển đổi dữ liệu: Các dữ liệu được chuyển đổi sang các dạng phù hợp cho quá trình xửlý
5 Khai phá dữ liệu (khai phá dữ liệu): Là một trong các bước quan trọng nhất, trong đó sửdụng những phương pháp thông minh đểchắt lọc ra những mẫu dữ liệu
6 Ước lượng mẫu (knowledge evaluation): Quá trình đánh giá các kết quảtìm được thông qua các độ đo nào đó
7 Biểu diễn tri thức (knowledge presentation): Quá trình này sửdụng các kỹthuật đểbiểu diễn và thểhiện trực quan cho người dùng
Trang 13Hình 1-1Các bước trong Khai phá dữ liệu& KDD[6]
1.1.3 Các chức năng chính của khai phá dữ liệu
Khai phá dữ liệu được chia nhỏthành một sốhướng chính nhưsau:
Mô tảkhái niệm (concept description): 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
Luật kết hợp (association rules): là dạng luật biểu diễn tri thứ ởdạng khá đơn giản 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 thịt bò khô” 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 & thịtrường chứng khoán, v.v
Phân lớp và dự đoán (classification & 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 vùng địa lý theo dữ liệu thời tiết Hướng tiếp cận này thường sử dụng một sốkỹthuật của machine learningnhưcây quyết định (decision tree), mạng nơron nhân tạo (neural network), v.v Người ta còn gọi phân lớplà học có giám sát (học có thầy)
Phân cụm (clustering): xếp các đối tượng theo từng cụm (sốlượng cũng nhưtên của cụm chưa được biết trước Người ta còn gọi phân cụmlà học không giám sát (học không thầy)
Trang 14 Khai phá chuỗi (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 Hướng tiếp cận 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
1.1.4 Các công cụ khai phá dữ liệu
Khai phá dữ liệu không phải là tất cả về các công cụ hay phần mềm cơ sở dữ liệu đang sử dụng Có thể thực hiện khai phá dữ liệu bằng các hệ thống cơ sở dữ liệu bình thường và các công cụ đơn giản, bao gồm việc tạo và viết phần mềm riêng hoặc sử dụng các gói phần mềm thương mại Khai phá dữ liệu phức tạp được hưởng lợi từ kinh nghiệm trong quá khứ và các thuật toán đã định nghĩa với phần mềm và các gói phần mềm hiện có, với các công cụ nhất định để thu được một mối quan hệ hoặc uy tín lớn hơn bằng các kỹ thuật khác nhau [3]
Gần đây các tập hợp dữ liệu rất lớn và việc xử lý dữ liệu theo cụm và quy mô lớn có thể cho phép khai phá dữ liệu để sắp xếp và lập báo cáo về các nhóm và các mối tương quan của dữ liệu phức tạp hơn Bây giờ đã có sẵn rất nhiều công cụ và hệ thống hoàn toàn mới, gồm các hệ thống lưu trữ và xử lý dữ liệu kết hợp
1.1.5 Các kỹ thuật khai phá dữ liệu
Một số kỹ thuật cốt lõi, được sử dụng trong khai phá dữ liệu, mô tả kiểu hoạt động khai phá và hoạt động phục hồi dữ liệu [6]
1.1.5.1 Khai phá luật kết hợp
Khai phá luật kết hợp (mối quan hệ) là kỹ thuật khai phá dữ liệu được biết đến nhiều hơn vì tính quen thuộc và đơn giản Ở đây, thực hiện một sự tương quan đơn giản giữa hai hoặc nhiều mục, thường cùng kiểu để nhận biết các mẫu.Việc xây dựng các công cụ khai phá dữ liệu dựa trên sự kết hợp hay mối quan hệ có thể thực hiện đơn giản bằng các công cụ khác nhau
Ví dụ 1-1: Hình 1-2 cho thấy của cơ sở dữ liệu ví dụ mẫu [9]
Trang 15Hình 1-2 Luồng thông tin được sử dụng theo cách kết hợp[1]
1.1.5.2 Phân lớp
Kỹ thuật phân lớpdùng để xây dựng một ý tưởng về kiểu khách hàng, kiểu mặt hàng hoặc kiểu đối tượng bằng cách mô tả nhiều thuộc tính để nhận biết một lớp cụ thể Ví dụ, bạn có thể dễ dàng phân loại các xe ô tô thành các kiểu xe khác nhau (xe mui kín, 4x4, xe có thể bỏ mui) bằng cách xác định các thuộc tính khác nhau (số chỗ ngồi, hình dạng xe, các bánh xe điều khiển) Với một chiếc xe mới, bạn có thể đặt nó vào một lớp cụ thể bằng cách so sánh các thuộc tính với định nghĩa đã biết của chúng tôi Bạn có thể áp dụng các nguyên tắc tương tự ấy cho các khách hàng,
ví dụ bằng cách phân loại khách hàng theo độ tuổi và nhóm xã hội
Hơn nữa, bạn có thể sử dụng việc phân loại như một nguồn cấp, hoặc như là kết quả của các kỹ thuật khác Ví dụ, bạn có thể sử dụng các cây quyết định để xác định một cách phân loại Việc phân cụm sẽ cho phép bạn sử dụng các thuộc tính chung theo các cách phân loại khác nhau để nhận biết các cụm [8]
Trang 161.1.5.3 Phân cụm
Bằng cách xem xét một hay nhiều thuộc tính hoặc các lớp, có thể nhóm các phần dữ liệu riêng lẻ với nhau để tạo thành một quan điểm cấu trúc Ở mức đơn giản, việc phân cụm đang sử dụng một hoặc nhiều thuộc tính làm cơ sở cho bạn để nhận ra một nhóm các kết quả tương quan Việc phân cụm giúp để nhận biết các thông tin khác nhau vì nó tương quan với các ví dụ khác, nên có thể thấy ở đâu có những điểm tương đồng và các phạm vi phù hợp
Việc phân cụm có thể làm theo hai cách Có thể giả sử rằng có một cụm ở một điểm nhất định và sau đó sử dụng các tiêu chí nhận dạng để xem liệu có đúng không Đồ thị trong Hình 1-3 là một ví dụ Một ví dụ mẫu về dữ liệu kinh doanh so sánh tuổi của khách hàng với quy mô bán hàng Hợp lý khi thấy rằng những người
ở độ tuổi hai mươi (trước khi kết hôn và còn nhỏ), ở độ tuổi năm mươi và sáu mươi (khi không còn con cái ở nhà), có nhiều tiền tiêu hơn
Hình 1-3Phân cụm [6]
Trong ví dụ này, chúng ta có thể nhận ra hai cụm, một cụm xung quanh nhóm 2.000 Đô la Mỹ/ 20-30 tuổi và một cụm ở nhóm 7.000-8.000 Đô la Mỹ/ 50-65 tuổi Trong trường hợp này, giả thuyết hai cụm và đã chứng minh giả thuyết bằng một đồ
Trang 17thị đơn giản mà ta có thể tạo ra bằng cách sử dụng bất kỳ phần mềm đồ họa thích hợp nào để có được cái nhìn nhanh chóng Các quyết định phức tạp hơn cần phải có một gói phần mềm phân tích đầy đủ, đặc biệt là nếu muốn các quyết định tự động
dựa vào thông tin lân cận gần nhất
Việc vẽ đồ thị phân cụm theo cách này là một ví dụ đơn giản về cái gọi là
nhận ra sự lân cận gần nhất Có thể nhận ra các khách hàng riêng lẻ bằng sự gần
gũi theo nghĩa đen của họ với nhau trên đồ thị Có nhiều khả năng là các khách hàng trong cùng một cụm cũng dùng chung các thuộc tính khác và bạn có thể sử dụng sự mong đợi đó để giúp hướng dẫn, phân loại và nếu không thì phân tích những người khác trong tập hợp dữ liệu của bạn
Cũng có thể áp dụng việc phân cụm theo quan điểm ngược lại; dựa vào một số thuộc tính đầu vào, có thể nhận ra các tạo phẩm khác nhau Ví dụ, một nghiên cứu gần đây về các số PIN 4-chữ số đã tìm ra các cụm giữa các chữ số trong phạm vi 1-
12 và 1-31 cho các cặp đầu tiên và thứ hai Bằng cách vẽ các cặp này, bạn có thể nhận ra và xác định các cụm liên quan đến ngày tháng (các ngày sinh nhật, các ngày
kỷ niệm)
1.1.5.4 Dự báo
Dự báo là một chủ đề rộng và đi từ dự báo về lỗi của các thành phần hay máy móc đến việc nhận ra sự gian lận và thậm chí là cả dự báo về lợi nhuận của công ty nữa Được sử dụng kết hợp với các kỹ thuật khai phá dữ liệu khác, dự báo gồm có việc phân tích các xu hướng, phân loại, so khớp mẫu và mối quan hệ Bằng cách phân tích các sự kiện hoặc các cá thể trong quá khứ, bạn có thể đưa ra một dự báo
Trang 181.1.5.6 Các cây quyết định
Liên quan đến hầu hết các kỹ thuật khác (chủ yếu là phân loại và dự báo), cây quyết định có thể được sử dụng hoặc như là một phần trong các tiêu chí lựa chọn hoặc để hỗ trợ việc sử dụng và lựa chọn dữ liệu cụ thể bên trong cấu trúc tổng thể Trong cây quyết định, bạn bắt đầu bằng một câu hỏi đơn giản có hai câu trả lời (hoặc đôi khi có nhiều câu trả lời hơn) Mỗi câu trả lời lại dẫn đến thêm một câu hỏi nữa để giúp phân loại hay nhận biết dữ liệu sao cho có thể phân loại dữ liệu hoặc sao cho có thể thực hiện dự báo trên cơ sở mỗi câu trả lời Hình 1-4cho thấy một ví
dụ trong đó bạn có thể phân loại một điều kiện lỗi gửi đến
Hình 1-4Cây quyết định [6]
Trang 19Các cây quyết định thường được sử dụng cùng với các hệ thống phân loại liên quan đến thông tin có kiểu thuộc tính và với các hệ thống dự báo, nơi các dự báo khác nhau có thể dựa trên kinh nghiệm lịch sử trong quá khứ để giúp hướng dẫn cấu trúc của cây quyết định và kết quả đầu ra
1.1.6 Ứng dụng của khai phá dữ liệu
Khai phá dữ liệu tuy là một hướng tiếp cận mới nhưng thu hút được rất nhiều sựquan tâm của các nhà nghiên cứu và phát triển nhờvào những ứng dụng thực tiễn của nó Chúng ta có thểliệt kê ra đây một số ứng dụng điển hình:
Phân tích dữ liệu và hỗtrợra quyết định (data analysis & decision support)
Điều trịy học (medical treatment)
Text mining & Web mining
Tin-sinh (bio-informatics)
Tài chính và thịtrường chứng khoán (finance & stock market)
Bảo hiểm (insurance)
Nhận dạng (pattern recognition)
v.v
1.2 Cấu trúc câydữ liệu
Đồ thị được gắn nhãn G = (V, E, , L) gồm tập các đỉnh V, tập cạnh E, bảng chữ cho các nhãn của đỉnh, các cạnh và hàm gắn nhãn L: V E Đồ thị là có hướng (hoặc vô hướng) nếu mỗi cạnh nối hai đỉnh là một cặp được sắp (hoặc không
có thứ tự, không được sắp tương ứng) Đồ thị là liên thông nếu giữa hai đỉnh bất kỳ đều có ít nhất một đường đi nối giữa chúng, ngược lại là đồ thị không liên thông Chu trình trong đồ thị là một đường đi mà đỉnh đầu và đỉnh cuối trùng nhau [4]
1.2.1 Các loại cây
Cây tự do (Free Tree) là một đồ thị vô hướng liên thông và phi chu trình
Định nghĩa 1.2Cây có gốc (rooted tree), gọi tắt là cây, là cây tự do có một đỉnh đặc
biệt được gọi là gốc và thỏa mãn các tính chất sau:
- Mỗi đỉnh khác gốc đều có đúng một đỉnh vào
- Có đúng một đường đi từ gốc tới mỗi đỉnh khác của cây
Trang 20Trong cấu trúc cây, đỉnh v trên đường đi từ gốc tới w được gọi là tiền bối (ancestor) của w, còn w được gọi là hậu duệ (descendant) của v Nếu w liền kề với
v (có cạnh nối v với w) thì v là cha của w, hay ngược lại w là con của v Kích thước của cây t được định nghĩa là số đỉnh của cây, ký hiệu là |t| = |V| Để tiện lợi, ta qui ước cây có kích thước k sẽ được gọi là k-cây Trong cây, một đỉnh v được gọi là lá nếu nó không có đỉnh con Bậc của mỗi đỉnh v là số đỉnh con của nó, ký hiệu là deg(v) Hiển nhiên, nếu v là lá thì deg(v) = 0
Chiều cao của cây t, ký hiệu là high(t), là độ dài của đường đi dài nhất trên cây (bắt đầu từ gốc) Thông thường, đối với k-cây thì độ dài của cây t luôn thỏa mãn high(t) < k Một đỉnh trên cây được gọi là ở mức m nếu đường đi từ gốc tới nó có
độ dài (số cạnh) là m, m h Đỉnh gốc có mức là 0 Đỉnh không phải là gốc, không phải là lá được gọi là đỉnh trong của cây
Cây t và s được gọi là đẳng cấu với nhau (isomorphism) nếu tồn tại một ánh
xạ 1-1 giữa hai tập đỉnh của t, s và bảo toàn được các nhãn của đỉnh và các cạnh Một cây con t có đẳng cấu trong cây s nếu tồn tại một đẳng cấu của t với một cây con của s
Các cây trong đó mỗi nút có thể có nhiều hơn hai con được gọi là cây tổng quát,
các cây trong đó mỗi nút có không quá hai con được gọi là cây nhị phân
Các cây có thể phân chia thành hai loại chính: cây có thứ tự và cây không có
thứ tự
1.2.1.1 Cây có thứ tự
Định nghĩa 1.3Một cây có thứ tự (rooted ordered tree) là cây trong đó các đỉnh con
của mỗi đỉnh đều được xếp theo thứ tự từ trái qua phải, ngược lại được gọi là cây không có thứ tự
Ví dụ 1-2Các cây có thứ tự, trong đó sử dụng các nhãn để ký hiệu cho các đỉnh của cây
Trang 21Hình 1-5 Tám cây có thứ tự nhận được từ một cây không có thứ tự
Một cây t (với tập đỉnh Vt và tập cạnh Et) được gọi là cây con của cây s (với tập đỉnh Vs và tập cạnh Es) nếu và chỉ nếu 1/ Vt Vs, 2/ Et Es, và 3/ Các nhãn của các đỉnh trong Vt và các cạnh trong Et được bảo toàn trong cây s
Trong cây có thứ tự, các đỉnh con của một đỉnh bất kỳ đều được sắp xếp theo một thứ tự nhất định, ví dụ được liệt kê từ trái qua phải Để phân biệt được các cây con của cây có thứ tự t, chúng ta định nghĩa quan hệ ttrên tập Vt để thể hiện quan
hệ anh/em (sibling relation) như sau: v1 t v2 nếu v1, v2 là hai đỉnh con của cùng một cha và v2 là anh (chị) của v1 (v2 ở bên phải của v1)
Ví dụ trên cây ở Hình 1-5 (a), gốc được gắn nhãn A có 2 đỉnh con cùng nhãn
B ứng với 2 cây con có quan hệ anh/em với nhau và cây con bên phải là anh của cây con bên trái Hiển nhiên, đối với cây có thứ tự thì việc đổi vị trí của các đỉnh có quan hệ anh/emsẽ tạo thành các cây có thứ tự mới
Các cây có thứ tự có nhiều ứng dụng quan trọng trong việc tạo lập các cấu trúc
dữ liệu Cây tìm kiếm nhị phân là một cây sắp thứ tự điển hình, được sử dụng để tìm kiếm nhanh và rất hiệu quả
1.2.1.2 Cây không có thứ tự
Một cây, trong đó các đỉnh con của mỗi nút đều không xác định một thứ tự nào cả, được gọi là cây không có thứ tự (rooted unordered tree), nghĩa là không phân biệt vị trí (trước, sau) giữa các đỉnh con của mỗi đỉnh
Trang 22Dễ dàng nhận thấy từ một cây không có thứ tự, có thể suy ra những cây có thứ
tự đẳng cấu với nhau bằng cách thay đổi quan hệ anh/em giữa các đỉnh con Những cây có thứ tự trên Hình 1-5 được tạo ra từ một cây không có thứ tự và tất cả chúng đẳng cấu với nhau Do vậy, để nghiên cứu những cây không có thứ tự, chúng ta cần xác định dạng chuẩn biểu diễn duy nhất cho những cây đó
Lưu ý rằng, đối với cây được gắn nhãn, hoàn toàn không mất tính tổng quát ta có thể giả thiết rằng tất cả các nhãn của các cạnh là đồng nhất, bởi vì mỗi cạnh đều được nối với một đỉnh cha của nó Ta có thể xem mỗi cạnh đó cùng với nhãn trên cạnh như là một phần được thể hiện trên nhãn của đỉnh con Đối với gốc không có cạnh đi tới nó, ta giả thiết đó
là cạnh null (cạnh rỗng) nối với gốc Từ đây trở về sau, chúng ta giả thiết rằng các nhãn
trên các cạnh là tương đương, nghĩa là không cần gắn nhãn cho các cạnh mà chỉ cần xét các nhãn trên các đỉnh là đủ
1.2.1.3 Cây tìm kiếm nhị phân
- Mọi khóa trên cây con trái đều nhỏ hơn khóa trên nút v
- Mọi khóa trên cây con phải đều lớn hơn khóa trên nút v
Ví dụ 1-3
Hình 1-6Cây tìm kiếm nhị phân với tập khóa là các số nguyên
Trang 23Cây tìm kiếm nhị phân là một cấu trúc dữ liệu cơ bản được sử dụng để xây dựng các cấu trúc dữ liệu trừu tượng hơn như các tập hợp, đa tập hợp, các dãy kết hợp[10]
Nếu một BST có chứa các giá trị giống nhau thì nó biểu diễn một đa tập hợp Mọi nút trong cây con trái có khóa nhỏ hơn khóa của nút cha, mọi nút trên cây con phải có nút lớn hơn hoặc bằng khóa của nút cha
Nếu một BST không chứa các giá trị giống nhau thì nó biểu diễn một tập hợp đơn trị như trong lý thuyết tập hợp Cây loại này sử dụng các bất đẳng thức chặt chẽ Mọi nút trong cây con trái có khóa nhỏ hơn khóa của nút cha, mọi nút trên cây con phải có nút lớn hơn khóa của nút cha
Việc chọn đưa các giá trị bằng nhau vào cây con phải (hay trái) là tùy theo mỗi người Một số người cũng đưa các giá trị bằng nhau vào cả hai phía, nhưng khi đó việc tiìm kiếm trở nên phức tạp hơn
Có rất nhiều loại cây tìm kiếm nhị phân Cây tìm kiếm nhị phân tự cân bằng (AVL (Adelson – Velskii – Landiis)) và cây đỏ đen đều là các dạng của cây tìm kiếm nhị phân tự cân bằng, là một cây nhị phân có thể tự đẩy các phần mới vào gần nút gốc Trong một treap ("cây heap"), mỗi nút có một sự ưu tiên (priority) và các nút cha có sự ưu tiên cao hơn các nút con của chúng
Các phép toán trên cây nhị phân BST:
Tìm kiếm (Searching) Việc tìm một khóa trên BST có thể thực hiện nhờ đệ
quy Chúng ta bắt đầu từ gốc Nếu khóa cần tìm bằng khóa của gốc thì khóa đó trên cây, nếu khóa cần tìm nhỏ hơn khoa ở gốc, ta phải tìm nó trên cây con trái, nếu khóa cần tìm lớn hơn khóa ở gốc, ta phải tìm nó trên cây con phải Nếu cây con (trái hoặc phải) là rỗng thì khóa cần tìm không có trên cây Thời gian tìm kiếm trung bình là O(log 2n), và là O(n) khi cây là không cân bằng chỉ là một danh sách liên kết
Chèn (Insertion) Phép chèn bắt đầu giống như phép tìm kiếm; Nếu khóa của
gốc khác khóa cần chèn ta tìm nó trong cây con trái hoặc phải Nếu cây con trái
Trang 24hoặc phải tương ứng là rỗng (không tìm thấy) thì thêm một nút và gán cho nút ấy khóa cần chèn
Xóa (Deletion) Xét các trường hợp sau
- Xóa một lá: Vì lá không có con nên chỉ cần giải phóng nó khỏi cây
- Xóa một nút có hai con: Xóa nút đó và thay thế nó bằng nút có khóa lớn nhất trong các khóa nhỏ hơn khóa của nó (được gọi là "nút tiền nhiệm" -nút cực phải của cây con trái) hoặc nút có nhỏ nhất trong các khóa lớn hơn nó (được gọi là "nút kế vị" - nút cực trái của cây con phải) Cũng có thể tìm nút tiền nhiệm hoặc nút kế vị đổi chỗ nó với nút cần xóa và sau đó xóa nó Vì các nút kiểu này có ít hơn hai con nên việc xóa nó được quy về hai trường hợp trước
Phép duyệt Khi một cây tìm kiếm nhị phân được tạo ra, tất cả các nút có thể
được duyệt theo thứ tự giữa nhờ duyệt đệ qui cây con bên trái, in nút đang duyệt, rồi duyệt đệ qui cây con bên phải, tiếp tục làm như vây với mỗi nút của cây trong quá trình đệ qui Với mọi cây nhị phân, cây có thể được duyệt theo thứ tự nút gốc trước (Polish notation – ký pháp Ba Lan), hoặc theo thứ tự nút gốc sau (reverse Polish notation – Ký pháp Ba Lan ngược), cả hai cách đều hữu dụng với cây tìm kiếm nhị phân Các pháp Ba Lan, Ba Lan ngược được sử dụng phổ biến trong việc biểu diễn các biểu thức trong tính toán để thực hiện chương trình dịch, thông dịch và tính toán nhanh
1.2.2 Các cách biểu diễn cây cấu trúc dữ liệu
Có nhiều phương pháp biểu diễn cây cấu trúc dữ liệu tùy thuộc vào đối tượng dữ liệu
mà chúng cần biểu diễn
1.2.2.1 Biểu diễn bằng các nút với các con trỏ
Cách thường dùng nhất là biểu diễn mỗi nút như một dữ liệu kiểu bản ghi, mỗi nút chứa các con trỏ tới các con hoặc cha của nó, hoặc cả hai
Mỗi nút là một dữ liệu kiểu bản ghi với ba trường: Một trường thường gọi là INFOR, chứa thông tin lưu trữ tại nút đó Thông tin này có thể chỉ là một số, một ký
tự, cũng có thể là một tập hợp dữ liệu rất phức tạp Hai trường LLINK và RLINK chứa các liên kết trái và phải Nếu cây là cây nhị phân, LLINK trỏ tới con trái của
Trang 25nút, RLINK trỏ tới con phải của nút Nếu cây là cây tổng quát, LLINK trỏ tới con cực trái và RLINK trỏ tới em kế cận phải của nút đó Do đó danh sách các nút biểu diễn một cây tổng quát, khi được xem là biểu diễn của cây nhị phân sẽ cho một cây nhị phân Cây nhị phân này được gọi là cây nhị phân tương đương với cây tổng quát ban đầu
1.2.2.2 Biểu diễn cây nhị phân bằng mảng
Cây có thể biểu diễn bằng các mảng cùng với quan hệ giữa các vị trí trong mảng
Ta có thể dùng một mảng gồm 2h+1 - 1 phần tử để biểu diễn cây nhị phân có chiều cao là h, bằng cách lần lượt lưu trữ thông tin của mỗi nút vào mảng theo thứ
tự từ trên xuống dưới, từ trái sang phải Khi đó con trái của nút thứ i là phần tử thứ 2*i, con phải là phần tử thứ 2*i+1 Cha của phần tử thứ i là phần tử thứ int(i/2)
Ta gán giá trị Null cho các vị trí còn thiếu Một cách khác, dùng một mảng hai chiều trong dòng thứ nhất ghi các thông tin của nút, dòng thứ hai ghi chỉ số của nút cha của nút đó với dấu + nếu nút hiện tại là con trái, với dấu - nếu nút hiện tại là con phải của nút cha
1.3 Dạng chuẩn của cây dữ liệu
1.3.1 Dạng chuẩn chính tắc theo chiều rộng (BFCF)
1.3.1.1 Thuật toán tìm kiếm theo chiều rộng
Tìm kiếm theo chiều rộng (BFS) là một thuật toán tìm kiếm trong đồ thị trong
đó việc tìm kiếm chỉ bao gồm 2 thao tác: (a) thăm một đỉnh của đồ thị; (b) thêm các đỉnh kề với đỉnh vừa thăm vào danh sách có thể thăm trong tương lai Có thể sử dụng thuật toán tìm kiếm theo chiều rộng cho hai mục đích: tìm kiếm đường đi từ một đỉnh gốc cho trước tới một đỉnh đích, và tìm kiếm đường đi từ đỉnh gốc tới tất
cả các đỉnh khác Trong đồ thị không có trọng số, thuật toán tìm kiếm theo chiều rộng luôn tìm ra đường đi ngắn nhất có thể [5]
Thuật toán BFS bắt đầu từ đỉnh gốc và lần lượt thăm các đỉnh kề với đỉnh gốc Sau đó, với mỗi đỉnh trong số đó, thuật toán lại lần lượt thăm các đỉnh kề với nó mà chưa được thăm trước đó và lặp lại Xem thêm thuật toán tìm kiếm theo chiều sâu,
Trang 26trong đó cũng sử dụng 2 thao tác trên nhưng có trình tự thăm các đỉnh khác với thuật toán tìm kiếm theo chiều rộng
Thuật toán sử dụng một cấu trúc dữ liệu hàng đợi để lưu trữ thông tin trung gian thu được trong quá trình tìm kiếm:
1 Chèn đỉnh gốc vào hàng đợi
2 Lấy ra đỉnh đầu tiên trong hàng đợi và thăm nó
- Nếu đỉnh này chính là đỉnh đích, dừng quá trình tìm kiếm và trả về kết quả
- Nếu không phải thì chèn tất cả các đỉnh kề với đỉnh vừa thăm nhưng chưa được thăm trước đó vào hàng đợi
3 Nếu hàng đợi là rỗng, thì tất cả các đỉnh có thể đến được đều đã được thăm – dừng việc tìm kiếm và trả về "không thấy"
4 Nếu hàng đợi không rỗng thì quay về bước 2
Nếu sử dụng một ngăn xếp thay vì hàng đợi thì thuật toán trở thành thuật toán tìm kiếm theo chiều sâu
Thuật toán 1-1Duyệt theo chiều rộng BFS
Trang 27Nếu V, và E là tập hợp các đỉnh và cung của đồ thị, thì thời gian thực thi của
thuật toán là O(|E|+|V|) vì trong trường hợp xấu nhất, mỗi đỉnh và cung của đồ thị được thăm đúng một lần
1.3.1.2 Dạng chuẩn chính tắc theo chiều rộng (BFCF)
Không mất tính tổng quát, xét trên tập nhãn mở rộng ’ = {$, #}, với
$, # và giả thiết luôn có một quan hệ thứ tự toàn phần , nghĩa là
1 Giữa các nhãn v, w trên các đỉnh của cây luôn có quan hệ v w hoặc w v
2 v $ #, với v
Mã chuỗi theo chiều rộng BFSE (Breadth-First String Encoding) [11] của cây có thứ tự được định nghĩa như sau
Định nghĩa 1.1Khai phá dữ liệu là một tập hợp các kỹthuật được sửdụng đểtựđộng
khai thác và tìm ra các mối quan hệlẫn nhau của dữ liệu trong một tập hợp dữliệu khổng lồvà phức tạp, đồng thời cũng tìm ra các mẫu tiềm ẩn trong tập dữ liệu đó
Mã chuỗi theo chiều rộng BFSE của cây có thứ tự là chuỗi các nhãn trên các đỉnh bắt đầu từ gốc và lần lượt theo các mức, trong đó ký hiệu $ được sử dụng để phân biệt giữa các đỉnh anh/em của các cây con và # để đánh dấu kết thúc chuỗi
Trang 28Thuật toán BFSE xác định mã chuỗi theo chiều rộng của cây T có thứ tự, trong đó OrderedTree T là tập các cây có thứ tự, là phép ghép hai chuỗi ký tự (chuỗi các nhãn)
Định nghĩa 1.4
Chuỗi chính tắc theo chiều rộng BFCS (Breadth-First Canonical String) của cây không có thứ tự là chuỗi mã cực tiểu (xét theo quan hệ ) trong số các chuỗi mã theo chiều rộng của các cây có thứ tự đẳng cấu với nhau Cây tương ứng với BFCS được gọi là cây có thứ tự ở dạng chính tắc theo chiều rộng BFCF
Trang 29Với quan hệ thứ tự toàn phần trên ’ và theo định nghĩa 2, thuật toán BFCS xác định cây có thứ tự ở dạng chính tắc theo chiều rộng BFCF của các cây không có thứ tự, bằng cách sắp xếp lại dãy nhãn của các đỉnh theo thứ tự từ trái qua phải và
từ dưới lên
Thuật toán 1-2: Thuật toán BFCS
Input: Cây T không có thứ tự
Ouput: Dạng chính tắc theo chiều rộng BFCF của cây T
Procedure BFCS(UOrderedTree T){
1 UOrderedTree T1 = T;
2 for i = high(T1) downto 1 do {
3 if(v1 v2&& L(v2) < L(v1)) then
4 Đổi vị trí của 2 cây con v1 và v2;
5 else if(v1 v2&& L(v2) == L(v1)&&
và áp dụng thuật toán BFSE, chúng ta thu được chuỗi mã chính tắc theo chiều rộng của
chúng Độ phức tạp thuật toán là O(h.d.log d), trong đó h là chiều cao của cây và d
là số bậc cực đại của các đỉnh trong T(d = max{deg(v), v V t })
Định nghĩa 1.5
Giả thiết D là CSDL các cây dữ liệu, trong đó mỗi cây giao tác T D là cây được gắn nhãn không có thứ tự và cho trước cây mẫu t Ta nói cây t xuất hiện trong
Trang 30giao tác T, nếu t đẳng cấu với ít nhất một cây con của T và được ký hiệu t(T) = 1, ngược lại t(T) = 0 T hỗ trợ mẫu t nếu t(T) = 1 và định nghĩa độ hỗ trợ của mẫu t trong D là support(t) = T Dt(T)
Để thuận tiện cho việc tính toán, có thể đánh số các đỉnh theo chiều rộng của cây
và sử dụng cấu trúc danh sách xuất hiệnL t để lưu những thông tin các lần xuất hiện của
t trong CSDL L t = {(tid, i1, i2, …, ik) | trong đó, tid là định danh của cây giao tác chứa t
và i1, i2, …, ik là các chỉ số của các đỉnh (liệt kê theo chiều rộng) trong giao tác tid tương ứng với các đỉnh của t.Từ danh sáchL t dễ dàng kiểm tra xem nếu số các giao tác khác nhau mà minsup thì nó là phổ biến
Hàm tính độ hỗ trợ support(t)
Output: Độ hỗ trợ của T trong D
1 Đánh chỉ số các đỉnh của các cây giao tác
2 Xác định danh sách xuất hiện Lt theo định nghĩa
3 Trả lại số các giao tác xuất hiện trong Lt
Độ phức tạp thời gian của hàm support(t) là (n.p), trong đó p = max(|Ti|, i = 1 n) Một mẫu (cây dữ liệu) t được gọi là phổ biến (thường xuyên) nếu độ hỗ trợ của
nó lớn hơn hoặc bằng độ hỗ trợ cực tiểu minsup được xác định trước Bài toán khai phá phát hiện cây con phổ biến là tìm tất cả các mẫu cây con phổ biến trong các CSDL cho trước Trong khai phá cây con phổ biến, thường sử dụng một tính chất khá hiển nhiên, nhưng quan trọng:
Bất kỳ cây con nào của cây phổ biến cũng là cây phổ biến và cây trên (cha) của cây không phổ biến là không phổ biến Tính chất này được chứng minh trực tiếp từ định nghĩa của cây con và độ hỗ trợ của cây con phổ biến
1.3.2 Dạng chính tắc theo chiều sâu DFCF
1.3.2.1 Thuật toán tìm kiếm theo chiều sâu
Tư tưởng chính của thuật toán là: Giả sử chúng ta đang xét trên đồ thị G(V,E)
Từ một đỉnh uhiện thời nào đó ta sẽ thăm tới đỉnh kề v của u và quá trình được lặp
Trang 31lại đối với đỉnh v ở bước tổng quát, giả sử hiện tại đang xét đỉnh u0, chúng ta sẽ có hai khả năng sẽ xảy ra:
- Nếu như tồn tại một đỉnh v 0 kề với u 0 mà chưa được thăm thì đỉnh v 0 đó sẽ trở
- Ngược lại, nếu mọi đỉnh kề với u 0 đều đã thăm thì ta sẽ quay trở lại đỉnh mà
Như vậy, trong quá trình thăm đỉnh bằng thuật toán tìm kiếm theo chiều sâu, đỉnh được thăm càng muộn càng sớm được duyệt xong Độ phức tạp không gian của DFS thấp hơn của BFS (tìm kiếm theo chiều rộng) Độ phức tạp thời gian của hai thuật toán là tương đương nhau và bằng O(|V| + |E|)
Thuật toán 1-3 Tìm kiếm theo chiều sâu DFS
Trang 321.3.2.2 Dạng chính tắc theo chiều sâu DFCF
Không mất tính tổng quát ta có thể giả thiết rằng có hai ký hiệu đặc biệt “$” và
“#” không nằm trong bảng chữ cái được sử dụng để gắn nhãn cho các đỉnh của cây Trên tập ’ = {$, #} ta giả thiết có một quan hệ thứ tự toàn phần :[10]
1 Giữa các nhãn v, w trên các đỉnh của cây luôn có quan hệ v w hoặc w
v
2 v $ #, với v
Mã chuỗi theo chiều sâu DFSE (Depth-First String Encoding) [19] của cây có thứ tự theo thuật toán duyệt cây theo chiều sâu được định nghĩa như sau:
Định nghĩa 1.6Mã chuỗi theo chiều sâu DFSE của cây có thứ tự là chuỗi các nhãn
nhận được theo phương pháp duyệt cây theo chiều sâu, trong đó “$” biểu diễn cho việc “quay về đỉnh cũ” (backtrack) và “#” là kết thúc của chuỗi mã
Ví dụ 1-4Tám cây trong hình 1.5 b có các chuỗi mã tương ứng là :
Từ định nghĩa 1.1 suy ra khi duyệt theo chiều sâu thì ký hiệu $ được sử dụng
để quay lui về gốc của các cây con, nghĩa là số ký hiệu $ bằng chiều cao của từng cây con
Thuật toán xác định mã chuỗi theo chiều sâu của một cây có thứ tự được thực hiện theo phương pháp đệ qui như sau
Thuật toán 1-4 Xác định mã chuỗi theo chiều sâu của cây có thứ tự t
OrderedTree tập (kiểu dữ liệu) các cây có thứ tự và là phép ghép hai chuỗi ký tự
Trang 33Định lý 1-1Thuật toán 1 xác định đúng DFSE của cây có thứ tự và mỗi cây có thứ
tự cũng có đúng duy nhất một mã chuỗi theo chiều sâu DFSE
Chứng minh Ta có thể chứng thuật toán đệ qui trên qui nạp theo số đỉnh của cây
Nếu t là 1-cây, cây có 1 đỉnh thì hiển nhiên DFSE = L(root(t)) và sau đó ghép thêm
‘#’ vào cuối, ta được mã chuỗi theo chiều sâu đúng theo định nghĩa
Ta giả thiết thuật toán DFSE đúng với k-cây, nghĩa là ứng với mã chuỗi theo
chiều sâu Sn, với k = n số đỉnh của cây, tồn tại duy nhất một k-cây Tn+1 tương với Sn
Ta cần chứng minh thuật toán đúng với k = n+1, tồn tại duy nhất một k-cây Tn tương với Sn+1 Khi đó đỉnh thứ n + 1 có nhãn là e của cây hoặc là đỉnh con cháu bên phải của đỉnh thứ n, nếu không có $ giữa Sn và e, hoặc là đỉnh con của một đỉnh ở mức i, 1
i n và i được xác định duy nhất bởi số ký hiệu $ nằm giữa Sn và e trong Sn+1 Trong cả hai trường hợp, cây có thứ tự Kn+1 tương ứng với Sn+1 đều được xác định duy nhất
Độ phức tạp của thuật toán 1 là (m h), trong đó m là số đỉnh và h là chiều cao của cây
Từ mã chuỗi theo chiều sâu của cây có thứ tự, chúng ta định nghĩa dạng chính tắc theo chiều sâu DFCF của cây không có thứ tự là cây có chuỗi mã cực tiểu trong
số các chuỗi mã theo chiều sâu của các cây có thứ tự đẳng cấu với nhau
Trang 34Ví dụ 1-5DFCF của cây không có thứ tự trong Hình 1 là: (b) ABC$DB$E$$BC$# Thuật toán 1-5Xác định DFCF của cây không có thứ tự được thực hiện như sau
Input: Cây t không có thứ tự
5 Đổi vị trí của 2 cây con v1 và v2 cho nhau;
6 else if(v1 v2 && L(v2) == L(v1) && DFSE(v2) < DFSE(v1)) then
7 Đổi vị trí của 2 cây con v1 và v2 cho nhau;
8 }
Trong đó, DFSE(v) là mã chuỗi theo chiều sâu của cây con v
Định lý 1-2Thuật toán 1-4xác định đúng dạng chính tắc theo chiều sâu DFCF của cây
không có thứ tự
Chứng minh
Thuật toán trên xác định DFCF của cây không có thứ tự được thực hiện từ dưới lên trên theo các mức của cây và từ trái qua phải, so sánh các nhãn của gốc các cây con và sắp xếp chúng theo thứ tự (không giảm) trên ’ Kết quả ta thu được DFCF theo yêu cầu.Thuật toán 1-2có độ phức tạp là (n.logn), trong đó n là số đỉnh của cây
Trang 35Hình 1-7Cây t’ ở dạng chính tắc DFCF
1.3.3 Cây liệt kê
Cây liệt kê (Enumeration tree) được sử dụng để khai phá, phát hiện cây con phổ biến, đó là cây được xây dựng trên cơ sở liệt kê tất cả các cây con phổ biến của một kho các cây dữ liệu [9]
Giả sử các đỉnh (nút) lá ở mức dưới cùng (Lower Leaf) của cây t là ngọn và ký hiệu LLeaf(t) là tập các đỉnh ngọn Trong số các đỉnh ngọn, chúng ta gọi ngọn bên phải nhất là ngọn cuối, ký hiệu là LastLeaf(t) Đỉnh lá ở bên phải gần nhất với đỉnh ngọn cuối, đỉnh của cây t không có đỉnh con và ở mức trước mức cuối cùng, được gọi là đỉnh cuối bên phải, ký hiệu WLeaf(t) là tập các đỉnh cuối bên phải Trong mã chuỗi BFSE(t), thì ngọn là các đỉnh có nhãn nằm giữa hai ký hiệu $ cuối cùng, trong
đó ngọn cuối ứng với nhãn (khác $) cuối cùng, còn đỉnh gần nhất với đỉnh ngọn cuối bên phải là những đỉnh cuối ở mức trước và có mã ứng với $ (không có đỉnh con)
Ví dụ 1-6Đối với cây T 4 ở Hình 2-1, ta có LLeaf(t) = {9}, LastLeaf(t) = 9 và WLeaf(t) = {6, 7, 8}
Bổ đề sau làm cơ sở để phát triển các cây liệt kê bảo toàn dạng chuẩn BFCF
Bổ đề 1.1Loại bỏ đi (cắt tỉa) ngọn cuối của (k+1)-cây ở dạng chuẩn BFCF sẽ cho
kết quả là k-cây khác (cây con) vẫn ở dạng chuẩn BFCF Bổ đề 1.1 đã được chứng minh trong [18]
Trang 36Lưu ý rằng, số các cây liệt kê được sinh ra thường rất lớn, rất tốn kém cho vấn
đề lưu trữ và thời gian xử lý dữ liệu Trong bài toán khai phá dữ liệu, chúng ta thường chỉ cần quan tâm đến những cây con phổ biến Như đã phân tích ở trên, khi một cây đã không phổ biến thì các cây cha (được bổ sung thêm đỉnh mới) cũng sẽ không phổ biến, nên có thể loại chúng ra khỏi quá trình liệt kê Do vậy, ở mỗi mức chúng ta chỉ cần lưu lại những cây con phổ biến (có độ hỗ trợ minsup) để phát triển tiếp các cây con ở mức tiếp theo Việc tính độ hỗ trợ của các cây cha (được bổ sung thêm một đỉnh mới) từ những cây con ở mức trước cũng được thực hiện dựa trên danh sách xuất hiện được mở rộng từ danh sách xuất hiện của các cây con ở mức trước trong quá trình liệt kê sẽ giúp giảm thiểu được các bước tính toán để tính
độ hỗ trợ của các cây con
Ở mỗi mức, lực lượng của cây con được tạo ra bằng đúng số hiệu của mức đang liệt kê và ở mức tiếp theo chỉ bổ sung thêm một đỉnh theo chiều rộng Mặt khác, việc bổ sung một đỉnh mới vào cây ở mức trên được thực hiện dựa vào dạng chuẩn BFCF của cây không có thứ tự Các cây giao tác trong CSDL đã được chuyển
về dạng chuẩn BFCF, nên những đỉnh có thể được chọn là nằm bên phải của đỉnh ngọn cần bổ sung để bảo toàn thứ tự trong ’ Nghĩa là, số các đỉnh có thể chọn để
bổ sung đã giảm đi nhiều trong quá trình liệt kê Từ đó suy ra, k-cây t ở mức k được
mở rộng thêm đỉnh v (cùng với cạnh liền kề) thành (k+1)-cây t’ở mức k+1 nếu thỏa một trong các điều kiện sau:
(i) i = 1, 2, …, n, (w WLeaf(t), (w, v)
i
T
E hoặc (1) (ii) i = 1, 2, …, n, (LastLeaf(t) Ti v) hoặc (2)
Trang 372) ((v WLeaf(t1), (index(v), ik+1) Etid or ik=index(LastLeaf(t1)) andik tid ik+1or (5)
w LLeaf(t1) and (w, v i k1) Etid
Trong đó index(v) là hàm đánh số đỉnh v trong cây giao tác Quá trình liệt kê sẽ dừng khi không tìm được cây con nào phổ biến ở mức tiếp theo
Ví dụ 1-7 Ta xây dựng cây liệt kê cho CSDL gồm 3 cây giao tác T 4 , T 5 và T 6 như trong Hình 2-1 với minsup = 2
Mức 0 bắt đầu từ tập trống Mức 1 liệt kê tất cả các đỉnh của các 1-cây phổ biến (có độ hỗ trợ minsup = 2), đó là A, B, C, D, E, F và H được liệt kê theo thứ
tự của tập các nhãn của tất cả các cây giao tác Mức 2 liệt kê tất cả 2-cây con có gốc là các đỉnh ở mức 1, được bổ sung thêm một đỉnh con xuất hiện trong ít nhất một cây giao tác thỏa một trong ba trường hợp (1), (2), (3) nêu trên Những cây con không phổ biến được đánh dấu trong hình ellipse nét đứt là những cây có độ hỗ trợ nhỏ hơn 2 (có số các giao tác khác nhau ít hơn 2 trong danh sách xuất hiện) Danh sách xuất hiện của những cây được mở rộng từ cây con ở mức trước cũng được phát triển từ danh sách xuất hiện của những cây con đó theo hai điều kiện (4) và (5) nêu trên Từ những cây con phổ biến ở mức 2, phát triển các 3-cây ở mức kế tiếp theo chiều rộng Lưu ý, đỉnh mới được bổ sung sẽ trở thành ngọn cuối của cây liệt kê ở mức đang xét Ví dụ trong cây T12, ngọn B có đỉnh D là anh của B (B T4D) ở T4, vậy bổ sung đỉnh D vào ta được cây T121 Tương tự, vì B T5E ở T5 nên có thể bổ sung E vào ta được cây T122 Quá trình trên tiếp tục đến mức 5 thì không có cây con nào là phổ biến thì thuật toán dừng