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

Bài tiểu luận môn Công nghệ tri thức MỘT SỐ THUẬT TOÁN KHAI THÁC

26 444 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 26
Dung lượng 913,32 KB

Nội dung

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN CHUYÊN ĐỀ CÔNG NGHỆ TRI THỨC VÀ ỨNG DỤNG BÀI THU HOẠCH MỘT SỐ THUẬT TOÁN KHAI THÁC TẬP PHỔ BIẾN VÀ LUẬT KẾT HỢP GIẢNG VIÊN HƯỚNG DẪN GS... Bài toán khai thá

Trang 1

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

CHUYÊN ĐỀ

CÔNG NGHỆ TRI THỨC VÀ ỨNG DỤNG

BÀI THU HOẠCH

MỘT SỐ THUẬT TOÁN KHAI THÁC TẬP PHỔ BIẾN VÀ LUẬT KẾT HỢP

GIẢNG VIÊN HƯỚNG DẪN

GS TSKH HOÀNG KIẾM

HỌC VIÊN THỰC HIỆN

LÊ CUNG TƯỞNG (CH1101152)

Hồ Chí Minh, 5/2012

Trang 2

Mục lục

Mục lục 1

1 Giới thiệu tổng quan 2

1.1 Khai thác dữ liệu 2

1.2 Một số khái niệm 2

1.2.1 Cơ sở dữ liệu giao dịch 2

1.2.2 Tập phổ biến 3

1.2.3 Luật kết hợp 3

1.2.4 Bài toán khai thác tập phổ biến và luật kết hợp 4

2 Các thuật toán tìm tập phổ biến 5

2.1 Thuật toán Apriori 5

2.1.1 Ý tưởng thuật toán 5

2.1.2 Thuật toán 5

2.1.3 Ví dụ minh họa 7

2.1.4 Hạn chế của thuật toán Apriori 8

2.2 Thuật toán FP-tree 8

2.2.1 Giới thiệu 8

2.2.2 Mô tả 9

2.2.3 Nhận xét 9

2.2.4 Thuật toán 10

2.2.5 Ví dụ minh họa 11

2.3 Thuật toán FP-growth 12

2.3.1 Giới thiệu 12

2.3.2 Thuật toán 13

2.3.3 Ví dụ minh họa 14

2.4 Thuật toán FP-growth* 14

2.4.1 Giới thiệu 14

2.4.2 Thuật toán 16

2.4.3 Ví dụ minh họa 17

2.4.4 Nhận xét 17

3 Các thuật toán khai thác luật kết hợp truyền thống 18

3.1 Sinh luật kết hợp dựa vào quan hệ cha con 18

3.1.1 Thuật toán sinh luật từ tập phổ biến 18

3.1.2 Minh họa 19

3.2 Sinh luật kết hợp dựa vào bảng băm 20

3.2.1 Thuật toán 21

3.2.2 Minh họa 21

4 Thực nghiệm 23

Kết luận 24

Tài liệu tham khảo 25

Trang 3

1 Giới thiệu tổng quan

1.1 Khai thác dữ liệu

Chúng ta đang sống trong thời đại bùng nổ thông tin Thông tin được lưu trữ với khối lượng khổng lồ Điều này đòi hỏi phải có những cơ sở lý thuyết trợ giúp cho con người trong việc rút trích ra các tri thức từ khối lượng dữ liệu này Lĩnh vực khai phá tri thức và khai thác dữ liệu được hình thành và phát triển nhằm đáp ứng nhu cầu này

Hiện nay, lĩnh vực khai thác dữ liệu có 3 bài toán chính được đề cập nhiều nhất, đó là: Khai thác luật kết hợp, phân lớp và gom nhóm dữ liệu Các bài toán này nhằm đáp ứng cho việc khai thác dữ liệu văn bản, khai thác dữ liệu không gian, thời gian, khai thác dữ liệu Web,

Khai thác luật phân lớp là tìm ra các qui luật để từ đó dự đoán nhãn của các mẫu chưa biết trước lớp Một số cách tiếp cận hiện nay như cây quyết định, ILA, phân lớp dựa vào luật kết hợp,

