1. Trang chủ
  2. » Công Nghệ Thông Tin

Tiểu luận khai phá dữ liệu Các thuật toán tìm luật kết hợp xuất phát từ Apriori

24 871 5
Tài liệu đã được kiểm tra trùng lặp

Đ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 24
Dung lượng 329,5 KB

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

Nội dung

TIỂU LUẬNKHAI PHÁ DỮ LIỆU Đề tài: Các thuật toán tìm luật kết hợp xuất phát từ Apriori Khai phá dữ liệu là sự khám phá phát hiện các tri thức và thông tin hữu ích từ những lượng lớn dữ liệu được lưu giữ trong cơ sở dữ liệu nhầm tìm tần số mẫu, mối kết hợp, sự tương quan, hay các cấu trúc nhân quả giữa các tập đối tượng trong các cơ sở dữ liệu giao tác, cơ sở dữ liệu quan hệ, và những kho thông tin khác.

Trang 2

MỤC LỤC

MỤC LỤC 2

I KHAI PHÁ LUẬT KẾT HỢP 3

II THUẬT TOÁN APRIORI 6

1 NGUYÊN TẮC APRIORI 6

2 MÔ TẢ THUẬT TOÁN APRIORI 6

3 NỘI DUNG THUẬT TOÁN APRIORI: 6

4 MINH HỌA THUẬT TOÁN APRIORI: 8

III THUẬT TOÁN APRIORITID: 11

1 THUẬT TOÁN APRIORITID: 11

2 MÔ PHỎNG THUẬT TOÁN APRIORI-TID 11

3 NỘI DUNG THUẬT TOÁN APRIORI-TID 12

4 CẤU TRÚC LƯU TRỮ: 12

5 MINH HỌA THUẬT TOÁN APRIORI-TID: 13

6 SO SÁNH THUẬT TOÁN APRIORI VÀ APRIORI-TID 15

IV THUẬT TOÁN APRIORI-HYBRID 16

V THUẬT TOÁN FP_GROWTH 17

1 BẢN CHẤT 18

2 THUẬT TOÁN XÂY DỰNG CÂY FP 18

3 MÔ PHỎNG CÁC BƯỚC CỦA THUẬT TOÁN 18

4 MINH HỌA THUẬT TOÁN 20

5 PHÂN TÍCH CHI PHÍ THUẬT TOÁN TẠO CÂY FP 22

6 TÍNH CHẤT CỦA FP-TREE 23

7 ĐÁNH GIÁ CÁC KẾT QUẢ THỰC NGHIỆM 24

TÀI LIỆU THAM KHẢO 25

Trang 3

I KHAI PHÁ LUẬT KẾT HỢP

Khai phá dữ liệu là sự khám phá phát hiện các tri thức và thông tin hữu ích từnhững lượng lớn dữ liệu được lưu giữ trong cơ sở dữ liệu nhầm tìm tần số mẫu, mối kếthợp, sự tương quan, hay các cấu trúc nhân quả giữa các tập đối tượng trong các cơ sở

dữ liệu giao tác, cơ sở dữ liệu quan hệ, và những kho thông tin khác

Luật kết hợp: mô tả mối quan hệ liên kết giữa các thuộc tính trong tập hợp các

dữ liệu có liên quan

Luật: Body => Consequent [ Support , Confidence ]

Trong đó,

1 Tiền đề, vế trái luật (Body).

2 Mệnh đề kết quả, vế phải luật (Consequent).

