Một số vấn đề về tìm kiếm luật kết hợp trong cơ sở dữ liệu Một số vấn đề về tìm kiếm luật kết hợp trong cơ sở dữ liệu Một số vấn đề về tìm kiếm luật kết hợp trong cơ sở dữ liệu luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
LUẬN VĂN THẠC SỸ KHOA HỌC
MỘT SỐ VẤN ĐỀ VỀ TÌM KIẾM LUẬT LIÊN
KẾT TRONG CƠ SỞ DỮ LIỆU
NGÀNH: CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học: TS.TRẦN ĐÌNH KHANG
HÀ NỘI - 2005
Trang 2Lời cám ơn
Khang lời cám ơn chân thành nhất Em xin được cám ơn sự tận tình gợi ý, chỉ bảo và quan tâm của thầy giáo trong suốt quá trình thực hiện luận văn Và em cũng xin được cám ơn các thầy cô giáo trong khoa Công nghệ thông tin - trường Đại học Bách Khoa – Hà Nội, các thầy cô giáo đã dạy dỗ em trong suốt quá trình học đại học, cũng như toàn bộ các thầy cô giáo của trường đại học Bách Khoa – Hà Nội Ngoài ra, em cũng xin cám ơn các anh chị, các bạn bè trong lớp Cao học Công nghệ thông tin niên khoá 2003-2005 đã khuyến khích em rất nhiều trong quá trình thực hiện luận văn.
Học viên Cao học Công nghệ thông tin khoá 2003 - 2005
Nguyễn Vũ Cương
Trang 3Mục lục
M ở đầu 4
N ội dung 5
Chương I Khái niệm cơ bản về khai phá dữ liệu và tìm kiếm luật liên kết 5
I Tổng quan về khai phá dữ liệu 5
1.1.1 Định nghĩa KDD 5
1.1.2 Tiến trình KDD 6
1.1.3 KDD và các lĩnh vực có liên quan 8
II Các phương pháp khai phá dữ liệu 8
III Tổng quan về tìm kiếm luật liên kết 12
IV Các đặc điểm cơ bản về luật liên kết 14
1.4.1 Mô hình chuẩn 15
1.4.2 Chu trình tìm kiếm một tập các tập mục lớn 18
1.4.3 Hai đặc tính phân lớp 18
1.4.4 Hai hướng tiếp cận: Từ dưới lên và Từ trên xuống 19
V Một số giải thuật căn bản 21
1.5.1 Giải thuật Apriori và AprioriTID 22
1.5.1.1 Giải thuật Apriori 23
1.5.1.2 Giải thuật AprioriTID 27
1.5.2 Giải thuật Partition 29
1.5.2.1 Sản sinh ra các tập mục lớn cục bộ 32
1.5.2.2 Quá trình tạo ra tập mục lớn 34
1.5.2.3 Sản sinh ra các luật 34
VI Kết luận 35
Chương II Tìm kiếm luật liên kết với các mục có trọng số 36
I Giới thiệu về trọng số 36
II Tìm kiếm luật liên kết nhị phân có trọng số 37
2.2.1 Giới thiệu về luật liên kết nhị phân có trọng số 37
2.2.2 Luật liên kết nhị phân có trọng số 38
2.2.3 Hướng phát triển dựa trên trọng số và số lượng 39
2.2.4 Ngưỡng k-support - k-support bounds 40
2.2.5 Giải thuật tìm kiếm luật liên kết có trọng số 42
III Tìm kiếm luật liên kết có trọng số chuẩn tắc 47
2.3.1 Hướng tiếp cận mới trong trường hợp trọng số chuẩn tắc 48
2.3.2 Giải thuật tìm kiếm luật liên kết có trọng số chuẩn tắc 49
IV Tìm kiếm luật liên kết có trọng số mờ 52
2.5.1 Giới thiệu về luật mờ 52
2.5.2 Luật liên kết mờ có trọng số 54
V Kết luận 61
Chương III Một số vấn đề nâng cao 62
ại và so sánh các giải thuật 62
Trang 43.1.1 Phân loại 62
3.1.2 So sánh các giải thuật 65
II Luật liên kết mở rộng 68
3.2.1 Luật liên kết khái quát hoá – Generalized association rules 68
3.2.2 Luật liên kết không gian và thời gian 70
3.2.3 Luật liên kết định lượng 71
3.2.4 Luật liên kết dữ liệu khoảng – Interval Data Association Rules 75
3.2.5 Luật liên kết độ min-support bội - Multiple Min-supports Association Rules 76
3.2.6 Luật liên kết đa phương tiện 77
3.2.7 Luật liên kết toàn diện - Maximal Association Rules 78
3.2.8 Ràng buộc trên các luật 78
Chương IV Ví dụ minh hoạ 80
I Giải thuật Apriori và AprioriTID 81
4.1.1 Giải thuật Apriori: 82
4.1.2 Giải thuật AprioriTID 82
4.1.3 Giải thuật Partition 83
II Giải thuật MINWAL(O) và giải thuật MINWAL(W) 83
4.2.1 Giải thuật MINWAL(O) 85
4.2.2 Giải thuật MINWAL(W) 87
K ết luận 90
Tài li ệu tham khảo 91
Trang 5Mở đầu
nghệ Cách mạng khoa học kỹ thuật diễn ra mọi lúc, mọi nơi, trên nhiều lĩnh vực của đời sống Và Việt Nam cũng không nằm ngoài qui luật chung đó Trong quá trình phát triển này, chúng ta đã thu thập được một khối lượng rất lớn dữ liệu Và trong chính những cơ sở dữ liệu này tiềm ẩn rất nhiều tri thức có ích mà con người chưa khám phá Ngoài ra, số lượng dữ liệu lớn được thu thập vượt quá khả năng phân tích của chúng ta mà không sử dụng những kỹ thuật phân tích tự động Do vậy
đã có một nhu cầu rất thiết thực là tìm kiếm được những tri thức trong những núi dữ liệu này Nhu cầu này ngày càng cấp thiết và đã dẫn tới sự hình thành của một lĩnh
vực mới, đó là khai phá tri thức trong cơ sở dữ liệu – Knowledge discovery in
database(KDD) Đây là một hướng nghiên cứu còn khá mới mẻ, có tính ứng dụng thực tiễn cao và còn nhiều bài toán mở
Xuất phát từ thực tế nói trên, và với mục đích tìm hiểu việc tìm ra các luật liên kết trong cơ sở dữ liệu cỡ lớn, em đã quyết định lựa chọn đề tài “Một số vấn đề về tìm
kiếm luật liên kết trong cơ sở dữ liệu” Luận văn của em gồm 4 chương như sau: Chương I: Các khái niệm cơ bản về khai phá dữ liệu và tìm kiếm luật liên kết
Chương II Tìm kiếm luật liên kết với các tập mục có trọng số
Chương III Một số vấn đề nâng cao
Trong quá trình thực hiện đồ án này, mặc dù đã rất cố gắng, song không thể tránh khỏi những sai sót, em rất mong nhận được sự chỉ bảo và giúp đỡ từ phía thầy cô và các bạn
Trang 6Nội dung
Ch ương I Khái niệm cơ bản về khai phá dữ liệu và tìm
ki ếm luật liên kết
I T ổng quan về khai phá dữ liệu
Ngày nay, máy tính đã được sử dụng rộng rãi trong nhiều lĩnh vực Khả năng lưu trữ nhanh, đáng tin cậy và không hạn chế của máy tính tạo ra cho người sử dụng một môi trường hoàn hảo để thu thập và lưu trữ một khối lượng thông tin khổng lồ Máy tính cũng được dùng để tìm kiếm những thông tin hữu ích trong hàng loạt các
dữ liệu Đây chính là quá trình khai phá tri thức trong cơ sở dữ liệu
(KDD-Knowledge discovery in database) hay tìm kiếm thông tin
1 1.1 Định nghĩa KDD
KDD được định nghĩa là quá trình tìm kiếm thông tin có thể sử dụng được từ những dữ liệu trong CSDL Fayyad gợi ý rằng quá trình KDD có thể chia ra làm các bước, như được chỉ ra trong hình 1.1 Toàn bộ quá trình của KDD bao gồm các
bước lựa chọn, xử lý, chuyển đổi, tìm kiếm thông tin và diễn giải hay kết luận Các nhà nghiên cứu tập trung vào tiến trình tìm kiếm thông tin, vì nó chính là sự áp dụng các thuật toán để tìm ra các mô hình từ các dữ liệu, và đây là không phải là một công việc đơn giản
Hình 1.1: Tiến trình KDD
Trang 7Để tìm hiểu kỹ càng hơn về tiến trình KDD, chúng ta sẽ xem xét chi tiết trong phần 1.1.2
1.1.2 Ti ến trình KDD
Chúng ta xem xét tiến trình KDD được minh họa trong hình 1.2 như sau:
application domain: tìm ra những tri thức có liên quan, tìm ra mục đích của người sử dụng v.v…
• Tạo ra các tập dữ liệu đích - Create target data set: lựa chọn một tập dữ liệu,
hoặc tập trung vào tập con của các biến hoặc của các mẫu dữ liệu, từ đó thực hiện việc khai phá dữ liệu
• Tiền xử lý dữ liệu - Data cleaning preprocessing: các thao tác căn bản ví dụ
như việc loại bỏ nhiễu hoặc những dữ liệu không liên quan, thu thập các thông tin cần thiết để mô hình hóa hoặc miêu tả nhiễu, quyết định chiến lược
xử lý các trường dữ liệu bị thiếu, miêu tả thông tin chuỗi thời gian và các thay đổi biết được
• Biến đổi và quy chiếu dữ liệu - Data reduction and projection: tìm ra các đặc
điểm quan trọng để biểu diễn dữ liệu dựa trên mục tiêu của nhiệm vụ Sử dụng các phương pháp chuyển đổi để biến đổi một số lượng các biến hoặc tìm ra các biểu diễn bất biến cho dữ liệu
định liệu mục đích của tiến trình KDD là phân lớp- classification, hồi quy -
regression, phân c ụm - clustering etc…
• Lựa chọn các phương pháp tìm kiếm dữ liệu - Choose data mining method: lựa chọn các phương pháp có thể được sử dụng để tìm kiếm các mẫu -
pattern trong dữ liệu Điều này bao gồm cả việc quyết định liệu các mô hình hay tham số đã chính xác(ví dụ, các mô hình cho dữ liệu phân loại là khác so với các mô hình vector với các số thực) và việc tương thích giữa phương pháp tìm kiếm dữ liệu với toàn bộ đặc trưng của tiến trình KDD(ví dụ người
Trang 8sử dụng đầu cuối có thể quan tâm tới việc hiểu biết mô hình nhiều hơn là khả năng phán đoán của nó)
extract patterns/models: tìm kiếm các mẫu được quan tâm trong một mẫu biểu diễn riêng hoặc một tập các biểu diễn khác nhau: luật phân lớp hay cây, hồi quy, hoặc phân lớp… Người dùng có thể tác động hiệu quả tới các phương pháp tìm kiếm dữ liệu bằng việc thực hiện chính xác các bước ở trên
• Diễn giải và đánh giá các mẫu/mô hình - Interpretation and evaluation of
pattern/models
• Thống nhất dữ liệu được khai phá - Consolidating discovered knowledge:
phối hợp những tri thức này trong các hệ thống hoặc diễn giải đơn giản tri thức đó bằng tài liệu Điều này bao gồm cả việc kiểm tra và phân tích những xung đột tiềm năng với những tri thức đã có
Transform values
Select DM method (s)
Create derived attributes
Extract knowledge
Find important attributes &
value ranges
Test knowledge knowledge Refine
Query & report generation Aggregation & sequences Advanced methods
Data warehousing
Trang 91 1.3 KDD và các lĩnh vực có liên quan
KDD là một lĩnh vực liên quan tới nhiều ngành khác nhau, cụ thể là thống kê, học máy, cơ sở dữ liệu, giải thuật, tính toán hiệu năng cao và tính toán song song, thu thập tri thức cho hệ chuyên gia, hiện thực hóa dữ liệu v.v… Hệ thống KDD thường được xây dựng dựa trên các phương pháp, giải thuật, và kỹ thuật từ những lĩnh vực khác nhau này Mục đích duy nhất là kết xuất được tri thức từ dữ liệu trong các cơ
sở dữ liệu lớn
Lĩnh vực học máy và nhận dạng mẫu chồng lấp với KDD trong việc nghiên cứu lý thuyết và các giải thuật để lấy ra được các mẫu và các mô hình từ dữ liệu(các phương pháp tìm kiếm dữ liệu) KDD tập trung vào việc mở rộng những lý thuyết
và giải thuật này cho các bài toán tìm kiếm những mẫu đặc biệt(có thể hiểu là những tri thức hữu ích và đáng quan tâm) trong các tập dữ liệu thực lớn
KDD cũng có nhiều điểm chung với khoa học thống kê, đặc biệt là việc phân tích
dữ liệu Hệ thống KDD thường được nhúng các thủ tục thống kê để mô hình hóa dữ liệu và xử lý nhiễu trong toàn bộ các ứng dụng nền tri thức khám phá
Một lĩnh vực khác có liên quan là kho dữ liệu - data warehousing Kho dữ liệu gần đây có xu hướng là một hệ thống thông tin quản lý – Management Information
System phổ biến cho việc thu thập và xử lý dữ liệu giao dịch và có thể thu thập, xử
lý online Một hướng tiếp cận phổ biến khác trong việc phân tích các kho dữ liệu,
đó là OLAP - online analytical processing Các tools OLAP tập trung vào việc phân
tích dữ liệu đa chiều, đây là loại dữ liệu cao cấp hơn so với SQL Chúng ta cùng công nhận việc tìm kiếm tri thức và OLAP là các mặt liên quan tới nhau của một thế
hệ mới các tool xử lý và kết xuất thông tin thông minh
II Các ph ương pháp khai phá dữ liệu
Hai mục tiêu của việc tìm kiếm dữ liệu trong thực tế có xu hướng là có thể dự đoán
được - prediction và có thể miêu tả được - description Prediction sử dụng các biến
hoặc các trường dữ liệu trong cơ sở dữ liệu để dự đoán các giá trị chưa biết hoặc các
giá trị tương lai của các biến khác muốn theo dõi Description tập trung vào các
mẫu có thể diễn giải được để miêu tả dữ liệu Tầm quan trọng của prediction và
Trang 10description cho các ứng dụng tìm kiếm dữ liệu cụ thể khác nhau thì sẽ khác nhau rất nhiều
dữ liệu(data item) với một trong số các lớp đã được định nghĩa trước Ví dụ của các phương pháp phân lớp được sử dụng như một phần của các ứng dụng khai phá tri thức bao gồm việc phân loại các xu hướng trong thị trường tài chính và việc xác
Hình 1.3: Biên giới phân lớp
Hình 1.4: Một ví dụ về biên giới phân lớp thông qua các bộ lọc phân lớp không
tuyến tính(ví dụ như mạng nơ-ron) định tự động các đối tượng theo dõi trong các hệ cơ sở dữ liệu ảnh lớn Hình 1.3 và
rằng, không cần thiết phải phân chia các lớp một cách hoàn hảo bằng việc sử dụng các ranh giới tuyến tính Ngân hàng có thể sử dụng các vùng phân lớp để quyết định
Income Debt
Income Debt
Trang 11một cách tự động liệu những người vay nợ trong tương lai sẽ được cho vay hay không
Hồi quy – Regression: Hồi quy là việc xem xét một hàm số ánh xạ các đơn vị dữ liệu - data item với một biến giá trị thực có thể dự đoán được Các ứng dụng hồi
quy có rất nhiều, ví dụ như dự đoán số lượng khối sinh học xuất hiện trong rừng dựa vào các số đo sóng viba cảm biến, hoặc ước lượng khả năng mà một bệnh nhân
có thể chết khi đã có kết quả của một số mẫu kiểm tra, hoặc dự đoán nhu cầu khách hàng cho một sản phẩm mới v.v… Hình 1.5 chỉ ra kết quả của hồi quy tuyến tính đơn giản
Hình 1.5: Hồi quy tuyến tính đơn giản cho một tập dữ liệu nợ
một tập hữu hạn các thuộc tính hoặc của các lớp để miêu tả dữ liệu Các thuộc tính này có thể là trộn lẫn giữa thuộc tính đặc hữu và thuộc tính toàn thể, hoặc là bao gồm các đặc trưng phân cấp hoặc bao trùm lẫn nhau Ví dụ về việc phân cụm trong quá trình khai phá tri thức đó là việc phát hiện ra các nhóm khách hàng đồng nhất trong một cơ sở dữ liệu marketing và việc xác định được các thuộc tính con của
liệu vay nợ thành 3 cluster con: chú ý rằng các cluster chồng lẫn lên nhau cho phép các dữ liệu thuộc về nhiều hơn một cluster
Income Debt
Regression Line
Trang 12Hình 1.6: Phân cụm đơn giản cho một tập dữ liệu nợ thành 3 cluster
Tổng hợp - Summarization: Sự tổng hợp liên quan tới các phương pháp trong quá
trình tìm kiếm một miêu tả súc tích cho một tập dữ liệu con Một ví dụ đơn giản có thể là lập bảng kê cho các giá trị trung bình và độ lệch chuẩn cho toàn bộ các trường Các phương pháp phức tạp liên quan tới việc suy dẫn các luật tổng hợp, các
kỹ thuật mô phỏng hiện thực và việc phát hiện các quan hệ hàm giữa các biến Các
kỹ thuật tổng hợp thường được ứng dụng cho việc phân tích dữ liệu tương tác và việc sản sinh các báo cáo tự động
Mô hình hóa ràng thuộc – Dependency Modeling: tìm ra một mô hình có thể miêu tả
được rành buộc giữa các biến Mô hình hóa ràng buộc tồn tại ở 2 mức: mức cấu trúc của mô hình(thường ở dạng đồ họa) chỉ ra các biến nào phụ thuộc cục bộ lẫn nhau, trong khi đó mức định lượng của mô hình chỉ ra độ dài của các ràng buộc sử dụng
tỷ lệ số Ví dụ các mạng ràng buộc mang tính xác suất sử dụng tính độc lập có điều kiện để chỉ ra đặc trưng cấu trúc của mô hình và sử dụng các xác suất hoặc sự tương quan để chỉ ra độ dài của các ràng buộc Các ứng dụng sử dụng mạng ràng buộc mang tính xác suất ở nhiều lĩnh vực khác nhau ngày càng nhiều, ví dụ như việc phát triển từ các cơ sở dữ liệu hệ chuyên gia y tế mang tính xác suất, các ứng dụng thu thập thông tin và việc mô hình hóa bộ gen người
Phát hiện thay đổi và độ lệch - Change and Deviation Detection: Tập trung vào việc
phát hiện những thay đổi lớn trong dữ liệu so với những giá trị đã được xác định từ trước
Income
Debt Cluster 1
Cluster 2 Cluster 3
Trang 13Biểu diễn mô hình - Model Representation: là ngôn ngữ L miêu tả các mẫu - pattern
có thể phát hiện ra được Nếu việc biểu diễn bị giới hạn thì không có một mẫu thử nào sẽ tạo ra được một mô hình chuẩn cho dữ liệu
Đánh giá mô hình - Model Evaluation: ước lượng một mẫu cụ thể(một mô hình và
đánh giá độ chính xác dự đoán được là dựa trên tính hiệu lực chéo - cross
validation Việc đánh giá chất lượng miêu tả dựa trên độ chính xác dự đoán, tình mới lạ, tính hữu ích và tính dễ hiểu của mô hình Cả thuộc tính logic và thuộc tính thống kê đều có thể được sử dụng để đánh giá mô hình
Tìm kiếm phương pháp – Search Method: bao gồm 2 thành phần: tìm kiếm tham số
và tìm kiếm mô hình Trong tìm kiếm tham số, giải thuật phải tìm ra được các tham
số tối ưu hóa các tiêu chuẩn đánh giá mô hình dựa trên dữ liệu đã quan sát và biểu diễn mô hình cố định Tìm kiếm mô hình hoạt động như một bước lặp thông qua các phương pháp tìm kiếm tham số: biểu diễn mô hình được thay đổi sao cho một
họ các mô hình được xem xét Với mỗi biểu diễn mô hình xác định, phương pháp tìm kiếm tham số được khởi tạo để đánh giá chất lượng mỗi mô hình cụ thể đó Việc thực thi các phương pháp tìm kiếm mô hình có xu hướng sử dụng các kỹ thuật tìm kiếm heuristic vì kích cỡ không gian nhớ thường không đủ để đáp ứng các phương pháp tìm kiếm vét cạn
văn này, chúng ta sẽ chỉ quan tâm tới việc tìm kiếm các luật liên kết, một nhánh nhỏ trong tìm kiếm dữ liệu trong KDD
III T ổng quan về tìm kiếm luật liên kết
Mục đích chính của việc tìm luật liên kết là tìm được quan hệ sau đây:
A1 ∧ A2 ∧…∧ Am ⇒ B1 ∧ B2 ∧ … ∧ Bn
Trong đó Ai, Bj là các tập thuộc tính-giá trị trong cơ sở dữ liệu và Ai ≠Bj ∀i, j Nó chỉ ra liên kết nào đó giữa A1, …, Am và B1, …, Bn
Trang 14Những nghiên cứu trước đây về vấn đề tìm kiếm luật kết chỉ xử lý các mục tương tự nhau Luật liên kết được gọi là luật liên kết không trọng số nếu các mục được xem xét tương tự nhau Luật liên kết được gọi là luật liên kết có trọng số nếu các mục được xem xét khác nhau
Ví dụ 1:
Luật sau đây được gọi là luật liên kết nhị phân không trọng số
với độ ủng hộ = 60% & độ tin cậy = 80%
Luật trên có thể điễn giải rằng khả năng mua bánh mỳ và giăm bông trong một tập các giao dịch là 0.6 và độ tin cậy cho ta biết khả năng mua giăm bông là 0.8 khi có người mua bánh mỳ
Luật đề cập ở trên là trường hợp không trọng số Tuy nhiên, trong các trường hợp sau, người ta sẽ xem xét nhiều hơn đến tầm quan trọng của mục hoặc của các thuộc tính
tìm luật liên kết trong một cơ sở dữ liệu Ví dụ, theo nhận thức của con người, luật
thì thú vị hơn luật
Bằng cách sử dụng các trọng số, tầm quan trọng của các thuộc tính hoặc các mục có thể được phản ánh, chúng ta có thể tìm ra quy luật tương ứng với sự thú vị Ví dụ, chúng ta thêm trọng số cho các giao dịch mua bán, khi mà các mặt hàng đang chững lại hoặc đạt lợi nhuận cao hơn
Việc tìm kiếm các luật liên kết không trọng số dựa chủ yếu vào số lượng trong trường hợp nhị phân, hoặc giá trị trung bình của các độ thuộc mờ trong các luật cho trường hợp mờ Luật liên kết sẽ giống nhau nếu ngưỡng không thay đổi với cùng cơ
Trang 15sở dữ liệu, vì vậy nó sẽ không tạo ra một cách tiếp cận dễ dàng cho những người sử dụng để điều chỉnh độ thú vị của luật
Cuối cùng, đó là một số luật nhỏ hơn ngưỡng cho phép hoặc không thú vị Các luật liên kết truyền thống không giải quyết được gì về khía cạnh này Do vậy, chúng ta
sẽ giới thiệu khái niệm trọng số trong việc tìm kiếm các luật liên kết trong luận văn này
Việc tìm luật liên kết trong trường hợp không trọng số đã được thực hiện trong nhiều năm Tuy nhiên, do những lý do trên, chúng ta cần phải định nghĩa các luật liên kết cho các mục có trọng số
Để bắt đầu, trước tiên chúng ta định nghĩa luật liên kết Tương tự như [1], [2], chúng ta xem xét một cơ sở dữ liệu với tập giao dịch D, một tập thuộc tính hay các mục T, và mỗi giao dịch được gắn vớI một nhận dạng <TID>
Định nghĩa 1 Một luật liên kết (không có trọng số) có dạng X ⇒ Y, trong đó X ⊂
của luật
Định nghĩa 2 Độ ủng hộ của luật liên kết nhị phân không có trọng số X ⇒ Y là khả
năng mà X U Y có mặt trong tập các giao dịch trong cơ sở dữ liệu D, được chỉ ra bởi support(X, Y)
Định nghĩa 3 Độ tin cậy của luật liên kết nhị phân(không có trọng số) X ⇒ Y là
khả năng mà một giao dịch chứa Y khi đã chứa X, ví dụ conf(X ⇒ Y)
Trong luận văn này, vấn đề chính là tìm ra luật liên kết với các mục có trọng số, dựa trên các loại luật liên kết khác nhau, đó là luật liên kết nhị phân và luật liên kết định lượng Cần phải có các thuật toán mới để giải quyết vấn đề này bởi vì các thuật toán hiện có chưa giải quyết được
IV Các đặc điểm cơ bản về luật liên kết
Việc tìm kiếm trong cơ sở dữ liệu được phát triển như một bài toán trợ giúp quyết định trong các tổ chức lớn và được miêu tả như một lĩnh vực nghiên cứu rất quan
Trang 16trọng Một trong những thách thức khi tìm kiếm trong cơ sở dữ liệu là vấn đề phát triển các giải thuật nhanh và hiệu quả, những giải thuật này có thể xử lý được một khối lượng dữ liệu lớn bởi vì hầu như toàn bộ các giải thuật tìm kiếm đều được thực hiện trên toàn bộ cơ sở dữ liệu và thông thường là các cơ sở dữ liệu có kích cỡ rất lớn Giả sử xét một siêu thị với một tập hợp lớn các mục Các quyết định bán hàng thông thường trong việc quản lý một siêu thị thường là sẽ bán cái gì, thiết kế các phiếu mua hàng thế nào, đặt hàng hóa trên giá thế nào v.v… để thu được lợi nhuận
liệu giao dịch trong quá khứ Tuy nhiên, cho tới gần đây, chỉ có những dữ liệu tổng thể về các giá trị bán hàng tích lũy mới được lưu trữ trong máy tính Tiến trình
trong kỹ thuật mã vạch - bar-code technology hiện nay đã có thể xử lý được các vấn
đề lưu trữ các đơn vị hàng hóa - item được mua trong từng giao dịch Những loại dữ
liệu này không hẳn chỉ chứa các mục được mua vào cùng một thời điểm Nó còn có thể chứa được các mục được mua bởi 1 khách hàng trong một khoảng thời gian Nhiều đơn vị đã thu thập được số lượng lớn những dữ liệu loại này Các tập dữ liệu thường được xử lý rất chậm trong cơ sở dữ liệu Một trong những lý do chính là trong các cơ sở dữ liệu hiện tại thường có rất ít các hàm, các thủ tục hiệu quả để lấy
ra được thông tin mà người dùng quan tâm
Chương này giới thiệu bài toán tìm kiếm luật liên kết trong các tập dữ liệu lớn giữa
các tập mục - set of items với độ tin cậy đã xác định Một ví dụ về luật liên kết loại
này là phát biểu “Nếu 90% giao dịch là mua bánh mỳ và bơ thì cũng đồng thời mua sữa” Phần tiền đề của luật trên là bánh mỳ và bơ, phần kết quả của luật trên là sữa
Số 90% là độ tin cậy của luật
1.4.1 Mô hình chu ẩn
Gọi I =I1, I2, I3… là tập các thuộc tính nhị phân, được gọi là các mục và T là một cơ
sở dữ liệu giao dịch - database of transactions Mỗi giao dịch t được biểu diễn như
một vectơ nhị phân, với t[k] = 1 nếu t mua mục Ik, ngược lại t[k]=0, như vậy sẽ có một dòng dữ liệu trong cơ sở dữ liệu cho mỗi giao dịch Gọi X là tập các mục trong
I Chúng ta nói rằng t thoả mãn X nếu với mọi mục Ik trong X, t[k]=1
Trang 17Với một luật liên kết được thể hiện bới X ⇒ Ij, với X là một tập hợp trong I, và Ij là
giao dịch T với độ tin cậy 0 ≤ c ≤ 1 nếu ít nhất 100.c% các giao dịch trong T thoả mãn X đồng thời thoả mãn Ij Chúng ta sẽ sử dụng ký pháp X ⇒ Ij | c để chỉ ra rằng luật X ⇒ Ijcó độ tin cậy là c
Thông thường, một tập các mục được gọi là một tập mục, ví dụ như phần tiền đề hay phần kết quả của một luật Số lượng các mục trong một tập mục được gọi là độ dài của một tập mục Các tập mục có độ dài k thường được gắn một ký hiệu là k-itemset
Cho một tập các giao dịch T, chúng ta sẽ quan tâm tới việc sản sinh các luật thoả mãn các ràng buộc như sau:
tới việc giới hạn các mục có thể xuất hiện trong 1 luật Ví dụ, chúng ta chỉ
trong phần tiền đề Kết hợp các ràng buộc trên, thì chúng ta có thể tìm kiếm các luật chứa một mục X nào đó đã được định nghĩa xuất hiện trong phần kết quả và một mục Y nào đó xuất hiện trong phần tiền đề
số lượng các giao dịch trong T support một luật Độ support cho một luật được định nghĩa là phân số của các giao dịch trong T thoả mãn hợp các mục trong phần tiền đề và phần kết quả của luật đó
Độ support sẽ không bị nhầm lẫn với độ tin cậy Trong khi độ tin cậy là thước đo độ dài của một luật thì độ support sẽ tương ứng với một ý nghĩa mang tính thống kê
tế là chúng ta thường quan tâm tới các luật với độ support lớn hơn một ngưỡng nào
đó Nếu độ support không đủ lớn, thì luật đó không đáng để xem xét hoặc đơn giản luật đó không được ưu tiên
Theo như các định nghĩa trên, bài toán tìm kiếm các luật được phân thành 2 bài toán con như sau:
Trang 18• Tạo ra toàn bộ các kết hợp của các mục có độ support lớn hơn một ngưỡng nào đó, được gọi là minsupport Gọi những cách kết hợp đó là các tập mục
lớn - large tập mục và ngược lại là các tập các tập mục nhỏ - small tập mục
• Cho một tập mục lớn Y = I1I2…Ik, k≥2, tạo ra toàn bộ các luật(nhiều nhất là
k luật) sử dụng các mục từ tập I1, I2, …, Ik Tiền đề của mỗi luật sẽ là tập con
X của Y sao cho X có k-1 mục, và kết quả sẽ là các mục Y – X Để tạo ra luật X ⇒ Ij | c, với X = I1I2…Ij-1Ij+1 … Ik, lấy độ support của X chia cho độ support của Y Nếu tỉ lệ mà lớn hơn c thì luật đó là thoả mãn độ tin cậy c, còn ngược lại thì không
bộ các luật suy dẫn từ Y đều thoả mãn ràng buộc hỗ trợ bởi vì Y thoả mãn ràng buộc hỗ trợ và Y là tập hợp các mục trong kết quả và tiền đề của mỗi luật
Ví dụ 1:
một cơ sở dữ liệu Nếu ngưỡng support được đặt là 0.5, thì các tập mục lớn là {1}, {2}, {3}, {4}, {1,2}, {1,3}, {1,4}, {2,3}, {2,4}, {3,4}, {1,2,3}, {1,2,4}, {1,3,4}, {2,3,4}, và {1,2,3,4}, bởi vì chúng xuất hiện ít nhất trong một nửa cơ sở dữ liệu(một nửa các giao dịch) Ví dụ, tập mục {1,2} là lớn vì 3 trong 4 giao dịch(giao dịch 1,3,4) đều chứa mục 1 và mục 2, như vậy độ support của tập mục {1,2} này là 0.75 Ngoài ra, tập mục {2,5} là nhỏ vì chỉ 1 trong 4 giao dịch chứa 2 mục {2}, {5}, như vậy độ support của tập mục {2,5} này là 0.25
Trang 19Hình 2.1: Một ví dụ về cơ sở dữ liệu
1.4.2 Chu trình tìm ki ếm một tập các tập mục lớn
chuẩn như sau Tập hợp của toàn bộ các tập mục sẽ được xử lý chia nhỏ thành 3 tập:
• Lớn: Đây là tập hợp toàn bộ các tập mục đã được tìm ra là lớn
• Chưa phân lớp: Đây là toàn bộ các tập mục còn lại
Bước khởi tạo, tập lớn và tập nhỏ là tập rỗng Thông qua một số thao tác, tập lớn và tập nhỏ sẽ tăng lên một cách đều đặn khi xử lý tập chưa phân lớp Việc xử lý sẽ kết thúc khi tập chưa phân lớp là tập rỗng, đó chính là khi toàn bộ các tập mục hoặc là thuộc tập lớn hoặc là thuộc tập nhỏ Nói cách khác, việc tính toán kết thúc khi toàn
bộ các tập mục lớn được tìm ra
Giả thiết rằng bất kỳ một tiến trình phân lớp tập mục nào thì đều đã có một vài tập mục đã được phân lớp thành lớp lớn, một số thành lớp nhỏ, và một số chưa được phân lớp
1.4.3 Hai đặc tính phân lớp
được phân lớp
• Đặc tính 1: Nếu một tập mục là nhỏ, thì tất cả các tập cha của nó đều là nhỏ,
và chúng sẽ không cần được kiểm tra nữa
Hình 2.2: Hai đặc tính
Trang 20Đặc tính 2: Nếu một tập mục là lớn, thì toàn bộ các tập con của nó đều là lớn, và chúng sẽ không cần được kiểm tra nữa
là lớn, thì tập mục {1,2,3} phải là lớn, tương tự như vậy, sẽ có nhiều hơn hoặc bằng
số giao dịch chứa mục 1, mục 2, mục 3, so với số giao dịch chứa mục 1, mục 2, mục
3, mục 4
Nói chung có thể tìm kiếm các tập mục lớn nhất theo cả 2 hướng từ trên xuống và
từ dưới lên Nếu các tập mục độ dài lớn nhất là nhỏ, phương pháp tìm kiếm hiệu quả là từ dưới lên Ngược lại, nếu các tập mục độ dài lớn nhất là lớn, phương pháp tìm kiếm hiệu quả là từ trên xuống
1.4.4 Hai hướng tiếp cận: Từ dưới lên và Từ trên xuống
Theo [13], chúng ta có 2 hướng tiếp cận như sau:
Hướng tiếp cận từ dưới lên: bao gồm nhiều bước lặp, mỗi bước lặp gồm 2 bước chi
tiết, và trong cuối bước lặp thứ k, tất cả các tập mục lớn có độ dài k hoặc nhỏ hơn sẽ được tìm thấy
Trong bước chi tiết đầu tiên của bước lặp k+1, tập mục có độ dài k+1 được tạo ra Một trong những tập mục này được bỏ qua, vì chúng không cần thiết phải được xử
lý trong các bước lặp tiếp theo Cụ thể, những tập mục nào là tập cha của các tập mục nhỏ thì được bỏ qua(Đặc tính thứ 1) Các tập mục còn lại tạo thành tập ứng cử viên tại mỗi bước lặp
Trong bước chi tiết thứ 2, độ ủng hộ của những tập mục này được tính toán và chúng được sắp xếp vào lớp lớn hoặc lớp nhỏ Độ ủng hộ của 1 ứng cử viên được tính toán thông qua việc đọc cơ sở dữ liệu
Ví dụ 3:
Trong hình 2.3 minh họa cho một ví dụ về tìm kiếm từ dưới lên với cơ sở dữ liệu trong hình 2.1 Cả 5 tập mục độ dài 1(1-itemsets) {{1}, {2}, {3}, {4}, {5}} đều là
Trang 21ứng cử viên cho bước lặp đầu tiên Sau khi qua bước tính toán độ support, ta xác định được 1-itemset {5} là nhỏ Do đặc tính 1, toàn bộ các tập cha chứa tập mục {5} sẽ không cần phải xem xét tới Do vậy, tập ứng cử cho bước lặp thứ 2 là {1,2}, {1,3}, {2,3}, {1,4}, {2,4}, {3,4} Thủ tục tương tự sẽ được lặp cho tới khi tìm ra toàn bộ các tập mục lớn nhất, và trong ví dụ này đó là {1,2,3,4}
Hình 2.3: Tìm kiếm từ dưới lên và tìm kiếm từ trên xuống Trong hướng tiếp cận từ dưới lên, mọi tập mục lớn đều phải là ứng cử viên trong bước lặp nào đó và nó được xem xét một cách tường minh Như chúng ta đã thấy trong ví dụ, toàn bộ các tập mục lớn(tập con của {1,2,3,4}) đều phải được xem xét trước khi tìm được các tập mục lớn nhất Do vậy, hướng tiếp cận này chỉ hiệu quả khi số lượng toàn bộ các tập mục lớn là nhỏ
nữa Trong trường hợp này, sử dụng hướng tiếp cận từ trên xuống sẽ có hiệu quả cao hơn
Hướng tiếp cận từ trên xuống: bắt đầu với một tập mục đơn độ dài n, và giảm độ
dài của các ứng cử viên xuống 1 tại mỗi bước lặp Khi một tập mục độ dài k được xác định là nhỏ, toàn bộ tập mục con độ dài k-1 sẽ được xem xét trong bước lặp tiếp theo Mặt khác, nếu một tập mục độ dài k được xác định là lớn, thì toàn bộ tập con của nó là lớn và chúng sẽ không cần xem xét tới nữa(Đặc tính 2)
Ví dụ 4:
Trang 22Trong hình 2.3 minh hoạ cho hướng tiếp cận từ trên xuống, với cùng một cơ sở dữ liệu được miêu tả trong hình 2.1 Tập mục độ dài 5 {1,2,3,4,5} là ứng cử viên duy nhất trong bước lặp đầu tiên Sau quá trình tính toán độ support, nó là nhỏ Ứng cử viên cho bước 2 là 4 tập con của tập mục {1,2,3,4,5} Trong ví dụ này, tập mục {1,2,3,4} là lớn và các tập mục còn lại là nhỏ Với đặc tính 2, toàn bộ các tập con của {1,2,3,4} là lớn và chúng không cần phải được xem xét tới nữa Thủ tục này được tiếp tục cho tới khi có được toàn bộ các tập mục độ dài lớn nhất(tức là khi toàn bộ các tập mục nhỏ được xem xét)
Trong hướng tiếp cận từ trên xuống, mỗi một tập mục nhỏ đều được xem xét một cách tường minh Như chúng ta có thể thấy trong ví dụ, tất cả các tập mục nhỏ đều phải được xem xét trước khi có được tập mục độ dài lớn nhất
Lưu ý rằng, trong hướng tiếp cận từ dưới lên, chỉ đặc tính 1 ở trên mới được sử dụng để lược bỏ các ứng cử viên Đây là kỹ thuật mà rất nhiều giải thuật sử dụng để làm giảm số lượng các ứng cử viên Tương tự như vậy, trong hướng tiếp cận từ trên xuống, chỉ đặc tính 2 ở trên mới được sử dụng để lược bỏ các ứng cử viên
V M ột số giải thuật căn bản
Bài toán tìm kiếm luật liên kết được giới thiệu lần đầu tiên trong [1] và giải thuật
AIS được đề xuất để tìm kiếm toàn bộ các luật liên kết Trong [4], giải thuật mang tên SETM sử dụng các hàm quan hệ cũng được đề xuất để giải quyết vấn đề này Trong [2], 2 giải thuật mang tên Apriori và AprioriTID cũng được đề xuất Những giải thuật này có được những cải tiến quan trọng so với các giải thuật trước nó Tiến trình sản sinh ra luật cũng được mở rộng hơn, bao gồm nhiều mục trong phần kết quả và giải thuật hiệu quả để sản sinh ra các luật
Các giải thuật chủ yếu xoay quanh:
• cách các tập mục ứng cử viên được sinh ra
liệu Với mỗi giao dịch, các tập mục ứng cử viên được sinh ra khi mở rộng các tập mục lớn từ bước trước với các mục trong giao dịch sao cho giao dịch đó chứa các tập mục mới Trong [2], các tập mục ứng cử viên được sinh ra trong một bước riêng
Trang 23sử dụng chỉ những tập mục lớn từ bước trước Điều này thực hiện bằng cách ghép nối tập các tập mục với chính nó Tập ứng cử viên kết quả được lược bỏ để giới hạn bất cứ tập mục nào có tập con không được chứa trong các tập mục lớn trước đó Kỹ thuật này tạo ra các tập ứng cử viên có số lượng nhỏ hơn kỹ thuật thông thường khác
Độ support cho các tập mục ứng cử viên được xác định như sau Tập toàn bộ các tập mục ứng cử viên được xác định ứng với mỗi giao dịch Số lượng của các tập mục này được tăng mỗi lần lên một Trong [1], tác giả không miêu tả cấu trúc dữ liệu sử dụng cho những xử lý tập con này Apriori và AprioriTID khác nhau dựa trên cấu trúc dữ liệu được sử dụng cho việc tính toán độ support các tập mục ứng cử viên
định liệu chúng có chứa trong giao dịch không Cấu trúc cây băm(hashtree) được sử dụng để hạn chế tập các tập mục ứng cử viên được so sánh để việc kiểm tra các tập con là tối ưu Trong AprioriTID, sau mỗi bước, một bộ mã hoá toàn bộ các tập mục lớn chứa trong một giao dịch được sử dụng để thay thế cho giao dịch Trong bước tiếp theo, các tập mục ứng cử viên được kiểm tra để gộp vào trong giao dịch bằng cách xem xét liệu các tập mục lớn sử dụng để sinh ra các tập mục ứng cử viên là có chứa trong bộ mã hoá giao dịch hay không Trong Apriori, việc kiểm tra các tập con được thực hiện cho mỗi giao dịch trong mỗi bước lặp Tuy nhiên, trong AprioriTID, nếu một giao dịch không chứa bất kỳ một tập mục lớn nào trong bước lặp hiện tại, thì giao dịch đó không được xem xét trong các bước lặp tiếp theo Do vậy, trong các bước sau, kích cỡ của các bộ mã hoá có thể nhỏ hơn so với kích thước thực sự của
cơ sở dữ liệu Giải thuật hybrid cũng được đề xuất, giải thuật này sử dụng Apriori cho các bước khởi tạo và chuyển sang AprioriTID cho các bước tiếp theo
1.5.1 Gi ải thuật Apriori và AprioriTID
* Ý tưởng tiếp cận:
Giải thuật Apriori và AprioriTid tạo ra các tập mục ứng cử viên trong một bước lặp bằng cách sử dụng các tập mục lớn ở trong bước trước mà không cần xem xét đến các giao dịch trong cơ sở dữ liệu Vì bất cứ tập con của tập các tập mục lớn nào đều
Trang 24là lớn, do vậy, các tập mục ứng cử viên có k mục có thể được sinh ra bằng cách liên kết các tập mục lớn có k-1 mục và xoá đi bất cứ tập con nào không là lớn Thủ tục này sẽ tạo ra một số lượng ít hơn các tập mục ứng cử viên
Giải thuật AprioriTid có thêm một đặc tính mở rộng đó là cơ sở dữ liệu không dùng toàn bộ cho việc tính toán độ support của các tập mục ứng cử viên sau bước lặp đầu tiên Ngoài ra, việc mã hoá các tập mục ứng cử viên được sử dụng trong bước trước được tận dụng cho mục đích này Trong các bước lặp sau, kích thước của việc mã hoá này có thể nhỏ hơn rất nhiều so với cơ sở dữ liệu, do vậy sẽ tiết kiệm được nhiều chi phí Điều này sẽ được nói chi tiết hơn trong phần sau
Ký pháp: Chúng ta giả sử rằng các mục trong mỗi giao dịch đều đã được sắp xếp thứ tự, và mỗi bản ghi trong cơ sở dữ liệu là cặp đôi (Tid, item), vói TID là biến định danh cho các giao dịch tương ứng Chúng tôi sử dụng ký pháp c[1] c[2] c[k] để biểu diễn một k-itemset c chứa các mục c[1], c[2], …, c[k], với c[1]<c[2]<….<c[k]
Trong bảng 2.1 miêu tả các ký pháp sử dụng trong giải thuật
giữ tương ứng với các ứng cử viên
Bảng 2.1: Ký pháp
1.5.1.1 Gi ải thuật Apriori
* Ý tưởng tiếp cận:
Giải thuật này sử dụng đặc tính bất cứ tập con nào của một tập mục lớn cũng phải là một
tập mục lớn Do vậy, giả thiết rằng các mục trong một tập mục được sắp xếp thứ tự Giải thuật Apriori sẽ sản sinh ra các itemset ứng cử viên bằng cách kết hợp các itemset lớn của
Trang 25bước trước và xoá những tập con nào là nhỏ của bước trước mà không cần quan tâm tới các giao dịch trong cơ sở dữ liệu Bằng việc chỉ xem xét những tập mục lớn ở bước trước,
số lượng các itemset ứng cử viên được giảm đi đáng kể
* Giải thuật:
Hình 2.1 đưa ra giải thuật Apriori Bước đầu tiên của giải thuật là tính toán ra các
mục lớn Lk-1 trong bước thứ k-1 được dùng để sinh ra các tập mục ứng cử viên Ck,
sử dụng hàm apriori-gen được miêu tả trong phần sau Pha 2, quét cơ sở dữ liệu và tính toán độ support của các ứng cử viên trong Ck
Hình 2.1: Giải thuật Apriori
a Hàm apriori-gen: Hàm apriori_gen lấy Lk-1 - tập hợp toàn bộ các (k-1)-itemset
lớn làm đầu vào Nó trả về kết quả là tập cha của toàn bộ các k-itemset lớn
Hình 2.2: Hàm apriori-gen
1) L1 = {large 1-itemset};
2) for ( k=2; Lk-1!=0; k++ ) do begin
3) Ck = apriori-gen(Lk-1); //Tập các ứng cử viên mới
4) forall giao dịch t ∈ D do begin
5) Ct = subset(Ck,t); // Các ứng cử viên được lưu trong t
Giải thuật Apriori-gen
Đầu vào: Lk, tập chứa các tập mục lớn được tìm ra trong bước k
1) Gọi thủ tục join để tạo ra tập ứng cử viên ban đầu
2) Gọi thủ tục prune để tạo ra tập ứng cử viên kết quả
Trang 26Hàm apriori-gen gồm 2 bước:
Bước 1: Bước kết hợp: Thủ tục này kết hợp 2 k-itemset lớn có cùng (k-1) tiền tố, để
tạo ra (k+1)-itemset được coi như là ứng cử viên cho bước lặp sau
Hình 2.3: Câu SQL miêu tả bước kết hợp
Hình 2.4: Thủ tục kết hợp
Bước 2: Bước lược bỏ: Thủ tục lược bỏ được sử dụng để loại ra khỏi tập ứng cử
viên toàn bộ các tập mục c có các tập con độ dài k không nằm trong tập các tập mục lớn Lk
Thủ tục kết hợp Join của giải thuật Apriori-gen
Đầu vào: Lk, tập chứa các tập mục lớn trong bước k
Đầu ra: Ck+1, tập ứng cử viên ban đầu
/* Các tập mục trong Lk đã được sắp xếp thứ tự */
1) for i from 1 to |Lk-1|
2) for j from i+1 to |Lk|
3) if Lk.itemseti and Lk.itemsetj có cùng (k-1) tiền tố then
4) Ck+1 := Ck+1 {Lk.itemseti Lk.itemsetj};
5) else
6) break;
Trang 27Hình 2.5: Thủ tục lược bỏ
Gốc của cây băm được định nghĩa ở độ sâu 1 Một nút ở độ sâu d sẽ trỏ tới nút ở độ
chúng ta bắt đầu từ gốc, và đi xuống cho tới khi gặp nút lá Tại một nút ở độ sâu d,
thường
dịch t như sau Nếu chúng là nút lá, chúng ta sẽ tìm ra các tập mục trong nút lá được
lưu trữ trong t và sẽ thêm chúng vào tập kết quả Nếu chúng là nút thông thường và
trong t và áp dụng đệ quy thủ tục này tới nút xác định theo đối tượng bucket tương ứng Với nút gốc, chúng ta băm trên mọi mục trong t
Ví dụ 5:
Giả sử L3 là tập {{1,2,3}, {1,2,4}, {1,3,4}, {1,3,5}, {2,3,4}} Sau bước 1(bước kết hợp), C4 sẽ là {{1,2,3,4}, {1,3,4,5} } Bước 2(bước lược bỏ) sẽ bỏ đi {1,3,4,5} trong C4vì {1,4,5} không thuộc L3, do vậy C4sẽ là {{1,2,3,4}}
Thủ tục lược bỏ Prune của giải thuật Apriori-gen
Đầu vào: Ck+1, tập ứng cử viên ban đầu được sinh ra từ thủ tục Join ở trên
Đầu ra: Ck+1, tập ứng cử viên kết quả không chứa bất cứ tập con nào không lớn
1) for all tập mục c in Ck+1
2) for all k-subset s của c
3) if s ∉ Lk then
4) delete c from Ck+1;
Trang 281.5.1.2 Gi ải thuật AprioriTID
* Ý tưởng tiếp cận:
Một đặc điểm cần chú ý của giải thuật đó là cơ sở dữ liệu D không được sử dụng để
k-itemset có khả năng là lớn trong giao dịch với định danh là TID Với k=1, C1 tương ứng với cơ sở dữ liệu D, tuy nhiên mỗi mục i được thay thế bởi tập mục {i} Với k>1, Ck được tạo ra bởi giải thuật(bước 10) Mỗi phần tử thuộc Ck tương ứng với giao dịch t là (t.TID, {c ∈ Ck| c được chứa trong t}) Nếu một giao dịch không chứa
với giao dịch đó Do vậy, kích cỡ củaCk sẽ nhỏ hơn số lượng giao dịch trong cơ sở
dữ liệu, đặc biệt với giá trị số k rất lớn Ngoài ra, với giá trị số k rất lớn, mỗi đầu vào sẽ nhỏ hơn giao dịch tương ứng, bởi vì rất ít các ứng cử viên có thể có trong giao dịch
* Thuật toán:
Giải thuật AprioriTid được chỉ ra ở hình 2.6, giải thuật này cũng sử dụng hàm
ứng cử viên trước khi một bước lặp bắt đầu Trước tiên, toàn bộ cơ sở dữ liệu được quét và tìm ra C1 Điều này có nghĩa là mỗi thành phần trong C1 đều gắn liền với
phần trong C1 Sau đó, dùng hàm apriori_gen() để sinh ra C2 C2 xác định được
tương ứng với một giao dịch T khi xem xét các thành phần của C2 xuất hiện trong
T Để thực hiện điều này, C1 sẽ được quét thay cho cơ sở dữ liệu Sau đó thì L2 sẽ được xác định thông qua việc tính toán độ support trong C2 Quá trình này tiếp tục cho tới khi không còn tập mục ứng cử viên nào được tìm ra
Trang 29Hình 2.6: Giải thuật AprioriTid Tuy nhiên, với giá trị số k nhỏ, mỗi đầu vào sẽ lớn hơn giao dịch tương ứng, vì một đầu vào trong Ckbao gồm toàn bộ k-itemset ứng cử viên chứa trong giao dịch
Ví dụ 6:
Giả sử có cơ sở dữ liệu như trong hình 2.7, và ngưỡng ủng hộ là 2 giao dịch(50%)
bằng việc lặp các giá trị trong C1và tạo ra C2 Đầu vào của C1 là {{1}, {3}, {4}}, tương ứng với giao dịch 100 Cttại bước thứ 7 tương ứng với đầu vào t là {{1 3}},
viên của t.tập-các-itemset
Trang 30Gọi hàm apriori-gen với L2 sẽ tạo ra C3 Từ C2 và C3 sẽ tạo ra C3 Chú ý rằng không có đầu vào trong C3 cho các giao dịch với TID là 100 và 400, vì chúng không chứa bất kỳ một mục nào trong C3 Ứng cử viên {2,3,5} trong C3sẽ là thành viên duy nhất của L3 Khi chúng ta sử dụng L3 tạo ra C4, C4 rỗng và chúng ta sẽ dừng lại
Trang 31cho chúng có thể được kiểm tra khi quét 1 lần cơ sở dữ liệu và có thể tìm ra được
một tập chứa toàn bộ tập mục lớn thực sự
Giải thuật Partition sẽ theo hướng đó trong 2 lần quét cơ sở dữ liệu Trong lần quét đầu tiên, nó sẽ tạo ra được một tập các tập mục có tiềm năng là lớn Tập này là tập cha của toàn bộ tập mục lớn, ví dụ nó có thể chứa những khẳng định sai Nhưng không một khẳng định sai nào là được biết đến Trong lần quét thứ hai, bộ đếm cho mỗi tập mục đó được thiết lập và độ support thực sự của chúng được tính toán khi quét cơ sở dữ liệu
Giải thuật này thực hiện trong 2 pha Trong pha 1, giải thuật Partition phân chia cơ
sở dữ liệu một cách logic thành các phần - partition không chồng lấp nhau Các
partition này chỉ được xem xét một lần tại một thời điểm và toàn bộ tập mục lớn cho partition đó được sinh ra Khi kết thúc pha 1, các tập mục lớn được trộn lẫn để tạo
ra một tập các tập mục có tiềm năng là lớn Trong pha 2, độ support thực sự cho các tập mục được tính toán và các tập mục lớn được xác định Kích thước của các partition được lựa chọn sao cho mỗi partition có thể được lưu trữ trong bộ nhớ chính, do vậy các partition chỉ được đọc một lần trong mỗi pha
Chúng ta giả thiết rằng các giao dịch được cho dưới dạng <TID, ij, ik, …, in> Các mục trong giao dịch được sắp xếp theo thứ tự từ điển Các giả thiết khác cũng tương
tự như trong [2] Chúng ta cũng giả thiết rằng các TID đơn điệu tăng
Định nghĩa: Một partition p ⊆ D của cơ sở dữ liệu là một tập con bất kỳ của các giao dịch chứa trong cơ sở dữ liệu D Hai partition bất kỳ là không giao nhau, tức là
pi ∩ pj = φ Chúng ta định nghĩa độ support cục bộ cho một tập mục như là một phần nhỏ của các giao dịch chứa tập mục đó trong một partition Chúng ta định nghĩa một tập mục ứng cử viên cục bộ là một tập mục được kiểm tra với độ support
bé nhất trong partition đã cho Một tập mục lớn cục bộ là một tập mục mà độ support cục bộ trong partition ít nhất là bằng với ngưỡng support Một tập mục lớn cục bộ chưa chắc đã là một tập mục lớn thực sự trong nghĩa của toàn bộ cơ sở dữ liệu Tương tự, chúng ta cũng định nghĩa độ support toàn cục, tập mục lớn toàn cục,
Trang 32tập mục ứng cử viên lớn toàn cục Mục đích của chúng ta là tìm ra được toàn bộ các tập mục lớn toàn cục
Chúng ta sử dụng ký pháp như nêu trong bảng 2.1 Những tập mục đơn lẻ được biểu diễn bởi các ký tự thông thường và tập các tập mục được biểu diễn dưới dạng chữ
hoa Chúng ta sẽ sử dụng ký pháp c[1].c[2]…c[k] để biểu diễn một k-itemset c chứa
các mục c[1],c[2],…, c[k]
* Giải thuật:
Giải thuật Partition được chỉ ra trong hình 2.8 Trong phần khởi tạo, cơ sở dữ liệu D được chia thành n partition Pha 1 của giải thuật thực hiện trong n bước lặp Trong bước lặp thứ i, chỉ có partition piđược xem xét Hàm gen_large_itemset sử dụng pi
như tham số đầu vào, và tạo ra các tập mục lớn cục bộ, Li
1, Li
2, …, Li
l như các giá trị đầu ra Trong bước trộn lẫn, các tập mục lớn cục bộ có cùng độ dài từ toàn bộ n partition được kết hợp với nhau để tạo ra tập mục ứng cử viên toàn cục Trong pha
2, giải thuật sẽ thiết lập một bộ đếm cho mỗi tập mục ứng cử viên toàn cục, và tính toán độ support cho mỗi ứng cử viên này và sản sinh ra được các tập mục lớn toàn cục Giải thuật quét toàn bộ cơ sở dữ liệu được thực hiện 1 lần trong pha 1 và 1 lần trong pha 2
Trang 33Hình 2.8: Giải thuật Partition
CP
LP
CG
L
, , 2 , 1
Trang 34Bước lược bỏ giới hạn việc mở rộng (k-1)-itemset Ví dụ, nếu LP
3 được tìm ra là {{1 2 3}, {1 2 4}, {1 3 4}, {1 3 5}, {2 3 4}}, bước khởi tạo các ứng cử viên sẽ tạo
ra các tập mục {1 2 3 4}, và {1 3 4 5} Tuy nhiên, tập mục {1 3 4 5} bị lược bỏ bởi
vì {1 4 5} không nằm trong LP
3 Kỹ thuật này cũng tương tự như [2] ngoại trừ việc
toán ngay lập tức
Hình 2.9: Thủ tục gen_large_itemsets
Bộ đếm các tập mục ứng cử viên được sản sinh như sau Gắn liền với mỗi tập mục,
chúng ta định nghĩa một cấu trúc gọi tên là tidlist Một tidlist cho tập mục l chứa các
TID của toàn bộ các giao dịch chứa tập mục l với các partition đã cho TID trong tidlist được lưu trữ theo thứ tự được sắp xếp Rõ ràng rằng, số lượng của TID trong tidlist của một tập mục trong partition chính là độ support cho tập mục đó trong partition
Thủ tục gen_large_itemset(p: partition của cơ sở dữ liệu)
1) LP1 = {1-itemset lớn với tidlist của chúng};
2) for ( k=2; LP
k !=φ; k++ ) do begin 3) forall tập mục l1 ⊂ LP
k-1 do begin 4) forall tập mục l2 ⊂ LP
k-1 do begin 5) if l1[1] = l2[1] /\ l1[2] = l2[2] /\ … /\ l1[k-2] = l2[k-2]
/\ l1[k-1] < l2[k-1] then
6) c = l1[1].l1[2]…l1[k-1].l2[k-1];
7) if c không b ị lược bỏ then
8) c.tidlist = l1.tidlist ∩l2.tidlist;
9) if |c.tidlist| / |p| ≥ minsup then
Trang 35Bước khởi tạo, tidlist cho 1-itemset được sinh ra bằng việc đọc trực tiếp các partition Tidlist cho một k-itemset ứng cử viên được sinh ra thông qua quá trình kết hợp các tidlist của 2 (k-1)-itemset, trong đó 2 tập mục này là được sử dụng để tạo ra k-itemset ứng cử viên Ví dụ, trong trường hợp trên, tidlist cho tập mục ứng cử viên {1 2 3 4} được sinh ra bằng việc kết hợp tidlist của tập mục {1 2 3} và {1 2 4}
1.5.2.2 Quá trình t ạo ra tập mục lớn
Tập ứng cử viên toàn cục được sinh ra khi kết hợp toàn bộ các tập mục lớn cục bộ
từ toàn bộ các partition Trong pha 2 của giải thuật, các tập mục lớn toàn cục được xác định từ tập ứng cử viên toàn cục Pha này cũng thực hiện n bước lặp(số lượng các partition) Bước khởi tạo, một bộ đếm được thiết lập cho mỗi tập mục ứng cử viên và giá trị ban đầu được gán là 0 Tiếp theo, với mỗi partition, sẽ sinh ra tidlist cho toàn bộ 1-itemset Độ support cho một tập mục ứng cử viên trong các partition
đó được tính từ giao giữa các tidlist của toàn bộ 1-itemset của tập mục đó Bộ đếm tích lũy sẽ cho ta biết được độ support toàn cục của các tập mục Thủ tục
gen_final_counts được chỉ ra trong hình 2.10
Hình 2.10: Thủ tục gen_final_counts
1.5.2.3 S ản sinh ra các luật
Khi các tập mục lớn và độ support của nó đã được xác định, các luật sẽ được sinh ra đơn giản bằng cách như sau:
Nếu l là một tập mục lớn, thì mọi tập con a của l, ta có thể tính được tỷ lệ
support(l)/support(a) Nếu tỷ lệ này lớn hơn hoặc bằng ngưỡng tin cậy, luật a ⇒
(l-1) forall 1-itemset do
2) sản sinh tidlist;
3) for( k=2; CGk !=φ; k++ ) do begin
4) forall k-itemset c ∈ CGk do begin
5) templist = c[1].tidlist /\ c[2].tidlist /\ /\ c[k].tidlist;
6) c.count = c.count + |templist|
7) end
8) end
Trang 36VI K ết luận
Trong chương I, chúng ta đã nắm được một cách tổng quan về KDD KDD thực sự đóng
một vai trò rất quan trọng trong các lĩnh vực, và trong các ứng dụng tin học Ngoài ra chúng ta cũng giới thiệu một cách tổng quát về luật liên kết, một mảng nghiên cứu trong các phương pháp tìm kiếm dữ liệu đã được trình bày ở trên Chúng ta cũng đã giới thiệu
về luật liên kết nhị phân trong các cơ sở dữ liệu giao dịch và một số giải thuật hiệu quả trong bài toán tìm kiếm luật liên kết Tuy nhiên, trong nhiều nghiên cứu, người ta có thể sẽ chú trọng nhiều hơn tới thuộc tính này mà có thể bỏ qua thuộc tính kia, chứ không đơn
giản là việc xử lý các mục tương tự nhau, người ta không coi các mục có vai trò đồng đẳng
với nhau Chương tiếp theo sẽ đề cập tới giải pháp để xử lý tình huống này
Trang 37Ch ương II Tìm kiếm luật liên kết với các mục có trọng số
I Gi ới thiệu về trọng số
Trong phần này, chúng ta sẽ làm quen với một khái niệm mới, đó là trọng số
Dựa trên những định nghĩa trên, chúng ta định nghĩa trọng số và luật liên kết có trọng số
Định nghĩa 1 Trọng số của một mục, w, với 0 ≤ w ≤ 1, xác định tầm quan trọng
mục đó 0 thể hiện sự kém quan trọng nhất, 1 chỉ ra sự quan trọng nhất
Chúng ta gán giá trị nằm trong khoảng từ 0 đến 1 cho bất kỳ kiểu tập mục nào, có thể là kiểu nhị phân, kiểu mờ, hoặc các kiểu khác của luật liên kết Ví dụ nếu trọng
số của một tập mục X là 0,95, giá trị này có ý nghĩa là tập mục này là quan trọng trong tập các giao dịch D Trọng số là 0,1 chỉ ra tầm quan trọng thấp hơn
Hướng phát triển của phần giới thiệu về trọng số như sau:
thuộc vào số lượng tập mục trong cơ sở dữ liệu, bởi vì các mục sẽ được xem
vị hay không là phụ thuộc vào cơ sở dữ liệu và cách diễn giải của con người hơn là hoàn toàn phụ thuộc vào cơ sở dữ liệu Trọng số có thể đại diện cho tri thức của mục
dữ liệu quan hệ về một nhóm người tồn tại 2 thuộc tính là “thu nhập” và
“chiều cao” Trong một ứng dụng cụ thể nào đó, người dùng có thể quan tâm tới các luật chứa “thu nhập” hơn là các luật chứa “chiều cao” Ví dụ luật
support lớn hơn nhiều so với luật thứ nhất Do vậy, trọng số có thể được người dùng sử dụng một cách linh hoạt để chỉ ra tầm quan trọng của thuộc tính và nhờ đó có thể có nhiều luật thú vị hơn
Trang 38• Trong môi trường kinh doanh, các nhà phát triển thị trường luôn muốn tìm ra các luật gắn liền với một nền tảng tri thức nào đó Ví dụ nếu một sản phẩm đang trong thời kỳ khuyến mãi cho khách hàng, hoặc một sản phẩm đang thu nhiều lợi nhuận thì các nhà phát triển thị trường luôn muốn có được các luật liên quan tới những sản phẩm này
nhau sẽ sản sinh ra các luật khác nhau
Vì những lý do như trên mà chúng ta có khái niệm về trọng số
II Tìm ki ếm luật liên kết nhị phân có trọng số
Trong phần này, chúng ta sẽ giới thiệu luật liên kết có trọng số Trong trường hợp này, giải thuật Apriori và hàm Apriori Gen không được ứng dụng ở đây Ngoài ra, chúng ta sẽ giới thiệu tiếp tục 2 bài toán khác nhau trong phần các luật liên kết sơ cấp, các luật liên kết nhị phân, và đề xuất 2 giải thuật làm giải pháp
2.2.1 Gi ới thiệu về luật liên kết nhị phân có trọng số
Máy tính lưu trữ một số lượng lớn các giao dịch bán lẻ trong hệ thống kinh doanh Điều này rất hữu ích cho các nhà phát triển thị trường để lấy được các thông tin từ
cơ sở dữ liệu lớn Những thông tin này có thể giúp cho các nhà phát triển thị trường lập ra các chiến lược marketing và đưa ra những quyết định
Vì số lượng thông tin bán lẻ rất lớn, do vậy đây là một khó khăn trong việc tìm kiếm hiệu quả thông tin đáng quan tâm Có rất nhiều dạng thông tin loại này Tuy
nhiên, toàn bộ những giải thuật ở trên đều xử lý các mục như là các mục đồng đều
nhau Ví dụ với một luật liên kết nhị phân như sau:
Luật trên chỉ ra rằng có một xác suất rất lớn khách hàng mua bánh mỳ và mua thịt nguội, và khách hàng mua thịt nguội khi đã mua bánh mỳ Luật liên kết nhị phân chỉ mang thông tin về số lượng các tập mục
số, có xem xét tới độ support, để tìm kiếm các luật nhị phân Với bài toán này,
được thông tin về số lượng của các mục
Trang 39Định nghĩa 3: Độ support có trọng số của một luật liên kết nhị phân có trọng số X
⇒ Y là điều chỉnh tỉ số của độ support, có nghĩa là:
với các trọng số của mục {i1, i2, , in} là tương ứng {w1, w2, …, wn}
X’⊂ X thì wsupport(X’,Y) < wsupport(X,Y) hay không
Để tìm ra các luật mong muốn, cần phải xác định 2 ngưỡng, độ support có trọng số nhỏ nhất(wminsup) và độ tin cậy nhỏ nhất(minconf)
Định nghĩa 4: Một tập mục X được gọi là một tập mục lớn có trọng số nếu độ
support có trọng số của tập mục X lớn hơn hoặc bằng ngưỡng support có trọng số, tức là:
wsupport(X) ≥ wminsup
Định nghĩa 5: Một luật liên kết nhị phân có trọng số X ⇒ Y được gọi là một luật
cậy và (X ∪Y) là một tập mục lớn có trọng số
Ví dụ 1:
Giả sử trong một cửa hàng bán lẻ, một cơ sở dữ liệu được hiển thị như trong bảng
lẻ Thông tin bao gồm cả số mã vạch của mục, tên của từng loại mục, lợi nhuận của mục, trọng số đã cho của mục v.v…
Trang 40(0,3 + 0,9) x 5/7 = 0,86 > 0,4
Lý luận tương tự, chúng ta sẽ có {4,5} và {2,4,5} sẽ là những tập mục lớn có trọng
số
2.2.3 Hướng phát triển dựa trên trọng số và số lượng
Vấn đề đặt ra là chúng ta muốn cân bằng giữa 2 thông số, đó là trọng số và độ support đã được đề cập trong chương I Việc tính toán của độ support mới, đó là tích giữa trọng số và độ support của một tập mục, được áp dụng
Có những giải pháp khác nhau để giải quyết vấn đề xung đột giữa độ support và trọng số, nhưng chúng ta sử dụng tích giữa chúng vì:
• Giả sử chúng ta phân biệt rõ giữa độ support và trọng số Chúng ta sẽ chỉ tìm những tập mục nào có đủ lớn cả độ support và trọng số Tuy nhiên, như vậy có thể sẽ bỏ qua một số tri thức đáng quan tâm Ví dụ, có một vài khách hàng mua máy in nhưng máy in đang trong thời kỳ khuyến mại Nhà phân tích thị trường