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

Nghiên cứu một số thuật toán tìm luật kết hợp trong khai phá dữ liệu và ứng dụng

100 52 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 100
Dung lượng 1,37 MB

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

Nội dung

Với mục tiêu như vậy, nội dung của luận văn được chia thành 4 chương , cụ thể như sau: • Chương 1: Sơ lược các phương pháp tiếp cận trong khai phá dữ liệu • Chương 2: Các thuật toán kha

Trang 1

HOÀNG MINH GIANG

NGHIÊN CỨU MỘT SỐ THUẬT TOÁN TÌM LUẬT KẾT HỢP TRONG KHAI PHÁ DỮ LIỆU VÀ

NGƯỜI HƯỚNG DẪN KHOA HỌC:

GS.TSKH BÙI CÔNG CƯỜNG

Hà Nội, 2005

Trang 2

Tác giả xin bày tỏ lòng biết ơn chân thành đối với TSKH Bùi Công Cường (Viện Toán học) về sự tận tình hướng dẫn thực hiện luận văn này

Xin chân thành cảm ơn các thày giáo khoa Toán ứng dụng, trường Đại học Bách khoa Hà nội cùng các dồng nghiệp về những giúp đỡ quý báu trong quá trình chuẩn bị và hoàn thành luận văn

Hà Nội, tháng 5 năm 2005

Hoàng Minh Giang

Trang 3

MỤC LỤC

LỜI CẢM ƠN 2

Chương 1 Sơ lược các phương pháp tiếp cận trong khai phá dữ liệu 6

1.1 Mục tiêu của khai phá dữ liệu 6

1.2 Các bước chính trong việc khai phá dữ liệu 8

1.3 Các kỹ thuật khai phá dữ liệu 9

1.3.1 Phương pháp xây dựng cây quyết định 10

1.3.2 Mô hình mạng Nơron nhân tạo 14

1.3.3 Phân vùng dữ liệu (Cluster Analysis) 17

1.3.4 Khai phá dữ liệu bằng phương pháp Bayes 25

1.3.5 Những phương pháp khác 28

Chương 2 Các thuật toán khai phá luật kết hợp 29

2.1 Mở đầu 29

2.2 Khai phá luật kết hợp 31

2.2.1 Một vài khái niệm 31

Bài toán 1 33

Bài toán 2 33

2.2.2 Cắt ngang không gian tìm kiếm 34

2.2.3 Xác định giá của một tập danh mục 37

2.3 Một số giải thuật 38

2.3.1 Hệ thống hoá 38

2.3.2 BFS và đếm số lần xuất hiện 38

2.3.3 BFS và giao cắt TidList 39

2.3.4 DFS và đếm số lần xuất hiện 40

2.3.5 DFS và giao cắt TidList 40

2.3.6 Giải thuật Apriori 41

2.3.7 Giải thuật Partition-based Apriori 45

2.3.8 Giải thuật FP-growth 45

Trang 4

2.3.9 Giải thuật Eclat 56

Chương 3 Cài đặt mềm khai phá luật kết hợp 60

3.1 Mô tả bài toán và thiết kế phần mềm 60

3.1.1 Môi trường phát triển 61

3.1.2 Kiến trúc của ứng dụng 62

3.2 Cài đặt các thuật toán khai phá luật kết hợp 65

3.2.1 Giải thuật Apriori 65

3.2.2 Giải thuật Eclat 69

3.2.3 Sinh luật từ tập các tập thường xuyên 72

3.3 Giao diện và hướng dẫn sử dụng 75

3.3.1 Giao diện chính của chương trình 75

3.3.2 Giao diện hiển thị danh mục các item 76

3.3.3 Giao diện hiển thị các tập thường xuyên 77

3.3.4 Giao diện lấy dữ liệu 78

3.3.5 Kết quả thử nghiệm 79

3.4 Mã nguồn một số modul chính 82

3.4.1 Các bảng 82

3.4.2 Giải thuật Apriori 83

3.4.3 Giải thuật Eclat 86

3.4.4 Giải thuật sinh luật quan hệ 89

Chương 4 Kết luận 92

4.1 Vai trò của khai phá dữ liệu và luật kết hợp trong thực tiễn 92

4.2 Những nghiên cứu tiếp theo 94

TÀI LIỆU THAM KHẢO 98

Trang 5

MỞ ĐẦU

Ngày nay, nhất là từ những năm 1990 – 2000 trên thế giới đã xuất hiện rất nhiều các kho dữ liệu lớn và do vậy khai phá dữ liệu là sự phát triển tất yếu trong quá trình phát hiện các tri thức và thông tin (mang lại hữu ích nào đó) từ các cơ sở dữ liệu nói trên

Khai phá dữ liệu (data mining) được hiểu là quá trình tìm kiếm những thông tin, tri thức có ích, tiềm ẩn và mang tính dự đoán trong các cơ sở dữ liệu lớn Dữ liệu như nêu ở đây tồn tại rất đa dạng và dưới nhiều hình thức, chẳng hạn dữ liệu văn bản, các bản ghi trong cơ sở dữ liệu quan hệ, dữ liệu ảnh, dữ liệu âm thanh Và với mỗi kiểu dữ liệu ấy lại đòi hỏi kỹ thuật xử lý phù hợp để có thể lấy ra được các thông tin có giá trị

Có rất nhiều phương pháp tiếp cận trong khai phá dữ liệu, nhưng trong khuôn khổ của luận văn này chỉ liệt kê một vài phương pháp và sau đó nêu tổng quan phương pháp khai phá dữ liệu bằng các luật kết hợp (Association rules) Nhiệm vụ chính của luận văn là tìm hiểu một số thuật toán khai phá luật kết hợp đồng thời cài đặt phần mềm khai phá luật dựa trên các thuật toán này với cơ sở dữ liệu ORACLE Với mục tiêu như vậy, nội dung của luận văn được chia thành 4 chương , cụ thể như sau:

• Chương 1: Sơ lược các phương pháp tiếp cận trong khai phá dữ liệu

• Chương 2: Các thuật toán khai phá luật kết hợp

• Chương 3: Cài đặt phần mềm khai phá luật kết hợp

Trang 6

Chương 1 Sơ lược các phương pháp tiếp cận trong

khai phá dữ liệu

Chương 1 đề cập đến các nội dung chính sau đây

▪ Các mục tiêu chính của khai phá dữ liệu

▪ Các bước chính trong việc khai phá dữ liệu

▪ Các kỹ thuật khai phá dữ liệu:

✓ Phương pháp xây dựng cây quyết định

✓ Mô hình mạng Nơron nhân tạo

✓ Phân vùng dữ liệu

✓ Khai phá dữ liệu bằng phương pháp Bayes

✓ Những phương pháp khác

1.1 Mục tiêu của khai phá dữ liệu

Đồng thời với việc sử dụng máy tính phổ biến hiện nay thì một lượng khổng lồ thông tin và dữ liệu được trao đổi và lưu trữ từng ngày Bất kỳ một doanh nghiệp, một tổ chức nào cũng đều có hệ thống máy tính để thu thập, lưu trữ và xử lý dữ liệu Một khi dữ liệu càng nhiều thì việc quản lý càng khó khăn, việc xử lý cũng thêm phức tạp và việc phân tích dữ liệu càng mất nhiều thời gian hơn, tốn kém hơn Bối cảnh hiện nay là nhu cầu hiểu được những thông tin trong khối lượng dữ liệu đồ sộ đã trở thành tất yếu đối và phổ biến với mọi lĩnh vực như: thương mại, kinh doanh, công nghệ, khoa học, chính trị…