Gom nhóm là gom các đối tượng “tương tự” nhau về cùng một nhóm Một số phương pháp điển hình như phân hoạch, phân cấp, gom nhóm dựa trên mật độ,

Khai thác luật kết hợp là tìm ra các mối quan hệ giữa các item với nhau Vế phải của luật kết hợp có thể chứa một hay nhiều item Vì vậy, độ phức tạp của bài toán khai thác luật kết hợp lớn hơn nhiều so với bài toán khai thác luật phân lớp Đã

có khá nhiều thuật toán được phát triển nhằm làm tăng hiệu quả khai thác luật kết hợp như: Các thuật toán phát triển từ Apriori, các thuật toán phát triển từ FP-tree, các thuật toán phát triển từ IT-tree,

Có thể nói, cùng với sự phát triển mạnh mẽ của công nghệ thông tin và truyền thông thì ngành khai thác dữ liệu cũng đóng một vai trò không nhỏ trong việc khai thác và phân tích dữ liệu nhằm làm tăng tính hiệu quả cho người sử dụng chúng

1.2 Một số khái niệm

1.2.1 Cơ sở dữ liệu giao dịch

Cơ sở dữ liệu (CSDL) giao dịch 𝐷 gồm một bộ đôi {𝐼, 𝑇} trong đó 𝐼 ={𝑖1, 𝑖2, … , 𝑖𝑛} là tập tất cả các item và 𝑇 = {𝑡1, 𝑡2, … , 𝑡𝑛} là một tập các giao dịch Bài thu hoạch dùng một CSDL trong bảng 1.1 làm ví dụ xuyên suốt các phần

Trang 4

Bảng 1.1 Cơ sở dữ liệu mẫu

Độ phổ biến: Cho CSDL giao dịch 𝐷 và một itemset 𝑋 ⊆ 𝐼 Độ phổ biến của

𝑋 trong 𝐷, kí hiệu 𝜎(𝑋), là số giao dịch mà X xuất hiện trong D

1345, 𝜎(𝐴𝐷) = 2 vì AD chứa trong các giao dịch 45

Tập phổ biến: 𝑋 ⊆ 𝐼 được gọi là phổ biến nếu 𝜎(𝑋) ≥ 𝑚𝑖𝑛𝑆𝑢𝑝𝐶𝑜𝑢𝑛𝑡 (với minSupCount là giá trị do người dùng chỉ định)

𝜎(𝐴) = 4 ≥ 𝑚𝑖𝑛𝑆𝑢𝑝𝐶𝑜𝑢𝑛𝑡 nhưng AD không phải là tập phổ biến vì 𝜎(𝐴𝐷) =

Một số tính chất của luật kết hợp

Trang 5

- Nếu 𝑋 → 𝑌 là luật kết hợp truyền thống thì 𝑋 ∪ 𝐴 → 𝑌 \ 𝐴 cũng là luật kết hợp truyền thống ∀𝐴 ⊂ 𝑌

- Nếu 𝑋 → 𝑌 là luật kết hợp truyền thống thì 𝑋 → 𝑌 \ 𝐴 cũng là luật kết hợp truyền thống ∀𝐴 ⊂ 𝑌

- Nếu 𝑋 → 𝑌 không là luật kết hợp thì 𝑋 \ 𝐴 → 𝑌 ∪ 𝐴 cũng không là luật kết hợp ∀𝐴 ⊂ 𝑌

1.2.4 Bài toán khai thác tập phổ biến và luật kết hợp

Nhiệm vụ chính của khai thác luật kết hợp bao gồm 2 bước như sau: (1) tìm tất

cả các tập phổ biến (2) phát sinh các luật kết hợp tin cậy từ tập phổ biến

Bước 1 (tìm tập phổ biến): bước này đòi hỏi nhiều thao tác tính toán và xuất