3 Support, tần số (“trong bao nhiêu phần trăm dữ liệu thì những điều ở vế trái

và vế phải cùng xảy ra")

4 Confidence, độ tin cậy (“nếu vế trái xảy ra thì có bao nhiêu khả năng vế phải

xảy ra")

Ví dụ: Tea ^ Milk => Sugar [0.3 , 0.9]

– “Nếu mua Trà và mua Sửa thì mua đường trong 90% trường hợp Trà,

sửa và đường được mua chung trong 30% dòng dữ liệu."

1 Các khái niệm:

– Gọi I = {i1, i2, i3, , in} là tập các trường gọi là các Items (tập phần tử dữ liệu)

Tập con của I gồm k phần tử dữ liệu được gọi là k-ItemSet.

– D là tập các giao tác (Transaction), ở đó mỗi giao tác T là một tập các Item T 

I, và mỗi giao tác có một giá trị định danh là TID

– Ta gọi I giao tác T chứa X nếu X  T, nếu X là tập vài Item trong I

– Giao tác T chứa X nếu X  T, với X là tập vài Item trong I Tỷ lệ phần trăm

giữa số lượng các giao tác chứa tập các Item X trên tổng số các giao tác trong cơ

sở dữ liệu D được gọi là số support của tập item đó, tức là:

(D) Card

(X) Card (X)

support

Trang 4

– Luật kết hợp là một mối quan hệ liên kết giữa hai tập con các phần tử dữ liệu X

và Y theo dạng if X then Y, và ký hiệu là X  Y, nếu:

X  I, Y  I và X Y =

– Luật X  Y có số support là s, nếu có s% số giao tác trong D chứa X  Y Với

support của một tập Item là số các giao tác có chứa tập Item đó

– Luật X => Y có độ tin cậy (confidence) là c, biểu thị số phần trăm giao tác có

chứa luôn XY trên số những giao tác có chứa X

– Việc khai thác các luật kết hợp từ cơ sở dữ liệu D chính là việc tìm tất cả các luật

có độ hỗ trợ và độ tin cậy lớn hơn ngưỡng hỗ trợ (độ hỗ trợ tối thiểu) và ngưỡngtin cậy (độ tin cậy tối thiểu) do người sử dụng xác định trước Ngưỡng hỗ trợ và

ngưỡng tin cậy lần lượt được ký hiệu là minsup và minconf

– Tập ItemSet có support lớn hơn hay bằng minsup được gọi là Large ItemSet Các

ItemSet còn lại được gọi là Small ItemSet.

2 MỘT SỐ ĐỊNH NGHĨA

– D: là cơ sở dữ liệu có các trường <TID, item>, với TID là định danh của giao

tác

– Size: là số lượng các Item trong tập ItemSet.

– c[1], c[2], c[k] thể hiện một tập k-ItemSet c có k Item bao gồm c[1], c[2], ,

c[k], với c[1] > c[2] > > c[k]

– Nếu c=X.Y và Y là m-ItemSet, thì ta cũng gọi Y là m-extension của X.

– Mỗi ItemSet có trường count để lưu số support cho ItemSet đó Trường count được khởi tạo giá trị bằng 0 khi ItemSet được tạo lần đầu.

s%

(D) Card

(X Card Y)

(X support   Y) 

) support(X)

Y) support(X (X

confidenceY [ c s, ])  

Trang 5

– Với một tập các giao tác D, sẽ xây dựng một thuật toán để phát sinh ra nhữngluật kết hợp mà có chỉ số độ hỗ trợ và độ tin cậy lớn hơn độ hỗ trợ nhỏ nhất(minsup) và độ tin cậy nhỏ nhất (minconf).

– Thuật toán tìm tất cả các luật kết hợp có thể được phân tích thành hai bước:

Bước 1: Tìm tất cả các tập item (itemsets) mà support của nó lớn hơn minsup.

Khi đó tập item có support tối thiểu này gọi là tập Large itemset, những tập cònlại gọi là Small itemset

Bước 2: Sử dụng tập Large item để phát sinh những luật mong muốn Với mỗi

tập Large itemset L, tìm tất cả tập con khác rỗng của L gọi là A, với mỗi tập con

A như vậy thì ta có luật: A  (L – A), nếu tỉ lệ giữa support(L) với support (A)lớn hơn minconf

3 XỬ LÝ ĐỘ PHỨC TẠP LŨY THỪA

– Cho n dòng giao dịch (transaction) và m thành phần dữ liệu (item) khác nhau khiđó:

Trang 6

II THUẬT TOÁN APRIORI

Apriori là thuật toán được Rakesh Agrawal, Tomasz Imielinski, Arun Swami đềxuất lần đầu vào năm 1993 Bài toán được phát biểu: Tìm t có độ hỗ trợ s thỏa mãn s 

s0 và độ tin cậy c  c0 (s0, c0 là hai ngưỡng do người dùng xác định và s0=minsupp, c0

=minconf) Ký hiệu Lk tập các tập k - mục phổ biến, Ck tập các tập k-mục ứng viên.Bài toán đặt ra là:

1) Tìm tất cả các tập mục phổ biến với minsupp nào đó.