Khai phá dữ liệu (data mining) được định nghĩa là quá trình tìm kiếm những thông tin, tri thức có ích, tiềm ẩn và mang tính dự đoán hoặc mô tả trong các cơ sở dữ liệu lớn Người ta còn dùng thuật ngữ khám phá tri thức trong cơ sở dữ liệu (Knowledge Discovery in Database- KDD) như là cách gọi khác của khai phá dữ liệu

Trang 7

Khai phá dữ liệu có hai mục tiêu chính là dự đoán (prediction) và mô tả kết quả (description) Dự đoán liên quan đến việc xây dựng mô hình bằng cách sử dụng mốt

số trường (field) hay các biến (variable) trong các tập dữ liệu (data set) để đưa ra các các giá trị của các biến khác Còn mô tả thì trái lại, là tập trung vào tìm cách đưa ra các mẫu, các biểu thức, công thức để biểu diễn dữ liệu theo cách mà con người có thể dễ dàng tiếp nhận được, hiểu được

Các mục tiêu của các hoạt động dự đoán (prediction) và mô tả (description) như nói

ở trên có thể đạt được bằng cách sử dụng các kỹ thuật khai phá dữ liệu cụ thể như:

• Phân lớp dữ liệu (classification): là một kỹ thuật tìm ra hàm học dự đoán

(predective learning function) để từ đó phân các phần tử của tập dữ liệu mẫu vào

các lớp đã định nghĩa sẵn và tiêu biểu cho cách này là phương pháp xây dựng

cây quyết định

• Hồi quy (regression): là một kỹ thuật dự đoán bằng cách nội suy hoặc ngoại

suy giá trị của biến trong tương lai trên cơ sở các giá trị đã thu thập được trong

quá khứ chẳng hạn như: mô hình mạng Nơron nhân tạo

• Phân vùng dữ liệu (clustering): một kỹ thuật dự đoán phổ biến bằng cách

phân chia dữ liệu thành các loại (categories) hoặc các vùng Điểm khác biệt giữa phân vùng dữ liệu và phân lớp dữ liệu là các lớp trong phân lớp dữ liệu là đã được định nghĩa trước, biết trước và đã có tên gọi Trong khi đó thì trong kỹ thuật phân vùng dữ liệu, các loại và các vùng có thể là chưa biết trước, chưa có

tên gọi Tiêu biểu cho cách này là Giải thuật K-means

• Mô hình hoá các phụ thuộc (dependency modeling): là một kỹ thuật dự

đoán bằng cách tìm ra các phụ thuộc quan trọng giữa các biến hoặc các giá trị trong các tập dữ liệu Trong cách tiếp cận này thì các vấn đề sau được nghiên cứu (riêng vấn đề giải thuật tìm các luật kết hợp sẽ được trình bày trong chương 2):

Khai phá dữ liệu bằng phương pháp Bayes

Giải thuật tìm các luật quan hệ

Trang 8

Nói một cách dễ hiểu hơn, khai phá dữ liệu giống như trò chơi xếp chữ hay ghép hình (puzzle): mỗi một miếng ghép thì không phức tạp, nhưng khi tổ hợp các miếng ghép lại thì lại trở nên rất rắc rối và phức tạp

1.2 Các bước chính trong việc khai phá dữ liệu

Khai phá dữ liệu là một quá trình phức tạp, nhưng có thể chia thành các bước chính sau đây:

Hình 1.1 Các bước chính trong khai phá dữ liệu

• Bước 1: phát biểu bài toán và đưa ra các giả thiết

Ở bước này cần xác định và khoanh vùng phạm vi các biến, xác định các biến độc lập và biến phụ thuộc Ngoài ra có thể sẽ có rất nhiều ràng buộc và giả thiết được đưa ra Để làm điều đó phải có sự kết hợp giữa hiểu biết lĩnh vực đang nghiên cứu

cụ thể (application domain) và các mô hình khai phá dữ liệu

Phát biểu bài toán (State problem)

Thu thập dữ liệu (Collecting Data)

Tiền xử lý dữ liệu (preprocessing)

Sử dụng và đánh giá mô

hình

Thông dịch và biểu diễn các

kết quả

Trang 9

• Bước 2: thu thập dữ liệu

Bước này sẽ xác định cách tạo ra hay lấy dữ liệu về Điều đáng lưu ý là dữ liệu thu thập được và dữ liệu dùng để kiểm tra mô hình phải là từ một nguồn mà ra (để đảm bảo là cùng một hàm phân bố dữ liệu), nếu không, sự thành công của hệ thống là rất thấp

• Bước 3: tiền xử lý dữ liệu

Dữ liệu thu thập được từ bước 2 thường là từ kho dữ liệu, cửa hàng dữ liệu (data warehouse, data mart), từ các hệ cơ sở dữ liệu với các định dạng khác nhau…thậm chí có thể mâu thuẫn nhau, do đó việc tiền xử lý dữ liệu cũng rất quan trọng và thường trải qua 2 quá trình con sau:

Quá trình lọc (outlier detection) là loại bỏ những dữ liệu không đảm bảo ràng buộc (inconsistent) hoặc không quan tâm, hoặc là những thông tin nhiễu…

Quá trình mã hoá (encoding), tinh chỉnh (scaling) và lựa chọn ra các dữ liệu mẫu,

điển hình (selecting feature) Chẳng hạn, một biến với domain trong khoảng từ [0,1]

và một biến với domain trong khoảng [-100,100] sẽ có các trọng số khác nhau, ảnh hưởng khác nhau đối với các thuật toán, các phương pháp được lựa chọn…

• Bước 4: đánh giá mô hình

Việc lựa chọn và cài đặt các kỹ thuật khai phá dữ liệu là nhiệm vụ chính ở bước này

• Bước 5: thông dịch và biểu diễn các kết quả

Các kết quả mà máy tính đưa ra phải dễ hiểu và có lý đối với con người (tức là máy phải lý giải được tại sao lại đưa ra các kết quả đó)

1.3 Các kỹ thuật khai phá dữ liệu

Trong phần 1.1 đã nêu mục tiêu của khai phá dữ liệu, ở đây sẽ trình bày một số phương pháp tiếp cận chính trong việc khai phá dữ liệu:

• Phương pháp xây dựng cây quyết định (dùng trong phân lớp dữ liệu –

classification)

• Mô hình mạng Nơron nhân tạo (dùng trong phương pháp hồi quy)

Trang 10

• Phương pháp phân vùng dữ liệu

• Mô hình xác suất Bayes (dùng trong mô hình hoá các phụ thuộc -

dependency modeling)

• Giải thuật tìm các luật quan hệ (dùng trong mô hình hoá các phụ thuộc -

dependency modeling)

1.3.1 Phương pháp xây dựng cây quyết định

Cây quyết định là một công cụ rất phổ biến trong việc ứng dụng để phân lớp dữ liệu (classification) Thông thường các phương pháp xây dựng cây quyết định là luyện

có giám sát (supervised learning ) dựa trên một tập mẫu vào-ra (input-output) Các phương pháp này thường tiến hành tìm kiếm theo chiến thuật trên-xuống (top-

down) để lấy ra lời giải trong một phần không gian tìm kiếm Một cây quyết định bao gồm nhiều nút (nơi kiểm tra các thuộc tính) Các nhánh xuất phát từ nút này tương ứng với mọi đầu ra có thể khi sau khi kiểm tra Một cây quyết định đơn giản

để phân loại mẫu với hai thuộc tính vào X và Y được mô tả như dưới đây Mọi mẫu thoả mãn X >1 và Y= B sẽ thuộc lớp 2 Còn mẫu nào có X  1 thuộc lớp 1 (không phụ thuộc vào giá trị của Y) Các mẫu tại một nút được phân hoạch theo các nhánh xuất phát từ nút này