nhập dữ liệu Xét bảng 1.1, trình bày một CSDL với 6 giao tác {1, 2, 3, 4, 5, 6} mang 5 danh mục {𝐴, 𝐶, 𝐷, 𝑇, 𝑊} khác nhau Bài toán đòi hỏi trình bày tất cả các tập phổ biến với độ hỗ trợ tối thiểu (𝑚𝑖𝑛𝑠𝑢𝑝) là 33% (2) Dễ dàng tìm được tập hợp các tập phổ biến như trong bảng sau với CDT, ACTW và ACDW là các tập phổ biến tối đại (chúng không là một tập con của bất kỳ tập phổ biến nào)

Độ tin cậy Các tập danh mục phổ biến

CDW, CTW, ACTW

ACDW

Bước 2 (phát sinh luật kết hợp): bước này là một bước đơn giản hơn Luật

kết hợp được được tạo ra từ tất cả các tập phổ biến X tìm thấy ở bước 1 thỏa mãn điều kiện 𝑝 ≥ 𝑚𝑖𝑛𝑐𝑜𝑛𝑓

Ví dụ, từ một tập phổ biến ACW có thể tạo 6 luật là: 𝐴 → 𝐶𝑊: 1.0; 𝐶 → 𝐴𝑊: 0.67; 𝑊 → 𝐴𝐶: 0.8; 𝐴𝐶 → 𝑊: 1.0; 𝐴𝑊 → 𝐶: 1.0 và 𝐶𝑊 → 𝐴: 0.8

Trang 6

2 Các thuật toán tìm tập phổ biến

2.1 Thuật toán Apriori

2.1.1 Ý tưởng thuật toán

Thuật toán khai thác các tập phổ biến bằng cách thực hiện nhiều lần duyệt CSDL Duyệt lần thứ nhất để tính độ phổ biến của các 1-itemset và xác định các item phổ biến từ chúng, nghĩa là độ phổ biến thỏa ngưỡng phổ biến tối thiểu Trong các lần duyệt sau, thuật toán sẽ kết hợp các itemset phổ biến đã tìm được trong lần duyệt trước để tìm các tập ứng viên Sau đó tính độ phổ biến thực sự của các tập ứng viên này nhằm xác định itemset nào trong các tập ứng viên là tập phổ biến thực sự Các itemset này trở thành các hạt giống cho lần duyệt tiếp theo Quá trình này thực hiện cho đến khi không còn một tập phổ biến mới nào nữa được sinh ra

Thuật toán Apriori sinh ra các tập ứng viên trong một lần duyệt bằng cách chỉ

sử dụng các tập phổ biến đã được khai thác trong lần duyệt trước mà không cần quan tâm đến các giao dịch trong cơ sở dữ liệu Các ứng viên k-itemset được sinh ra bằng cách kết hợp các tập phổ biến thuộc (k-1)-itemset Thuật toán Apriori tỉa ứng viên bằng cách loại bỏ các ứng viên có chứa tập con không phải là tập phổ biến

Qui ước: Giả sử các item trong mỗi giao dịch được lưu giữ theo thứ tự từ điển

𝐿𝑘 là tập các k-itemset phổ biến 𝐶𝑘 là tập các ứng viên có k-itemset Mỗi phần tử của

𝐿𝑘 và 𝐶𝑘 có 2 thành phần: itemset và độ phổ biến tương ứng

2.1.2 Thuật toán

Gồm 2 bước: bước kết hợp và bước tỉa các ứng viên

Bước kết hợp: Bước này nhằm tìm tập 𝐿𝑘 bằng việc kết hợp các tập phổ biến trong 𝐿𝑘−1 với nhau Kết quả là tập các ứng viên 𝐶𝑘 Hai tập phổ biến 𝑙1 và 𝑙2 thuộc

𝐿𝑘−1 sẽ được kết hợp với nhau nếu chúng thỏa đều kiện sau: (𝑙1[1] = 𝑙2[1]) ∧(𝑙1[2] = 𝑙2[2]) ∧ .∧ (𝑙1[𝑘 − 2] = 𝑙2[𝑘 − 2]) ∧ (𝑙1[𝑘 − 1] = 𝑙2[𝑘 − 1])

Kết quả sẽ là itemset: 𝑙1[1] 𝑙1[1] 𝑙1[𝑘 − 2] 𝑙1[𝑘 − 1] 𝑙2[𝑘 − 1]

Trang 7