2) Sử dụng các tập mục phổ biến để sinh ra các luật kết hợp với độ tin cậy minconf nào đó.

1 NGUYÊN TẮC APRIORI

– Đếm số lượng của từng Item, tìm các Item xuất hiện nhiều nhất

– Tìm các cặp ứng viên: Đếm các cặp => cặp item xuất hiện nhiều nhất

– Tìm các bộ ba ứng viên: Đếm các bộ ba => bộ ba item xuất hiện nhiều nhất Vàtiếp tục với bộ 4, bộ 5, …

– Nguyên tắc chủ yếu: Mọi tập con của tập phổ biến phải là tập con phổ biến

2 MÔ TẢ THUẬT TOÁN APRIORI

– Bước 1: Đếm số support cho mỗi tập gồm một phần tử và xem chúng như một

Large itemset Support của chúng là minsup

– Bước 2: Với mỗi tập Large item bổ sung các item vào và tạo một Large itemset

mới, tập này được gọi là tập ứng viên (Candidate itemset - C) Đếm số support

cho mỗi tập C trên cơ sở dữ liệu, từ đó quyết định tập C nào là Large Item thực

sự, và ta dùng làm hạt giống cho bước kế tiếp

– Bước 3: Lặp lại bước 2 cho đến khi không còn tìm thấy thêm, một tập Large

itemset nữa

3 NỘI DUNG THUẬT TOÁN APRIORI:

Input: Tập các giao dịch D, ngưỡng support tối thiểu minsup Output: L- tập mục phổ biến trong D

Method:

1 L1=Large_1_ItemSets()

Trang 7

1 for all transaction t  D do

2 for all item i  t do

3 i.count ++;

4 L1=i | i.count  minsup;

– Hàm Apriori_Gen (Lk-1) thực hiện việc kết các cặp (k-1) ItemSet để phát sinh các tập k_ItemSet mới Tham số của hàm là Lk-1 – tập tất cả các (k-1)-ItemSet và kết quả trả về của hàm là tập các k-ItemSet

4 MINH HỌA THUẬT TOÁN APRIORI:

Minh họa 1: Cho một ví dụ tập các giao dịch từ các hóa đơn mua hàng như sau: TID Các món hàng được mua (Item)

2 { b, m }

3 { p, s, t }

Trang 8

Ở bước kết Từ F1 trên ta có tập C2 gồm các cặp 2-item:

{{a, b}, {a, m}, {a,t}, {b,m}, {b,t}, {m,t}}

Tính tập Large 2-item, ta có F2:

Tập Item Số lần xuất hiện

Ở bước lược bỏ ta có F2 = {{a, b}, {b,m}}

Ở bước kết Từ F2 ta có tập C3 gồm các cặp 3-item là {}

Thuật toán kết thúc.

Trang 9

Minh họa 2: Xét cơ sở dữ liệu mẫu như sau

Chọn Items có support >=minSup

Trang 10

III.THUẬT TOÁN APRIORITID:

Giải thuật AprioriTID là phần mở rộng theo hướng tiếp cận cơ bản của giải thuật

Apriori Thay vì dựa vào cơ sở dữ liệu thô giải thuật AprioriTID biểu diễn bên trongmỗi giao tác bởi các ứng viên hiện hành

1 THUẬT TOÁN APRIORITID:

– Thuật toán AprioriTID sử dụng hàm Apriori_Gen để tạo các tập ItemSet ứng

viên Thuật toán này không dùng cơ sở dữ liệu D để đếm support kể từ bước

thứ hai, thay vào đó là sử dụng tập Ck cho mục đích này Mỗi thành viên của tập

Ck có dạng <TID, Xk> với Xk là tập k-ItemSet thể hiện một phần giao tác t có

mã là TID, hay ta có thể viết <t.TID, cCk | c có trong t>

– Nếu một giao tác không chứa bất kỳ một tập k-ItemSet ứng viên nào, thì giao tác

này không được đưa vào C k Do đó, số lượng ứng viên được đưa vào C k có thểnhỏ hơn số lượng các giao tác trong cơ sở dữ liệu

2 MÔ PHỎNG THUẬT TOÁN APRIORI-TID

– Bước 1: Quét tất cả các giao dịch để tìm tất cả các item có độ Support lớn hơn

Min Support và đưa tập Large 1-Item vào F1

– Bước 2: Đưa toàn bộ các Tid của giao dịch cùng các Items vào C’1 dưới dạng

<Tid,{X1}>

– Bước 3: Xây dựng các cặp 2-items từ F1 đưa vào tập ứng viên C2 Quét tất cả

các giao dịch trong C’1 để tìm tất cả các tập Large 2-Item từ C2 đưa vào C’2dưới dạng <Tid,{X2}>, đồng thời đưa các tập Large 2-Item ứng viên vào F2

– Bước 4: Phát sinh Luật Xây dựng các cặp k items từ Fk-1 đưa vào tập ứng viên

Ck Quét tất cả các giao dịch trong C’k-1 để tìm tất cả các tập Large k-Item từ

Ck và đưa vào C’k dưới dạng <Tid,{Xk}>, đồng thời đưa các tập Large k-Itemvào Fk Lặp lại Bước 4 cho đến khi hết ứng viên mới

Trang 11

3 NỘI DUNG THUẬT TOÁN APRIORI-TID

– Mỗi tập ItemSet ứng viên sẽ được gán cho một mã số duy nhất, gọi là ID Mỗi

tập ItemSet Ck được lưu trong một mảng Một thành viên của C k bây giờ cĩdạng <TID, ID >, mỗi C k được lưu trong một cấu trúc tuần tự

– Hàm Apriori_Gen phát sinh một tập các k-ItemSet ứng viên Ck bằng cách kết hai

tập Large (k-1)-ItemSets Mỗi ItemSet ứng viên ta thêm hai trường:

(i) generators.

(ii) extensions.

– Trường generators của tập ItemSet ck lưu các ID của hai tập Large (k-1)-ItemSet

kết với nhau để phát sinh ck

– Trường extensions của tập ItemSet ck lưu những ID của các tập Large

(k+1)-ItemSet kết với nhau để phát sinh ck

– Khi một ItemSet ck ứng viên được phát sinh bằng cách kết 11

k-1 và 12

k-1, thì các IDcủa 11

k-1 và 12

k-1 sẽ được lưu vào trường generators của ck, đồng thời ID của ck

được lưu vào trường extension của 11

k-1.– Với cấu trúc lưu trữ này thì câu lệnh

Trang 12