Hình 1.2 Ví dụ cây quyết định đơn giản với 2 thuộc tính

Trang 11

Và như vậy mỗi nút con (của mỗi nhánh đó) là một tập con tương ứng với phân hoạch này Ở đây xin nêu lại một giải thuật rất nổi tiếng được đưa ra ban đầu bởi J.Ross Quinlan ( Đại học Tổng hợp Sedney - năm 1975) mang tên ID3 với phiên

bản C4.5 (xem [14])

Giải thuật ID3 xuất phát từ nút gốc của cây và toàn bộ mẫu Một thuộc tính được chọn để tiến hành phân hoạch toàn bộ mẫu Với mỗi giá trị của thuộc tính, một nhánh cây được xây dựng và mỗi tập con của tập mẫu mà có cùng giá trị của thuộc tính này sẽ được chuyển đến nút tương ứng vừa được tạo nên cuối mỗi nhánh này Thuật toán tiếp tục được thực hiện trên mọi nút con cho đến khi các mẫu tại một nút thuộc về một lớp Mỗi con đường (từ gốc) đi đến lá của cây quyết định thể hiện một quy tắc phân lớp Vấn đề quan trọng của thuật toán là chọn thuộc tính nào tại mỗi nút Việc chọn thuộc tính trong ID3 sẽ dựa trên việc cực tiểu độ đo Entropy thông tin được áp cho mẫu ở mỗi nút

Trong ID3 việc chọn thuộc tính nào là dựa trên giả thiết là độ phức tạp của cây quyết định liên quan mạnh đến lượng thông tin mang lại bởi giá trị của thuộc tính đã cho Trên cơ sở đó người ta thấy rằng việc chọn thuộc tính A tại một nút nào đó phải làm cực đại hàm Gain(a,S) được định nghĩa như sau:

) (

|

|

|

| )

( )

, (

a values v

v

S

S S

Entropy S

• Kí hiệu |S| = lực lượng của tập S

• Entropy(S) là một hàm lượng giá thông tin Giả sử rằng đối với S ta chỉ quan tâm đến 2 khả năng: khả năng A hoặc khả năng B (ví dụ: dữ liệu trong S là thuộc lớp L hoặc không thuộc lớp L ) tức là p(A) + p(B) = 1 (p(A) xác suất xảy

ra A) Vậy thì:

Trang 12

Entropy(S) =  p(A).log2(p(A))p(B).log2(p(B)) với giả thiết rằng: 0.log

Tổng quát, nếu như đối với S có m - khả năng xảy ra thì khi đó:

1

2( )log

trong đó pi là tỉ lệ trường hợp xảy ra khả năng thứ

return {cây với 1 nút đơn có giá trị = Failure};

(2) IF S chứa các bản ghi với các thuộc tính mục tiêu Ci có cùng một giá trị

như nhau A THEN

return {cây với 1 nút đơn có giá trị = giá trị A};

Trang 13

(3) IF R = {rỗng} THEN

return {cây với 1 nút đơn có giá trị = giá trị xuất hiện với tần số lớn

nhất trong các giá trị quan sát ở các thuộc tính C của các bản ghi của S}; // Trong trường hợp này, có thể dữ liệu sẽ không được phân lớp // một cách đúng đắn

(4) Lấy ra thuộc tính A trong R sao cho:

)}