Bước tỉa: Ta có 𝐶𝑘 là tập chứa 𝐿𝑘, nghĩa là thuật toán cần lọc các tập từ 𝐶𝑘 để tạo ra 𝐿𝑘 Bước này sẽ loại bỏ các itemset 𝑐 ∈ 𝐶𝑘 nếu 𝑐 tồn tại tập con (k-1)-itemset không có trong 𝐿𝑘−1

Đoạn mã giả sau đây trình bày thuật toán Apriori: 𝐿1 chứa các 1-itemset thỏa 𝑚𝑖𝑛𝑆𝑢𝑝𝐶𝑜𝑢𝑛𝑡 (dòng 1), từ dòng 2 đến dòng 6 là quá trình lặp đi lặp lại của việc sinh ứng viên và đếm độ phổ biến của các ứng viên bằng cách xét chúng với các giao dịch trong CSDL Việc sinh ứng viên (hàm Apriori-gen) sử dụng tính chất apriori để tỉa các ứng viên (dòng 14 – 15), việc sinh các ứng viên từ 𝑙1 và 𝑙2 phải thỏa mãn 𝑙1 và 𝑙2

có cùng tiền tố là (k-2)-itemset (dòng 12 – 13)

Đầu vào: Cơ sở dữ liệu giao dịch D và ngưỡng độ phổ biến minSupCount

Kết quả: FI chứa danh sách các tập phổ biến trong D thỏa minSupCount

13 c = l1 ∪ l2 //bước kết hợp l1 và l2 sinh ra ứng viên c

14 if Has_infrequent_subset(c, Lk-1 ) = False then

Trang 9

Ta có danh sách các tập phổ biến được trình bày trong bảng sau:

2.1.4 Hạn chế của thuật toán Apriori

Chi phí lớn cho việc phát sinh các tập ứng viên Ví dụ: Nếu có 104 item phổ biến thì thuật toán Apriori sẽ cần sinh ra hơn 107 các ứng viên 2-itemset

Lặp lại nhiều lần duyệt CSDL: Số lần duyệt CSDL của thuật toán Apriori bằng

độ dài của mẫu phổ biến dài nhất tìm được Thuật toán Apriori chỉ thích hợp cho các CSDL thưa (mật độ trùng lặp của các item trên các giao dịch ít), đối với các CSDL đặc (mật độ trùng lặp của các item trên các giao dịch nhiều) thì thuật toán thực hiện kém hiệu quả

2.2 Thuật toán FP-tree

2.2.1 Giới thiệu

Để khắc phục điểm yếu của các dựa trên thuật toán Apriori là phải duyệt cơ sở liệu nhiều lần và phải kiểm tra một lượng lớn các ứng viên dẫn đến tốc độ thực thi của thuật toán không hiệu quả, tác giả J Han và các đồng sự đã đề xuất ra cấu trúc FP-tree Vì thông qua cấu trúc FP-tree, một CSDL được nén lại và chỉ thông tin liên hệ với khai thác được giữ lại làm cho việc khai thác dữ liệu có hiệu quả hơn Bên cạnh

Trang 10

cấu trúc FP-tree, tác giả cũng giới thiệu kỹ thuật để duyệt FP-tree và cách xác định các tập phổ biến

Cấu trúc FP-tree có nhiều thuận lợi trong khai thác tập phổ biến Trước hết, FP-tree thường có một tỉ lệ nén cao trong khi biểu diễn tập CSDL bởi vì:

- Các danh mục không phổ biến được xác định trong lần duyệt CSDL đầu tiên

sẽ không được sử dụng trong cấu trúc cây

- Một tập hợp của các giao tác dùng chung tập con của các danh mục giống nhau có thể chia sẻ chung phần đầu đường dẫn từ gốc trong một FP-tree và tỉ lệ nén cao dẫn đến tính hiệu quả khi thao tác trực tiếp trên FP-tree

- Cấu trúc dữ liệu này cho phép thực hiện chiến lược tìm kiếm theo chiều sâu

và sử dụng mô hình chia để trị vì đây là những kỹ thuật khá hiệu quả