Ct = c  Ck | (c-c[k])  t.Set_of_ItemSets (c-c[k-1]  t.Set_of_ItemSets; sẽ được thực hiện như sau: trường t.Set-of-ItemSets của bản ghi t thuộc C k 1 lưu

các ID của tập ứng viên (k-1)-ItemSet chứa trong giao tác t.TID Với mỗi ck-1,

trường extensions chứa tập Tk là tập các ID của tất cả các tập k-ItemSet ứng viên

được mở rộng từ ck-1 Mỗi ck trong Tk, trường generators chứa các ID của hai tập

ItemSet dùng để phát sinh ra ck Nếu những tập itemSet này nằm trong danh sách các tập ItemSet của bản ghi t, thì có thể kết luận ck thuộc giao tác t.TID, và ck đượcthêm vào tập Ct

5 MINH HỌA THUẬT TOÁN APRIORI-TID:

Cho một ví dụ tập các giao dịch Tid với các Items như sau:

Trang 13

Lấy toàn bộ <Tid,{X1}> đưa vào C’1

Tính tập Large 2-Item, ta có F2

Tập 2-Item Số lần xuất hiện

Trang 14

Xác định ứng viên từ C3 khi duyệt Tid trong C’2 và đưa vào C’3

Tid Tâp 3-Itims

200 {{2, 3, 5}}

300 {{2, 3, 5}}

Tính tập Large 3-Item, ta có F3:

Tập 3- Item Số lần xuất hiện

Ở bước kết Từ F3 ta có tập C4 gồm các cặp 4-item là {}

Thuật toán kết thúc.

6 SO SÁNH THUẬT TOÁN APRIORI VÀ APRIORI-TID

Khuyết điểm của apriori:

Để xác định độ Support của các tập ứng viên, thuật toán luôn luôn phải quétlại toàn bộ các giao tác trong CSDL Do vậy sẽ tiêu tốn rất nhiều thời gian khi sốk-items tăng (số lần xét duyệt các giao tác tăng)

Khuyết điểm của apriori-Tid:

Trong quá trình xét duyệt khởi tạo, kích thước của C’k là rất lớn và hầu hết

là tương đương với kích thước của CSDL gốc Do đó thời gian tiêu tốn cũng sẽbằng với thuật toán apriori, ngoài ra thuật toán apriori-Tid còn phải gánh chịuthêm chi phí phát sinh nếu C’k vượt quá bộ nhớ trong mà phải sử dụng kèm bộnhớ ngoài

Trang 15

IV THUẬT TOÁN APRIORI-HYBRID

Thuật toán Apriori-Hybrid được coi như kết hợp giữa Thuật toán Apriori vàthuật toán Apriori-TID Trong thuật toán Apriori-Hybrid, được sử dụng khi tổchức lặp và chuyển sang Apriori-TID khi đã chắc chắn rằng tập C k đã vào bộ nhớchính Thuật toán Apriori-Hybrid được coi là tốt hơn so với Apriori vàAprioriTID Nhờ có nhận xét tinh tế là thuật toán Apriori chạy khá nhanh ởnhữngbước đầu tiên, còn thuật toán Apriori-TID chạy nhanh ở những bước sau(chạy khá chậm ở những bước đầu tiên), Agrawal đề nghị phương án lai ghép:không nhất thiết phải chạy tất cả các bước cùng một thuật toán giống nhau Nhữngbước đầu tiên, ông cho chạy thuật toán Apriori, sau đó khi tập các ứng cử viên khálớn, sắp chứa đầy trong bộ nhớ tính toán, mới dùng thuật toán Apriori-TID.Srikant đưa ra thêm một nhận xét: thời gian chuyển từ thuật toán Apriori sangthuật toán Apriori-TID tương đối tốn kém

Trang 16

V THUẬT TOÁN FP_GROWTH

Như ta đã biết thuật toán Apriori là một bước đột phá về khai thác các tậpmục thường xuyên bằng cách sử dụng kỹ thuật tỉa để rút gọn kích thước của cáctập mục ứng cử Tuy nhiên, trong trường hợp số tập mục nhiều, tập mục dài hoặcngưỡng độ hỗ trợ nhỏ thì thuật toán gặp phải hai chi phí lớn:

– Sinh ra số lượng khổng lồ các tập mục ứng cử Hơn nữa, để phát hiện ra các tậpmục thường xuyên có kích thước n, thuật toán phải kiểm tra 2n-2 các tập mụcthường xuyên tiềm ẩn

– Phải duyệt qua cơ sở dữ liệu nhiều lần Số lần duyệt cơ sở dữ liệu của thuật toánApriori bằng độ dài của tập mục thường xuyên dài nhất tìm được.Trong trườnghợp tập mục thường xuyên dài và cơ sở dữ liệu lớn thì không thể thực hiện được.Thuật toán Apriori phù hợp với cơ sở dữ liệu thưa, còn với cơ sở dữ liệu dày thìthuật toán kém hiệu quả

– Để khắc phục những chi phí lớn của thuật toán Apriori năm 2000 Jiawei Han,Jian pei và Yiwen Yin đã đưa ra thuật toán mới được gọi là FP_growth để tìmtập mục thường xuyên bằng cách không sinh các tập mục ứng cử từ các tập mụcthường xuyên trước mà vẫn hiệu quả bằng cách sử dụng ba kỹ thuật sau:

 Thứ nhất, thuật toán sử dụng cấu trúc cây mẫu thường xuyênFP_Tree để nén dữ liệu Cấu trúc FP_Tree là mở rộng của cấu trúc câyprefix Những nút trong cây là các mục có độ dài là 1, được gán nhãn bởitên mục và được sắp xếp theo tần suất xuất hiện của các mục để các mục có

số lần xuất hiện nhiều thì sẽ chia sẻ nhiều hơn

 Thứ hai, khai thác phát triển từng đoạn mẫu dựa trên FP_Tree, bắtđầu từ mẫu thường xuyên có kích thước 1 và chỉ kiểm tra trên cơ sở mẫuphụ thuộc (conditional pattern base), khởi tạo FP_Tree của mẫu phụ thuộc,thực hiện khai thác đệ quy trên cây này Mẫu kết quả nhận được qua việckết nối mẫu hậu tố với mẫu mới được sinh ra từ FP_Tree phụ thuộc

 Thứ ba, dùng kỹ thuật tìm kiếm phân hoạch không gian tìm kiếm

và chia để trị để chia nhiệm vụ khai thác thành những nhiệm vụ nhỏ hơn vàgiới hạn lại các mẫu làm giảm không gian tìm kiếm

Trang 17

1 BẢN CHẤT

– Khai thác tập phổ biến không sử dụng hàm tạo ứng viên

– Nén cơ sở dữ liệu thành dạng cấu trúc cây FP (Frequent Patern)

– Duyệt đệ qui cây FP để tạo tập phổ biến

2 THUẬT TOÁN XÂY DỰNG CÂY FP

– Bước1: Duyệt CSDL, lấy ra tập các item phổ biến F và tính độ phổ biến của

chúng Sắp xếp các item trong tập F theo thứ tự giảm dần của độ phổ biến, tađược tập kết quả là L

– Bước2: Tạo nút gốc cho cây T, và tên của nút gốc sẽ là Null.

Sau đó duyệt CSDL lần thứ hai Ứng với mỗi giao tác trong CSDL thực hiện 2công việc sau:

 Chọn các item phổ biến trong các giao tác và sắp xếp chúng theothứ tự giảm dần độ phổ biến trong tập L

 Gọi hàm Insert_tree([p|P],T) để đưa các item vào trong cây T– Thủ tục thêm các mục thường xuyên vào cây FP_Tree:

1 Procedure Insert_Tree(string[p|P], Tree T){

2 //Trong đó p là mục đầu tiên của dãy và P là phần còn lại của dãy

3 If cây T có nút con N mà N.Item_name = p Then N.count++

Ngày đăng: 23/06/2014, 20:52

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