1. Trang chủ
  2. » Luận Văn - Báo Cáo

Một số vấn đề về tìm kiếm luật kết hợp trong cơ sở dữ liệu

92 24 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 92
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

BỘ 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 2

Lờ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 3

Mụ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 4

3.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 5

Mở đầ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 6

Nộ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 8

sử 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 9

1 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 10

description 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 11

mộ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 12

Hì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 13

Biể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 14

Nhữ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 15

sở 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 16

trọ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 17

Vớ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 19

Hì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 22

Trong 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 23

sử 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 24

là 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 25

bướ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 26

Hà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 27

Hì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 28

1.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 29

Hì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 30

Gọ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 31

cho 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 32

tậ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 33

Hình 2.8: Giải thuật Partition

CP

LP

CG

L

, , 2 , 1

Trang 34

Bướ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 35

Bướ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 36

VI 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 37

Ch ươ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

Ngày đăng: 12/02/2021, 11:19

🧩 Sản phẩm bạn có thể quan tâm

w