Quan trọng hơn cả, FP-tree chứa tất cả các thông tin cần thiết để khai thác tập phổ biến và tính hoàn thiện của nó có thể đảm bảo tính đúng đắn của thuật toán dựa trên FP-tree

2.2.2 Mô tả

Cấu trúc FP-tree là cấu trúc cây với một số đặc điểm sau:

- Cây có một nút cha đánh nhãn là “null” và những cây con nối với nút cha này là những thành phần chung của nhiều giao tác được nén lại với nhau trên các nhánh cây Ngoài ra còn có một bảng tiêu đề các danh mục đơn phổ biến

- Mỗi nút trong nhánh của cây có ba trường dữ liệu: mã danh mục, số đếm, con trỏ liên kết Mã danh mục tương ứng với danh mục mà nút này đại diện, số đếm là

số giao tác có chứa chung phần danh mục này và con trỏ liên kết dùng để liên kết 2 nút đại diện chung một mã danh mục ở hai nhánh cây khác nhau Giá trị của trường con trỏ liên kết có thể mang giá trị rỗng khi là nút cuối cùng trong chuỗi liên kết

- Mỗi phần tử trong bảng tiêu đề các danh mục đơn phổ biến gồm 2 trường:

mã danh mục và con trỏ liên kết đến đầu nút của chuỗi liên kết các nút cùng đại diện chung cho một danh mục

2.2.3 Nhận xét

Những lợi ích có được khi sử dụng cấu trúc FP-tree:

Trang 11

- Với cấu trúc dữ liệu FP-tree, chỉ cần quan tâm đến những danh mục thực sự

có tham gia tạo nên các tập danh mục phổ biến Vì vậy sẽ giúp giảm bớt những thao tác thừa đối với những danh mục chắc chắn không tham gia vào xây dựng các tập danh mục phổ biến Việc xác định những danh mục phổ biến này chỉ cần thông qua một lần duyệt toàn bộ CSDL

- Toàn bộ những thông tin của CSDL cần cho quá trình khai thác đều được lưu trữ trong cấu trúc cây với tỉ lệ nén cao Điều này giúp cho quá trình khai thác không phải duyệt đi duyệt lại trên toàn bộ CSDL lớn

- Những giao tác chứa chung các danh mục có thể được gộp chung tối đa với nhau bằng cách sắp xếp chúng theo thứ tự phổ biến và tích lũy vào trong một số đếm

- Thuận lợi cho quá trình duyệt theo chiều sâu và theo mô hình chia để trị trên cấu trúc FP-tree

2.2.4 Thuật toán

Duyệt toàn bộ CSDL và xác định thứ tự của các danh mục giảm dần theo độ phổ biến và được đưa vào trong 𝑓_𝑙𝑖𝑠𝑡 Dựa vào ngưỡng phổ biến người dùng đưa vào sẽ xác định những danh mục nào được tạo trong FP-tree và sắp xếp các danh mục trong từng giao tác theo thứ tự trong 𝑓_𝑙𝑖𝑠𝑡 Sau đó tạo FP-tree bằng cách lần lượt xét từng giao tác trong CSDL đã được sắp xếp lại và loại bỏ những danh mục không đạt ngưỡng phổ biến

Hàm createFPtree()

Đầu vào: cơ sở dữ liệu các giao dịch 𝐷 và ngưỡng phổ biến 𝑚𝑖𝑛𝑠𝑢𝑝

Đầu ra: cấu trúc dữ liệu FP-tree của CSDL các giao dịch 𝐷

Bước 1: Duyệt toàn bộ 𝐷 và tính độ phổ biến của từng danh mục Sau đó xác định những danh mục có độ phổ biến lớn hơn ngưỡng phổ biến 𝑚𝑖𝑛𝑠𝑢𝑝 và sắp xếp giảm dần theo độ phổ biến vào trong 𝑓_𝑙𝑖𝑠𝑡

Bước 2: Tạo FP-tree chỉ có một nút gốc được gán nhãn là “null”, ký hiệu root