, ( {

max )

,

Gain

R a

(5) Giả sử tiếp: {aj | j = 1,2, ,m} là các giá trị của thuộc tính A;

(6) Với mỗi j=1,2, ,m, {Sj là tập các bản ghi trong S sao cho thuộc tính A của bản ghi đó có giá trị = aj };

(7) return {cây với nút A và các cung (nhánh) được được đánh dấu a1, ,am

Với giải thuật ID3 trình bày ở trên, có thể mở rộng các nhánh cây quyết định đến một mức thích hợp để phân lớp tập dữ liệu mẫu S Tuy nhiên, khi tập mẫu S có

Trang 14

nhiễu hoặc số lượng phần tử của S dùng để luyện mẫu là quá bé thì giải thuật ID3 sẽ không còn tốt cho lắm

Vấn đề tiếp theo của giải thuật ID3 đó là chúng ta phải rời rạc hoá miền giá trị của các thuộc tính

Ngoài ra, không phải lúc nào giá trị của các thuộc tính cũng được xác định rõ

Chẳng hạn, trong việc thẩm định một dự án thì các thông số kinh tế - kỹ thuật của các dự án không phải lúc nào cũng thu thập được đầy đủ tính đến thời điểm đang thẩm định dự án đó Và khi đó việc tính giá trị của hàm Entropy(S) sẽ gặp phải khó khăn

Vấn đề thiếu giá trị của thuộc tính có thể được giải quyết bằng cách gán các giá trị

bị thiếu đó bằng giá trị xuất hiện với tần số nhiều nhất hoặc có thể coi giá trị thiếu

đó bằng NULL và gán một xác suất cho việc giá trị NULL đó xảy ra

Tuy nhiên, mặc dù có các nhược điểm trên đây, dùng cây quyết định có các lợi thế sau:

• Các luật (quy tắc) được tạo ra khi phân lớp dễ hiểu đối với người sử dụng

• Công việc tính toán không nhiều

• Chỉ rõ thuộc tính nào là quan trọng nhất đối với việc phân lớp

1.3.2 Mô hình mạng Nơron nhân tạo

Mạng nơron nhân tạo được coi là một mô hình tính toán mô phỏng theo bộ óc con người Mô hình tính toán này cũng được luyện dựa trên những hiểu biết đã có và được gọi là khả năng "học" của mô hình Với một bộ đầu vào và đầu ra cho trước (được coi là mẫu để luyện) thì bài toán là phải xác định các bộ trọng số trong mạng như thế nào để đạt được sai số giữa đầu ra thực tế và đầu ra mong muốn là nhỏ nhất Một nơron nhân tạo có thể coi là mô hình đơn giản của nơron sinh học có 4 phần: đầu vào, bộ tổng, hàm truyền, đầu ra

Trang 15

Hình 1.3 Mô hình một nơron nhân tạo

Mỗi đầu vào xi được gắn với một hệ số nhân w i đượcgọi là trọng số (weight)

Ngưỡng của nơron được ký hiệu là b (còn gọi là hệ số bias) Bộ tổng tính tổng các đầu vào của nơron với các trọng số và thêm hệ số ngưỡng để tạo ra giá trị n (net

input)

n = w 11 x 1 + w 12 x 2 +…+ w 1m x m (1.3)

Hay dưới dạng tích vô hướng của vectơ W nhân với vectơ x

Hàm truyền (transfer function) nhận tín hiệu n (net input) và tạo ra tín hiệu đầu ra a

(và lại coi là đầu vào của nơron trong lớp kế tiếp):

Hàm truyền f có thể là tuyến tính hoặc phi tuyến

Mạng nơron nhân tạo bao gồm nhiều nơron liên kết với nhau theo các lớp Đầu tiên

là các giá trị đưa vào cho lớp thứ nhất (input ), lớp cuối cùng là lớp ra (output

layer), các lớp còn lại gọi là lớp ẩn (hiden layer) Tuỳ vào mối liên kết giữa các nơron trong mạng mà chúng được phân loại về mặt kiến trúc như: mạng truyền thẳng (feedforward), mạng hồi quy (recurrent)…

Trang 16

Chẳng hạn ta xét một mạng nơron lan truyền ngược (Back propagation) đơn giản 2 lớp:

Hình 1.4 Mạng nơron lan truyền ngược (Back propagation) đơn giản 2 lớp

Như vậy mỗi lớp của mạng có ma trận trọng số W , vectơ ngưỡng (bias) b, vectơ input n và vectơ đầu ra a Để chỉ lớp khác nhau thường dùng chỉ số phụ: W1 thể

hiện trọng số của lớp 1 Như hình vẽ trên, mạng có m đầu vào, s1 nơron ở lớp 1 và s2 nơron ở lớp 2

Cho trước tập mẫu gồm vectơ đầu vào x (x=(x1, x2, , xm) và vectơ đầu ra t (t=(t1,

t2, ts2) được gọi là đầu ra mong muốn của mạng) Khi đầu vào x được lan truyền qua mạng thì kết quả sẽ thu được đầu ra thực là a = ( a1, a2, …, as2) Mục tiêu của quá trình luyện mạng nơron là hiệu chỉnh các trọng số và hệ số ngưỡng trên toàn

mạng sao cho sai lệch giữa vectơ t và a là nhỏ nhất Nghĩa là làm cực tiểu hàm:

b2 s2

Trang 17

Mạng nơron là một cách tiếp cận tính toán liên quan đến việc phát triển các cấu trúc toán học với khả năng học máy Mạng nơron là kết quả của việc mô phỏng hoạt động của hệ thần kinh con người

Mạng Nơron có thể coi là một phương pháp toán học dùng để xấp xỉ các hàm phi

tuyến trong thực tế một cách hữu hiệu Mạng nơron có các ưu điểm chính sau trong

việc khai phá dữ liệu:

• Khả năng mô hình hoá dữ liệu phức tạp và nhiều chiều một cách linh hoạt và

dễ dàng

• Có khả năng thích nghi dần, thay đổi dần theo hướng tích cực khi dữ liệu đầu vào thay đổi nhưng lại không cần phải thiết kế lại hay viết thêm mã chương trình một khi mạng đã được trải qua quá trình luyện mẫu tốt

Tuy nhiên việc sử dụng mô hình mạng Nơron gặp phải các trở ngại chính sau đây:

• Độ chính xác của kết quả phụ thuộc rất nhiều vào cách thiết kế mạng Nơron

mà để thiết kế tốt mạng Nơron thì không phải ai cũng có thể làm tốt được

1.3.3 Phân vùng dữ liệu (Cluster Analysis)

Phân vùng dữ liệu thực chất là việc tự động phân lớp dữ liệu thành các vùng khác nhau bằng việc sử dụng độ đo nào đấy Các phần tử của một vùng do vậy được coi

là "tương tự" như nhau và nếu không phải như vậy thì chúng thuộc các vùng khác nhau

Đầu vào của bài toán phân vùng dữ liệu là một cặp có thứ tự (X,s) hoặc (X,d) Trong đó X là tập dữ liệu mẫu cần được phân vùng còn s hoặc d tương ứng là các hàm đo độ tương tự hoặc độ sai khác (còn gọi là hàm khoảng cách)

Đầu ra của bài toán là một phân hoạch Λ = {G1, G2, …, GN} trong đó Gk, k = 1, …,

N là các tập con của X sao cho

(1.7)

Trang 18

Khi đó các tập con G1, G2, …, GN of Λ được gọi là các vùng (cluster) Mỗi vùng có thể được mô tả bởi một vài đặc trưng Số lượng các vùng cũng như đặc trưng của nó từng bước được xác định thông qua quá trình phân vùng

Thông thường các mô tả hình thức về các vùng được xác định như sau:

Biểu thị một vùng bằng các điểm trong không gian n chiều (tập mẫu) bằng các tâm điểm hay tập các điểm biên

Biểu thị một vùng bằng đồ hoạ dạng cây phân vùng (clustering tree)

Biểu thị các vùng bằng biểu thức lô gíc trên các thuộc tính của tập mẫu

Vấn đề chọn kỹ thuật phân vùng thế nào nhiều khi phải căn cứ vào bài toán cụ thể chứ không thể hy vọng có một kỹ thuật “vạn năng” phù hợp cho mọi bài toán

Chính người giải quyết bài toán phải hiểu được kiểu loại dữ liệu và từ đó mới chọn tiêu chuẩn phân vùng và cách tiếp cận bài toán tốt nhất Tuy vậy nhiều thuật toán phân vùng dựa trên hai tiếp cận phổ biến sau đây:

Phân vùng có cấu trúc (cây phân vùng - hierarchical clustering)

Phân vùng bộ phận theo lặp sai số bình phương nhỏ nhất.(iterative square-error partitional clustering)

Để đề cập đến độ đo “tương tự” (similarity measure), người ta thường giả thiết rằng tập mẫu X có n phần tử và mỗi phần tử có m đặc tính Do vậy nếu phần tử xi X thì

xi cũng có thể được biểu diên bởi:

x i = (x i1 , x i2 , …, x im ) (1.8)

Thành phần xij chỉ nói lên đặc trưng thứ j của phần tử xi Nhưng ta cũng thấy xij, j=1, 2, , m sẽ thuộc một domain Pj nào đó Chẳng hạn Pj có thể là nhị phân (Pj

={0,1}), số nguyên (Pj  Z) hoặc số thực (Pj  R), thậm chí Pj chỉ là một tập ký hiệu, ví dụ:

Pj ={white, black, red, blue, green}

Trang 19

Như vậy các đặc trưng lượng hoá được có thể là các giá trị liên tục (Pj  R), rời rạc (Pj  Z) hoặc được xác định theo khoảng Còn các đặc trưng chất lượng (không lượng hoá được) có thể là tên không sắp xếp được hoặc sắp xếp được

Có thể thấy được hàm “tương tự” s phải có tính chất s(x,x’) là nhỏ nếu x và x’ là tương tự và s(x,x’) lớn nếu chúng không tương tự và ngoài ra chúng phải có tính đối xứng:

Để chuẩn hoá thường giả thiết rằng:

Người ta cũng thường dùng hàm “không tương tự” (disimilarity measure) hay còn gọi là hàm khoảng cách.ký hiệu là d và giả thiết d có các tính chất của một metric:

Hàm khoảng cách thông dụng nhất là khoảng cách Euclidean trong không gian m chiều

Ngoài ra cũng hay dùng các hàm khoảng cách khác:

(1.9)

(1.10)

(1.11) (1.12) (1.13)

(1.14)

(1.15)

(1.16)

Trang 20

Như đã nói ở trên các thuật toán phân vùng thường được chia làm hai loại: phân vùng có cấu trúc cây và phân vùng bộ phận theo lặp sai số bình phương nhỏ nhất Thuật toán phân vùng theo cấu trúc cây lại được chia làm hai nhóm: thuật toán phân chia (divisible)và thuật toán tích tụ (agglomerative) Thuật toán phân chia bắt đầu

từ tập mẫu vào X rồi chia thành các tập con nhỏ hơn Quá trình tiếp tục lại chia các tập con này thành tập con nhỏ hơn trên cơ sở thoạt đầu thì chia “thô” rồi tiếp tục làm cho “mịn” hơn Thuật toán tích tụ thì bắt đầu từ việc coi mỗi phần tử của tập mẫu X là một vùng sau đó thực hiện các bước trộn các phần tử này để được các tập con lớn hơn Ở đây khoảng cách giữa hai vùng lại có hai cách tính hoặc là theo giá trị nhỏ nhất (single-link) và hoặc là theo giá trị lớn nhất (complete-link) của khoảng cách mọi cặp phần tử mà mỗi phần tử thuộc một vùng

Hình 1.5 Minh hoạ cách tính khoảng cách giữa hai vùng

Các bước của thuật toán tích tụ có thể được mô tả như sau:

• Đặt mỗi phần tử của tập mẫu vào một vùng Tiến hành xây dựng danh mục khoảng cách giữa các vùng bằng cách tính khoảng cách của mọi cặp, đồng thời sắp xếp danh muc này theo thứ tự tăng dần

• Duỵệt qua danh mục khoảng cách được sắp xếp và với mỗi giá trị dk của danh mục tiến hành vẽ biểu đồ liên kết các cặp phần tử mà khoảng cách giữa chúng

Trang 21

nhỏ hơn dk vào một vùng mới Một khi mọi phần tử của mẫu đã được nối vào biểu đồ thì dừng, ngược lại tiếp tục lặp bước này

• Kết quả của thuật toán là cây các biểu đồ lồng nhau và với mỗi khoảng cách cho trước có thể cắt biểu đồ này thành các vùng được xác định bởi các phần tử liên kết với nhau trong các biểu đồ con

Để minh hoạ ta xét một ví dụ gồm 5 phần tử {x1, x2, x3, x4, x5} mà mỗi phần tử có hai toạ độ (được coi là thuộc tính để phân lớp):

Ta có thể biểu diễn các điểm này trong hệ toạ độ hai chiều như sau:

Hình 1.6 Minh hoạ 5 điểm trên hệ toạ độ hai chiều

Khoảng cách (Euclidian) giữa các điểm này như sau:

Các bước của thuật toán tiến hành sẽ như sau (sử dụng khoảng cách giữa hai vùng

là single-link): trước hết mỗi phần tử được coi là một vùng, sau đó với giá trị

khoảng cách là 1.5 thì {x2} và{x3} được gộp lại thành một vùng mới {x2, x3} Sau

đó với khoảng cách 2.0 thì {x4} và {x5} được gộp thành vùng {x4, x5} Đồng thời

Trang 22

khi đó khoảng cách giữa vùng {x1} và {x2,x3} cũng bằng 2.0 nên chúng lại được gộp thành vùng {x1,x2,x3} Như vậy các vùng {x4,x5} và {x1,x2,x3} đều được tạo thành bởi cùng ngưỡng 2.0 Cuối cùng hai vùng {x4, x5} và {x1,x2,x3} được trộn ở khoảng cách (single-link) là 3.5

Hình 1.7 Cây quyết định của ví dụ đã cho

Như vậy ta có thể thấy với ngưỡng 2.2 thì có hai vùng được phân chia là {x1,x2,x3}

và {x4,x5}

Thuật toán phân vùng bộ phận cho phép thu được các vùng chứ không phải cây phân vùng như đã nêu ở trên Phương pháp này thường dùng cho tập dữ liệu lớn vì khi đó nếu xây dựng cây phân vùng thì sẽ rất phức tạp Kỹ thuật dùng phân vùng trong thuật toán này thường là tối ưu hàm tiêu chuẩn (criterion function) được xác định cục bộ hoặc toàn cục Nhiều thuật toán phân vùng cục bộ là dựa trên một số cố định các vùng định trước, tiến hành làm sai số bình phương nhỏ nhất

Giả sử tập mẫu gồm N phần tử cần được phân thành K vùng {C1, C2, …, Ck.} trong đó mỗi Ck có nk phần tử và mỗi phần tử cũng chỉ thuộc một vùng duy nhất Như vậy

∑ nk = N, với k = 1, …, K Vectơ trung bình Mk của vùng Ck được xác định như sau (cũng được gọi là trọng tâm của vùng - centroid):

(1.17)

Trang 23

Trong đó xik là phần tử thứ i thuộc vùng Ck Sai số bình phương trung bình của lớp Ck là tổng bình phương các khoảng cách Euclidean từ mọi điểm trong vùng tới trongj tâm của nó:

(Đại lượng này cũng được gọi là phương sai trong của vùng)

Sai số bình phương trung bình cho toàn bộ tập mẫu cần được phân thành K vùng là tổng các sai số từng vùng:

Như vậy bài toán là xác định phân hoạch gồm K vùng sao cho sai số bình phương trung bình toàn mẫu là nhỏ nhất

Thuật toán K-mean là thuật toán đơn giản và phổ biến nhất thuộc loại này, bao gồm các bước như sau:

• Chọn một phân hoạch ban đầu gồm K vùng ngẫu nhiên, và tính trọng tâm của mỗi vùng

• Tạo một phân hoạch mới bằng cách bằng cách gán mỗi phần tử vào một vùng nếu khoảng cách đến ttâm vùng đó là nhỏ nhất

• Tính trọng tâm của các vùng mới tạo được đồng thời tính sai số bình phương trung bình cho toàn mẫu

• Lặp lại hai bước trên cho đến khi đạt được giá trị sai số bình phương trung bình toàn mẫu là nhỏ nhất

(1.18)

(1.19)

Trang 24

Ta minh hoạ thuật toán này với ví dụ 5 phần tử như đã nêu ở trên Giả thiết rằng số vùng cần phân chia là 2 Thoạt đầu ta chọn C1={x1, x2, x4} và C2={x3, x5} và tính tâm của 2 vùng này là:

Các phương sai trong lần lượt là:

Và như vậy sai số toàn bộ là:

Bây giờ sẽ phân bố lại mọi phần tử dựa trên khoảng cách của chúng tới hai trọng tâm là M1 và M2:

Như vậy các vùng mới C1={x1,x2,x3} và C2 ={x4,x5} và các trọng tâm mới được tính là:

Các phương sai trong cũng như tổng sai số là:

Trang 25

Như đã thấy sau một bước lặp sai số tổng cộng đã giảm (từ 27.48 xuống 6.17) Thuật tốn cũng dừng ở bước này vì khơng thể làm sai số tổng nhỏ hơn được nữa Người ta cũng đã kết luận về thuật tốn K-means như sau:

• Độ phức tạp về thời gian tính là O(nkl), trong đĩ n - là số phần tử của tập mẫu, k

- là số vùng cần phân chia, cịn l- là số bước lặp Nhìn chung khi thực hiện thuật tốn người ta thường xác định trước các đại lượng k và l Cĩ thể thấy thời gian tính của thuật tốn là tuyến tính với số lượng phần tử của tập mẫu

• Độ phức tạp về khơng gian là O(k + n)

1.3.4 Khai phá dữ liệu bằng phương pháp Bayes

Trong trường hợp khơng đủ thơng tin về mơ hình hố hệ thống thì phương pháp Bayes cung cấp một cách mang tính nguyên lý để tích hợp thơng tin bên ngồi vào quá trình xử lý dữ liệu Quá trình này bắt đầu với một phân bố xác suất đã biết trên một tập dữ liệu đã được phân tích Phân bố này được gọi là phân bố tiên lượng (prior distribution) Tập dữ liệu mới sẽ cập nhật phân bố này trở thành phân bố hậu

kỳ (posterior distribution) Cơng cụ đơn giản cho việc cập nhật này chính là lý thuyết Bayes Lý thuyết Bayes cĩ vai trị như là phương pháp tiếp cận thống kê trong bài tốn phân lớp theo suy luận quy nạp Ở đây sẽ nhắc lại khái niệm đơn giản của lý thuyết này và việc sử dụng trong quá trình phân loại Bayes đơn giản (Nạve Bayesian Classification Process)

Giả sử X là một phần tử mà chưa biết thuộc lớp nào (trong bài tốn phân lớp) và giả

sử H là một giả thiết: X thuộc lớp C nào đĩ Ta muốn xác định xác suất P(H/X) - tức là xác suất giả thiết H đúng với phần tử X Như vậy P(H/X) – là xác suất hậu kỳ thể hiện lịng tin vào giả thiết H sau khi đã cho phần tử X Mặt khác P(H) chính là xác suất tiên lượng của giả thiết H cho bất kỳ phần tử nào Xác suất hậu kỳ P(H/X) được dựa trên xác suất tiên lượng P(H) và các đại lượng khác thơng qua cơng thức Bayes:

Trang 26

Giả sử có một tập m phần tử S = {S1, S2, …, Sm} (tập dữ liệu dùng để luyện) trong

đó mỗi Si được đặc trưng bởi vectơ n-chiều (x1, x2, …, xn) Các giá trị xi tương ứng với các thuộc tính A1, A2, An Ngoài ra có k lớp C1, C2, Ck mà mỗi phần tử sẽ thuộc một trong các lớp này Cho trước phần tử bổ sung X, khi đó có thể dự đoán X

sẽ thuộc lớp Ci nào mà có xác suất điều kiện cao nhất P(Ci/X), i=1, 2, k

Theo công thức Bayes:

Vì rằng P(X) -là như nhau trong mọi lớp nên tìm cần tìm cực đại P(X/Ci) · P(Ci)

Ta tính xác suât stiên lượng của lớp Ci là

P(Ci) = số các phần tử của tập dữ liệu luyện thuộc lớp Ci/m

(m là tổng số phần tử của tập dữ liệu dùng để luyện)

Vì rằng việc tính P(X/Ci) có thể phức tạp đặc biệt trong các bộ dữ liệu lớn, nên ta đưa vào giả thiết ngây thơ là tính độc lập của các thuộc tính A1, A2,…An Do vậy :

Trong đó xt (t=1,n) là các giá trị của thuộc tính của phần tử X Các xác suất P(xt/Ci)

có thể được ước lượng từ tập dữ liệu luyện

Một ví dụ đơn giản minh hoạ quá trình phân lớp này quá trình tính toán đơn giản trên một tập dữ liệu luyện đủ lớn Cho trước tập dữ liệu luyện mẫu có 7 phần tử với

4 chiều (4 thuộc tính), cần phải dự đoán việc phân lớp của phần tử mới X = {1, 2, 2, lớp = ?} Với mỗi phần tử thì A1, A2, A3 các thuộc tính vào và C là lớp cần xác định

(1.20)

(1.21)

(1.22)

Trang 27

Bảng 1.1 Bảng mẫu dữ liệu 7 phần tử và 4 chiều

Phần tử Thuộc tính 1

A1

Thuộc tính 1 A2

Thuộc tính 1 A3

Trang 28

Cuối cùng bằng cách nhân các xác suất điều kiện này với các xác suất tiên lượng tương ứng ta thu được các giá trị tỷ lệ với P(Ci/X) và tìm được cực đại:

Như vậy dự đoán là X thuộc lớp C2

1.3.5 Những phương pháp khác

Còn rất nhiều phương pháp tiếp cận khác, chẳng hạn ứng dụng lý thuyết mờ trong việc xây dựng các biểu thức lô gíc mờ và suy diễn mờ và hỗ trợ việc ra quyết định Phương pháp ứng dụng lý thuyết mờ thường được ứng dụng trong tình huống là các tập dữ liệu mẫu không phải lúc nào cũng được “đo đếm” chính xác và khi bản chất của dữ liệu đầu vào bị “mờ” thì người ta thường sẽ ứng dụng lý thuyết này để hỗ trợ quá trình xử lý dữ liệu và ra quyết định

Ngoài ra một phương pháp tiếp cận khác là phương pháp “nhìn nhận trực giác” (visualisation method) mà tư tưởng chính của nó là dùng các dạng hình ảnh, sơ đồ,

đồ thị… để biểu diễn dữ liệu đầu vào một cách trực giác và xây dựng các phương pháp xử lý dữ liệu trên cở sở những “đối tượng nhìn thấy này”

Trang 29

Chương 2 Các thuật toán khai phá luật kết hợp

Chương 2 có các nội dung sau đây

 Mở đầu

 Khai phá luật kết hợp

 Các giải thuật tìm kiếm luật kết hợp:

✓ Giải thuật Apriori

Trang 30

Một trong những cách trình bày phổ biến về luật kết hợp là bắt đầu từ việc phân tích “giỏ mua hàng” Một giỏ mua hàng gồm một tập hợp các danh mục hàng hoá

mà người mua trả trong một lần giao dịch Người bán hàng tập hợp những giao dịch này trong hoạt động kinh doanh liên tục và tạo được cơ sở dữ liệu giao dịch

(transaction database) Người ta cần tìm kiếm những danh mục hay tập các danh mục mà nó đồng thời xuất hiện trong nhiều giao dịch Nhà kinh doanh có thể sử dụng hiểu biết (mang tính luật) này để sắp xếp lại vị trí bày các danh mục hàng hoá trong siêu thị hoặc tổ chức các catalog trong các trang WEB về thương mại điện tử Một tập danh mục chứa danh mục i được goi là tập i-danh mục Tỷ lệ phần trăm các giao dịch (trong toàn bộ cơ sở dữ liệu) chứa một tập danh mục dược gọi là giá (support) của tập danh mục ấy Đối với các tập danh mục đáng quan tâm thì giá của

nó phải lớn hơn một ngưỡng nào đó và khi đó chúng được gọi là tập các danh mục thường xuyên

Việc tìm kiếm những tập danh mục thường xuyên không phải là bài toán tầm

thường bởi vì: thứ nhất là tập các giao dịch của khách hàng là rất lớn và việc nạp chúng vào bộ nhớ máy tính để xử lý không phải dễ vấn đề thứ hai số những tập danh mục có thể là tập danh mục thường xuyên là hàm mũ đối với số các danh mục cho dù trên thực tế số tập danh mục thường xuyên có thể nhỏ hơn nhiều

Vì vậy người ta mong muốn tìm thấy những thuật toán mà độ phức tạp của nó vừa phải (có thể trên tuyến tính nhưng dưới hàm mũ so với số các danh mục), những thuật toán này phải kiểm tra các tập thường xuyên với số lần ít nhất có thể được

Trong một cơ sở dữ liệu giao dịch, người ta muốn tìm ra những kết hợp quan trọng giữa các danh mục cụ thể là sự hiện diện của những danh mục này sẽ bao hàm (kéo theo) sự hiện diện của các danh mục khác trong một giao dịch Công việc đó gọi là khai phá luật kết hợp

Như vậy khi khai phá luật kết hợp thì có hai vấn đề phải giải quyết

Trang 31

Thứ nhất là độ phức tạp của thuật toán Số các luật kết hợp tỷ lệ hàm mũ với số các danh mục May mắn những thuật toán ngày nay có khả năng tỉa bớt không gian tìm kiếm mênh mông dựa trên ngưỡng tối thiểu dành cho độ đo chất lượng của luật Vấn đề thứ hai, các luật quan tâm phải được chọn lọc từ tập các luật được sinh ra Vấn đề này có thể tốn kém vì nói chung các luật được sinh ra thực sự lớn trong khi

đó tỷ lệ phần trăm của các luật hữu ích quả thật nhỏ bé

• Giao dịch và cơ sở dữ liệu giao dịch

Ta gọi T là một giao dịch nếu T là một tập danh mục con của tập L ( T L) Khi

đó tập D chứa các giao dịch được gọi là một cơ sở dữ liệu giao dịch hay đơn giản là tập các giao dịch Mỗi giao dịch được đánh dấu bởi một định danh và được gọi là định danh của giao dịch và ký hiệu là Tid Bảng dưới đây cho một ví dụ đơn giản về

cơ sở dữ liệu giao dịch

Bảng 2.1 Ví dụ đơn giản về cơ sở dữ liệu giao dịch

Trang 32

Giả sử X là một tập danh mục (X  L) Nếu |X| = k thì ta còn gọi X là tập k-danh mục Giao dịch T được gọi là chứa X nếu X  T

• Giá của một tập danh mục

Cho X là một tập danh mục, ta gọi giá của tập danh mục X, ký hiệu supp(X) là tỷ lệ giữa các giao dịch chứa X trên tổng số giao dịch có trong tập giao dịch D

Như vậy: Supp(X) =  T  D : X  T } / D  (2.1)

• Tập danh mục thường xuyên

Giả sử X là một tập danh mục (X  L), X được gọi là một tập thường xuyên xuất hiện (hay đơn giản gọi là thường xuyên) nếu như supp(X) > minSupp, với

minSupp là một hằng số chọn trước nào đó

Nhận xét: Nếu X là một tập thường xuyên xuất hiện thì mọi tập con của X cũng là

một tập thường xuyên xuất hiện

• Giá của luật kết hợp

Giá của luật kết hợp X  Y là tỷ lệ các giao dịch chứa X và Y trên tổng số các giao dịch trong D Như vậy: Supp(X  Y) = Supp(X  Y) (2.3)

• Độ tin cậy của luật kết hợp

Trang 33

Độ tin cậy của luật kết hợp X  Y , ký hiệu là Conf (X  Y), là tỷ lệ giữa các giao dịch chứa X và Y trên các giao dịch chứa X Như vậy:

Conf (X  Y) = Supp(X  Y)/Supp(X ) (2.4) Như vậy, độ tin cậy Conf (X  Y) chính là xác suất có điều kiện P (Y T | X  T)

Ý tưởng của luật kết hợp xuất phát từ việc phân tích dữ liệu giỏ mua hàng khi có những luật như: “Một khách hàng đã mua sản phẩm x1 và x2 cũng sẽ mua sản phẩm

y với xác suất c%” được tìm thấy

• Hai bài toán trong khai phá luật kết hợp

Ký hiệu Lk là tập tất cả các tập danh mục thường xuyên có lực lượng bằng k (|Lk| = k) Ngoài ra ký hiệu Ck là tập tất cả các tập thường xuyên có lực lượng bằng k Rõ ràng rằng Ck Lk

Với cách định nghĩa như thế khai phá các luật kết hợp sẽ được chia thành hai bài toán:

Trang 34

2.2.2 Cắt ngang không gian tìm kiếm

Với các định nghĩa và cách đặt bài toán như trên, rõ ràng rằng phương án duyệt vét cạn tất cả các tập con của L để tìm ra những tập thường xuyên có giá lớn hơn hoặc bằng ngưỡng minSupp là không khả thi vì độ phức tạp là hàm mũ

Ví dụ: Với tập con L = {1,2,3,4}, chúng ta có không gian tìm kiếm như sau:

Hình 2.1 không gian tìm kiếm với L = {1,2,3,4},

• Bổ đề

Cho L là tập danh mục, ta gọi không gian tìm kiếm là tập hợp tất cả các điểm trên mặt phẳng được sắp thành từng hàng sao cho: mỗi điểm này ứng với một tập con của L và mỗi hàng ứng với tất cả các tập con của L có cùng số phần tử, hàng đầu tiên ứng với các tập có một phần tử, hàng thứ hai ứng với các tập hai phần tử… Với không gian tìm kiếm như trên, tồn tại một đường biên ứng với mỗi một giá trị minSupp, nửa trên chính là các tập thường xuyên, và nửa dưới là các tập không thường xuyên (tức là, ứng với mỗi một giá trị cụ thể của minSupp thì tập các tập thường xuyên là tập đóng)

Trang 35

Tính chất đóng này chính là nguyên lý chung để lược bỏ không gian tìm kiếm các tập thường xuyên trong việc khai phá các luật quan hệ Một khi đường biên đã được tìm thấy thì không cần phải tìm kiếm tiếp nữa

Chứng minh:

Xét một ánh xạ từ các phần tử của L lên các số tự nhiên {1,2,…,|L|} Khi đó ta có phần tử li < lj nếu như i<j Với quan hệ thứ tự nêu trên, với mỗi tập con X của L, kí hiệu X.itemn là danh mục thứ n của X

Tập Pn gồm các phần tử mà mỗi phần tử gồm n-danh mục được sắp của tập danh mục X (n  |X|) được xác định bởi

Pn = (Z | Z ={X.itemm | 1 <= m <= n}) Khi đó ta gọi Pn là phần đầu gồm n phần tử của X

Với mỗi tập con Pn của L, ta định nghĩa lớp E(Pn) như sau:

E(Pn) = {X | X là tập con của L, |X| = |Pn| + 1 và Pn là phần đầu gồm n phần tử của X}

Các lớp E(Pn) thế này tạo thành các nút của một cây (Mỗi nút khi đó tương ứng với các điểm trên cùng một hàng của không gian tìm kiếm mà nhận Pn là phần đầu gồm

n phần tử) Hai nút của cây được nối với nhau bằng một cạnh nếu tất cả các tập danh mục của lớp E (Pn) đựợc hình thành bằng phép hợp hai tập danh mục của lớp cha mẹ E’ =E(Pn-1) như hình dưới đây

Trong ví dụ của hình dưới đây, L = {1,2,3,4}, ta có:

Trang 36

Hình 2.2 Các lớp E (P n ) đựợc hình thành bằng phép hợp hai tập danh mục

của lớp cha mẹ

Để ý rằng: nếu Z  E = E(Pn) thì tồn tại X và Y  E’ =E(Pn-1) sao cho: Z = X Y

Do vậy Supp(Z) = Supp (XY)  min {Supp(X), Supp(Y)}

Từ đó ta thấy nếu lớp cha mẹ E’=E(Pn-1) mà không chứa ít nhất hai tập thường xuyên thì lớp E=E(Pn) cũng không chứa tập thường xuyên nào Khi ấy giữa hai lớp E’ và E sẽ tồn tại đường biên vì kể từ lớp E trở xuống trong không gian tìm kiếm thì những tập đó không còn là tập thường xuyên

Như vậy trong quá trình tìm kiếm, nếu thấy một lớp E’ mà không có it nhất hai tập danh mục thường xuyên thì thuật toán dừng lại, không cần tìm kiếm tiếp nữa

Trong các phương pháp để tìm ra được các tập E’ thuộc đường biên như thế, có thể

sử dụng chiến lược duyệt theo chiều sâu trong không gin tìm kiếm trước (DFS – Depth-First Search) hay chiến lược duyệt theo chiều rộng trước (BFS – Breadth – First- Search) Đặc điểm của BFS là xác định giá của mọi (n-1)-tập danh mục trước

Trang 37

khi xác định giá của các n-tập danh mục Ngược lại DFS sẽ căn cứ vào cấu trúc cây trong không gian tìm kiếm để dò tìm theo chiều sâu một cách đệ quy trước

2.2.3 Xác định giá của một tập danh mục

Trong quá trình duyệt qua cây các tập danh mục ta cần xác định giá của các tập có thể là thường xuyên (như định nghĩa là Ck) Một trong những phương pháp tiếp cận chung là tính số lần xuất hiện của tập danh mục X trong cơ sở dữ liệu Với mục đích này, một bộ đếm được cài đặt và khởi tạo bằng 0 cho mỗi tập danh mục đang xét, tiếp đó, quét các giao dịch T của cơ sở dữ liệu D và khi có một giao dịch nào đó chứa tập danh mục đang xét bộ đếm của tập danh mục đó được tăng thêm 1 Nhìn chung việc tạo ra các tập con và kiểm tra xem đó có phải là thường xuyên hay không thường được tích hợp với nhau và được thực hiên trong quá trình duyệt không gian tìm kiếm

Tuy nhiên, còn một phương pháp nữa để tính giá cho các tập con X của L là sử dụng phép giao (intersect) của các tập hợp Với mỗi một giao dịch, gọi Tid là định danh của giao dịch đó Đối với một danh mục đơn, gọi TidList là tập các danh định tương ứng với các giao dịch chứa danh mụcnày Tương tự như vậy, đối với tập danh mục X nào đó X.TidList là tập tất cả các danh định của các giao dịch chứa tập X Vậy thì ta có: nếu C = XY thì C.TidList = X.TidList Y.TidList

Danh sách các TidList được sắp xếp theo thứ tự tăng dần hoặc giảm dần để tiện lợi cho việc tìm kiếm Bằng cách dùng bộ đệm chứa các TidList của các tập danh mục đang xét như là kết quả trung gian thì có thể tăng tốc trong việc sinh ra các TidList cho các tập danh mục tiếp theo Cuối cùng giá của một tập danh mục C chính là C.TidList

Trang 38

Chiến lược xác định giá của một tập danh mục

Theo cách phân loại này phương pháp xác định giá có thể là dùng bộ đếm (counter) hay dùng giao của tập hợp (sử dụng TidList)

Với hai tiêu chí như vậy, chúng ta có sơ đồ 4 giải thuật sau:

Hình 2.3 Phân loại các giải thuật khai phá luật kết hợp

2.3.2 BFS và đếm số lần xuất hiện

Thuật toán thông dụng nhất thuộc loại này là Apriori, nó sử dụng thuộc tính đóng xuống phía dưới của giá khi duyệt trong không gian tìm kiếm để loại bỏ những tập danh mục chứa một tập con không phải là tập thường xuyên trước khi tính giá của nó.Điều tối ưu này có thể đạt được bởi BFS đảm bảo rằng giá của mọi tập con của

Trang 39

một tập đang xét là biết trước được Thuật toán Apriori đếm mọi tập có phần tử bằng n một cách đồng thời trong một lần quét cơ sở dữ liệu Phần quan trọng là kiểm tra các tập này có phải là thường xuyên hay không bằng cách sử dụng cấu trúc cây trong không gian tìm kiếm Các danh mục trong mỗi giao dịch được dùng để dịch chuyển xuống phía dưới của cây Mỗi khi thuật toán đạt đến một lá của cây (nút của cây), thuật toán sẽ tìm tất cả các tập có chung phần đầu được chứa trong giao dịch Sau đó các tập này được tìm trong các giao dịch đã được mã hoá và nếu tìm thấy, bộ đếm của nó tăng thêm 1

Apriori TID là một cải tiến của Apriori thông thường Thay cho việc dựa vào cơ sở

dữ liệu thô Apriori biểu thị mỗi giao dịch bằng tập danh mục đang xét mà được chứa trong giao dịch này Còn với AprioriHybird thì cả hai cách tiếp cận của Apriori thông thường và AprioriTID được tích hợp lại

DIC cũng là một cải biên của thuật toán Apriori Thuật toán này làm mềm việc tách biệt rõ nét giữa việc đếm và việc sinh ra các tập danh mục.Một khi có tập danh mục đạt được minSupp thì thậm chí tập này “không được nhìn thấy” trong các giao dịch, DIC sẽ khởi động một tập danh mục phụ dựa trên tập này bằng cách sử dụng cây-phần-đầu (prefix-tree) Ngược lại với việc sử dụng cây phân mảnh (hashtree), mỗi nút có thể là nút lá hoặc nút trung gian của cây -phần-đầu sẽ được gán cho một tập danh mục có thể là thường xuyên Khác với sử dụng cây phân mảnh ở đây mỗi khi đạt đến một nút thuật toán cho biết rằng các danh mục liên kết với nút này được chứa trong giao dịch hay không

2.3.3 BFS và giao cắt TidList

Thuật toán phân vùng là một thuật toán tương tự Apriori mà nó sử dụng giao cắt của tập hợp để xác định gía Như nói ở trên Apriori xác định giá giá của mọi (n-1)-tập danh mục trước khi tính giá của các n-tập danh mục.Vấn đề là thuật toán phân vùng muốn sử dụng TidList của các (n-1)-tập danh mục thường xuyên để tạo ra TidList của các n-tập danh mục Có thể thấy rằng kích thước của các kết quả trung gian tăng lên vượt quá bộ nhớ vật lý của máy tính Để khắc phục điều này thuật toán phân

Trang 40

vùng chia cơ sở dữ liệu thành một số mảnh (chunk) mà được xử lý một cách độc lập Kích thước của mỗi mảnh được chọn sao cho mọi giá trị trung gian của TidList

có thể được nạp vào trong bộ nhớ vật lý của máy tính Sau khi xác định các tập thường xuyên cho mỗi mảnh cơ sở dữ liệu sẽ có thêm mộ tlần quét cơ sở dữ liệu để đảm bảo rằng các tập anh mục thường xuyên địa phương cũng là tập thường xuyên toàn cục

2.3.4 DFS và đếm số lần xuất hiện

Việc đếm số lần xuất hiện cần được giả thiết rằng tập các danh mục có thể là thường xuyên có kích thước vừa phải Đối với một tập có thể là thường xuyên thì cần phải quét cơ sở dữ liệu một lần.Thuật toán Apriori dựa theo cách BFS sẽ quét cơ sở dữ liệu cho mỗi tập có thể là thường xuyên có số phần tử là n trong mỗi bước Khi sử dụng DFS các tập có thể là thường xuyên chỉ chứa các danh mục của mội nút trong cây Việc quét cơ sở dữ liệu cho mỗi nút sẽ tạo ra một lượng khổng lồ số lần quét Khi đó việc kết hợp giữa DFS và việc đếm số lần xuất hiện trở nên không thực tế Gần đây người ta đưa ra một cách tiếp cận mới gọi là FP-tăng trưởng Trong bước tiền xử lý FP-tăng trưởng sẽ dẫn đến một biểu diễn “mật độ cao” của các giao dịch, được gọilàcây FP Việc sinh ra cây FP được thực hiện bởi việc đếm số lần xuất hiẹn

và DFS Ngược lại với cách tiếp cận DFS trước đây FP-tăng trưởng không dò theo các nút trong cây mà”đi thẳng” xuống vùng nào đó mà của tập danh mục trong không gian tìm kiếm Trong bước tiếp theo của thuật toán FP-tăng trưởng sẽ sử dụng cây FP để tính giá của các tập có thể là thường xuyên

2.3.5 DFS và giao cắt TidList

Thuật toán Eclat thực hiện việc kết hợp DFS với giao cắt TidList Khi sử dụng DFS thì thuật toán giữ TidList trên các đường dẫn từ gốc xuống lớp đang được khảo sát trong bộ nhớ Do đó việc chia cơ sở dữ liệu như thuật toán phân vùng là không cần thiết Eclat sử dụng một tính tối ưu được gọi là “giao cắt nhanh” Một khi thực hiện giao hai TidList thì ta chỉ quan tâm đến kết quả nào mà đạt ngưỡng minSupp Nói cách khác, ta sẽ huỷ bỏ các phép giao cắt ngay nếu biết rằng nó không đạt ngưỡng

Ngày đăng: 22/01/2021, 12:56

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w