Bước 3: Với mỗi giao tác trong 𝐷 được thể hiện như sau: chọn và sắp xếp những danh mục phổ biến theo thứ tự trong 𝑓_𝑙𝑖𝑠𝑡 Giao dịch đang xét được ký hiệu như sau [𝑝|𝑟𝑙𝑖𝑠𝑡] gồm 2 phần 𝑝 là phần tử danh mục đầu tiên và 𝑟𝑙𝑖𝑠𝑡 là phần danh mục còn lại bên phải của giao tác (không kể những danh mục không thỏa ngưỡng phổ biến) Gọi hàm 𝑖𝑛𝑠𝑒𝑟𝑡_𝑡𝑟𝑒𝑒([𝑝|𝑟𝑙𝑖𝑠𝑡], 𝑟𝑜𝑜𝑡)

Trang 12

Hàm insert_tree([ 𝒑|𝒓𝒍𝒊𝒔𝒕], root)

Bước 1: Kiểm tra nếu tồn tại nút con được trỏ trực tiếp từ Node và được gán nhãn là

𝑝 𝑖𝑡𝑒𝑚 − 𝑛𝑎𝑚𝑒 (hay 𝑐ℎ𝑖𝑙𝑑 𝑖𝑡𝑒𝑚 − 𝑛𝑎𝑚𝑒 = 𝑝 𝑖𝑡𝑒𝑚 − 𝑛𝑎𝑚𝑒) thì tăng chỉ số đếm của nút con child lên 1 Nếu không tồn tại thì tạo một nút con mới, khởi tạo chỉ số đếm của nút con này là 1; sau đó tạo các liên kết của nút con này với Node và ngược lại, liên kết với nút có cùng item-name

Bước 2: Kiểm tra nếu 𝑟𝑙𝑖𝑠𝑡 chưa rỗng thì gọi hàm 𝑖𝑛𝑠𝑒𝑟𝑡_𝑡𝑟𝑒𝑒(𝑟𝑙𝑖𝑠𝑡, 𝑐ℎ𝑖𝑙𝑑)

2.2.5 Ví dụ minh họa

Minh họa cho quá trình xây dựng FP-tree bằng cách xây dựng cây tương ứng với CSDL trong bảng 1.1 để tìm tập phổ biến thỏa ngưỡng 𝑚𝑖𝑛𝑠𝑢𝑝 = 2

Với lần đầu tiên duyệt cơ sở dữ liêu: Độ phổ biến của các danh mục đơn

được xác định và sắp xếp theo thứ tự giảm dần

Với lần thứ hai duyệt cơ sở dữ liêu: Thứ tự của các danh mục trong từng

giao tác được sắp xếp theo thứ tự đối với CSDL trong bảng 1.1

STT Nội dung thao tác Nội dung thao tác sau khi

Trang 13

- Đảm bảo kết quả tập phổ biến là đầy đủ

- Không tạo lại những tập phổ biến trùng nhau

- Không tạo những tập phổ biến không thỏa mãn ngưỡng phổ biến minsup Nhận thấy các tính chất sau có trên cấu trúc FP-tree sẽ giúp cho quá trình phát sinh tập phổ biến một cách hiệu quả hơn:

- Đối với bất kỳ tập phổ biến nào có chứa danh mục đơn 𝑖 đều có thể xác định được thông qua con trỏ liên kết của các nút cùng đại diện chung cho danh mục 𝑖 này Chuỗi nút liên kết này bắt đầu bằng con trỏ của một phần tử trong bảng tiêu đề tập danh mục đơn phổ biến tương ứng với danh mục đơn 𝑖

- Nếu chọn một nút bất kỳ trên cây làm nút để chiếu thì các nút cha của nút đang chiếu đều có giá trị tích lũy bằng với giá trị tích lũy của nút đang chiếu

- Giả sử một tập danh mục được chọn 𝑋 có độ phổ biến thỏa ngưỡng 𝑚𝑖𝑛𝑠𝑢𝑝, vậy để bổ sung thêm danh mục mới 𝑖 vào tập phổ biến này thì danh mục mới thêm

W:5

C:6

D:1 D:1

D:2 T:2

T:1 Root

Ngày đăng: 10/04/2015, 17:04

TỪ KHÓA LIÊN QUAN

w