Thuật toán Apriori

Một phần của tài liệu Khai phá luật kết hợp mờ và áp dụng vào bài toán đầu tư chứng khoán (Trang 32)

Thuật toán Apriori là thuật toán phổ biến nhất trong lĩnh vực khai thác luật kết hợp từ cơ sở dữ liệu tập trung. Thuật toán thực hiện trong 3 bước

Bước 1: Đếm độ hỗ trợ cho mỗi mục item, dựa vào độ hỗ trợ tối thiểu (minSup) chọn tập các tập phổ biến có một phần tử. Tập phổ biến gọi là Large Itemset

Bước 2: Từ tập Large Itemset phát sinh các tập ứng viên (Candiate Itemset), đếm

độ hỗ trợ cho tập các ứng viên này và chọn ra các Itemset có độ hỗ trợ lớn hơn hoặc bằng Minsup đểđưa vào tập Large Itemset

Bước 3: Lặp lại bước 2 cho đến khi không tìm thấy thêm một tập large Itemset nào nữa.

Đối với thuật toán Apriori, các large itemset được tính toán thông qua các bước lặp. Trong mỗi bước lặp, cơ sở dữ liệu được quyét một lần và mọi large itemset có cỡ giống nhau được tính toán.

30

Ở bước lặp đầu tiên, đếm các support của các item để thành lập large 1- itemset ( ký hiệu là L1) đồng thời loại ra các item có độ hỗ trợ bé hơn ngưỡng minsup.

Ở giai đoạn thứ k (k>1), trước hết, các large (k-1)_itemset trong tập Lk-1 tìm trong giai đoạn thứ k-1 được sử dụng để sinh ra các candidate itemset Ck, bằng cách thực hiện hàm Apriori_gen(). Tiếp theo cơ sở dữ liệu sẽ được quyét để tính support cho mỗi candidate trong Ck.

Thut toán Apriori được trình bày như sau:

L1= {Large 1-Itemset}; For (K=2; Lk-1≠ 0; k++) do

Begin

Ck=Apriori_gen(Lk-1); //Candidate mới For all transaction t ∈ D do

Begin

Ct=subset (Ck,t);//Candidate chứa trong giao tác t For all candidates c ∈ Ct do

c.count ++; end Lk={c∈ Ck|c.count ≥ minsup} End Answer = ∪kLk; Sinh tp canditate

Hàm Apriori_gen nhận đối số Lk-1, là tập các large (k-1) itemsets. Nó cho kết quả là một tập chứa tất cả các large k-itemsets. Đầu tiên trong pha nối, Lk-1 được nối với chính nó, nếu có k-2 item đầu tiên (gọi là phần tiền tố) của hai (k-1) itemset i1 và i2 (i1≠i2) nào đó mà giống nhau thì ta khởi tạo một candidate k-itemset cho Ck

31

bằng cách lấy phần tiền tố này hợp với 2 item thứ k-1 của i1 và i2 ( có thể phải sắp lại thứ tự cho các item này). Tiếp theo là pha cắt tỉa, kỹ thuật cắt tỉa áp dụng tính chất 1.1. Trong pha này xóa mọi itemsets từ kết quả của pha nối mà có (k-1) subset không nằm trong Lk-1 thì bị xóa

Giai đoạn nối và cắt tỉa tóm tắt bằng thuật toán sau

Input: tập các large (k-1) itemset Lk-1

Output: tập canditate k-itemset Ck

Method:

//Giai đoạn nối Insert into Ck

Select p.item1, p.item2,….,p.itemk-1,q.itemk From Lk-1p,Lk-1q

Where p.item1 = q.item1,....,p.itemk-2=q.itemk-2,p.itemk-1<q.itemk-1; //Giai đoạn cắt tỉa

For all itemset c ∈ Ck do

For all(k-1) subset s of c do

If(s ∉ Lk-1) then delete c from Ck;

Chẳng hạn xét L3 là {{1 2 3},{1 2 4},{1 3 4},{1 3 5},{2 3 4}. Sau bước nối C4 sẽ

là {{1 2 3 4}, {1 3 4 5}}. Bước cắt tỉa sẽ xóa itemset {1 3 4 5 } bởi vì itemset {1 4 5} không có trong L3. Như vậy C4 chỉ còn {1 2 3 4} (adsbygoogle = window.adsbygoogle || []).push({});

Hàm subset

Hàm subset(Ck,t) tìm tất cả các candidate trong Ck được chứa trong giao dịch t bắt đầu từ nút gốc của cây và duyệt theo nhánh tương ứng với chỉ mục i của các item trong giao dịch t cho đến khi gặp một nút lá. Thủ tục này được thực hiện

đệ quy.

Các candidate itemset Ck được sắp xếp trong một cây băm (hash tree). Gốc của cây được định nghĩa có độ sâu bằng 1. Một nút trong có độ sâu là d trỏ đến nút

32

có độ sâu d+1. Một nút của hash tree bao gồm một danh sách của các itemset đối với nút lá hoặc một bảng băm (hash table) đối với nút bên trong. Tại mỗi node bên trong, mỗi phần tử của hash tree trỏ đến node khác. Các itemset được lưu trong node lá thành một danh sách liên kết đã được sắp xếp. Khi thêm một itemset, bắt

đầu từ gốc đi xuống cho đến khi tìm được node lá. Tại một node trong có độ sâu d, áp dụng hàm Hash để phân nhánh cho item thứ d của itemset. Tất cả các node được khởi tạo như một node lá. Khi số các itemset trong một node lá vượt quá ngưỡng cho trước thì node lá sẽ được chuyển thành node trong.

Thuật toán Apriori đếm tất cả các ứng cử viên có k phần tử trong một lần

đọc cơ sở dữ liệu. Phần cốt lõi của bài toán là xác định các ứng cử viên trong mỗi giao tác. Để thực hiện được mục đích này thuật toán đã sử dụng một cấu trúc gọi là hash tree. Các item trong mỗi giao tác này được dùng để đi lần xuống trong cấu trúc hashtree. Bất cứ khi nào tới được node lá của nó, nghĩa là ta đã tìm được một tập các ứng cử viên có cùng tiền tố được chứa trong giao tác đó. Sau đó các ứng cử

viên này sẽ được thực hiện tìm kiếm trong giao tác mà nó đã được mã hóa trước thành ma trận bit. Trong trường hợp thành công biến đếm các ứng cử viên trong cây được tăng lên.

2.1.5. Thuật toán Apriori nhị phân để tìm các tập phổ biến

Thuật toán Apriori nhị phân được xây dựng trên công trình nghiên cứu của thầy GS.TSKH Hoàng Kiếm và thầy TS. Đỗ Phúc. Thuật toán sử dụng các véc tơ

bít cho các thuộc tính, Véc tơ nhị phân n chiều ứng với n giao tác trong CSDL. Sử

dụng cơ sở dữ liệu bảng 2.1 để minh họa cho thuật toán trên. Có thể biểu diễn cơ

sở dữ liệu của bảng 2.1 bằng ma trận nhị phân trong đó dòng thứ I tương ứng với giao tác ( bản ghi ) ti và cột thứ j tương ứng với mục ( thuộc tính ) ij.

33

Các véc tơ biểu diễn nhị phân cho các tập 1 thuộc tính có dạng sau :

34

Các véc tơ biểu diễn cho thấy tập {A, C}, C, D} có độ hỗ trợ 33% (2/6 ) nên bị

loại. Các véc tơ biểu diễn nhị phân cho các tập 3 thuộc tính có dạng sau:

Các véc tơ biểu diễn nhị phân cho các tập 4 thuộc tính có dạng sau :

Các véc tơ biểu diễn cho thấy tất cả các tập 4 thuộc tính đều có độ hỗ trợ <50% nên thuật toán dừng. Kết quả tìm được phổ biến giống bảng 2.2

2.1.6. Phương pháp rời rạc hóa dữ liệu

Các thuật toán khai phá luật kết hợp nhị phân chỉ có thể áp dụng trên những cơ sở dữ liệu quan hệ chỉ có thuộc tính hoặc cơ sở dữ liệu dạng giao tác trong bảng 2.1 . Các thuật toán khai phá luật kết hợp nhị phân không thể áp dụng trực tiếp với các cơ sở dữ liệu có thuộc tính số và thuộc tính hạng mục. Để khắc phục được vấn

35

đế nêu trên ta tiến hành rời rạc hóa dữ liệu cho các thuộc tính số để chuyển các thuộc tính số về thuộc tính dạng nhị phân.

Một số phương pháp rời rạc hóa như sau:

Trường hợp 1: Nếu A là thuộc tính số rời rạc hoặc là thuộc tính hạng mục có miền giá trị hữu hạng dạng {V1,V2,….,Vk} và k đủ nhỏ ( <100) thì ta biến đổi thuộc tính này thành k thuộc tính nhị phân A_ V1, A_ V2,…, A_ Vk. Giá tri của bản ghi tại trường A_ Vi= true ( hoặc 1 ). Nếu giá trị của bản ghi đó tại thuộc tính A ban đầu bằng vi. Ngược lại giá trị của A_ Vi=False ( hoặc 0).

Trường hợp 2: Nếu A là thuộc tính số liên tục hoặc A là thuộc tính số rời rạc hay thuộc tính hạng mục có miền giá trị hữu hạng dạng {V1,V2,….,Vp} ( P lớn ) thì ta sẽ ánh xạ thành q thuộc tính nhị phân <A : start1…end1> , <A : start2…end2> ,… , <A : startq…endq> . Giá trị của bản ghi tại trường <A : starti…endi> bằng True ( hoặc 1 ) nếu giá trị của bản ghi đó tại thuộc tính A ban đầu nằm trong khoảng [starti…endi], ngược lại giá trị của <A : starti…endi> =False ( hoặc 0)

Ví dụ thuộc tính mua số lượng cổ phiếu : (adsbygoogle = window.adsbygoogle || []).push({});

36

Tuy nhiên phương pháp rời rạc hóa gây ra “ điểm biên gãy “. Rời rạc hóa theo khoảng cũng nảy sinh vấn đề về ngữ nghĩa. Để khắc phục các vẫn đề phát sinh ở

trên, người ta đề xuất một dạng luật mới đó là : Lut kết hp m . Dạng luật này không chỉ khắc phục các nhược điểm của vấn đề phân khoảng mà còn đem lại một dạng luật tự nhiên hơn về mặt ngữ nghĩa và gần gũi hơn với người sử dụng.

2.2.Khai phá luật kết hợp mờ 2.2.1. Tập mờ

Tập mờ M trong tập vũ trụ U được định nghĩa như sau: M={(x,FM(X) / x ∈ U}

fM(X) là hàm thuộc xác định mức độ thuộc nằm trong khoảng [0,1] của mỗi giá trị x (∈ Dx). Ví dụ: cho x là một thuộc tính với miền xác định Dx hàm thuộc fM(x) có dạng sau: fM(x) : Dx→ [0,1] (2.1)

Hàm thuộc có các dạng thường dùng sau: Hàm thuộc tam giác (2.2)

37

Hàm thuộc S: (2.4)

2.2.2. Các phép toán cơ bản trên tập mờ

• Phép hội: hội của 2 tập mờ M1 và M2 ký hiệu M1∪M2 có hàm thuộc mM1∪M2(x)=Max[mM1(x),mM2(x)]=mM1(x)∨mM2(x) (2.5)

• Phép giao: giao của 2 tập mờ M1 và M2 ký hiệu M1∩M2 có hàm thuộc mM1∩M2 (x) = Min[mM1(x),mM2(x)]=mM1(x) ∧ mM2(x) (2.6) • Phép bù: bù của tập mờ M ký hiệu ∼M có hàm thuộc m∼M (x) = 1- mM(x) (2.7) • Phép bằng nhau: M1=M2 ⇔ mM1(x) = mM2(x) (2.8) • Tập con: M1 ⊆ M2 ⇔ mM1(x) ≤ mM2(x) (2.9)

38

• Luật Demorgan:

(M1 ∪ M2) M3 = M1M3 ∩ M2M3 (2.10) và (M1 ∩ M2) M3

2.2.3. Áp dụng tập mờđể rời rạc hóa dữ liệu và các ưu điểm

Theo lý thuyết tập mời , một phần tử thuộc vào một tập nào đó với một “mức độ thuộc “ (membership value ) nằm trong khoảng [0, 1]. Giá trị này được xác định dựa vào hàm thuộc ( membership function ) tương ứng với mỗi tập mờ. Bây giờ chúng ta áp dụng khái niệm tập mờ vào việc rời rạc hóa dữ liệu để giải quyết một số vấn đề còn vướng mắc nêu trên.

Ví dụ: Thuộc tính thời gian đàm thoại (tgđt) có đơn vị tính là phút, với tập xác

định trong khoảng [0,1440], chúng ta gắn cho nó ba tập mờ tương ứng là tgđt_ngắn, tgđt_trungbinh, và tgđt_dài ba tập mờ này sử dụng công thức của các hàm thuộc tương ứng là (2.3 – hàm thuộc hình thang ) với a=0,b=2,c=4,d=6 , hàm thuộc hình tam giác ( 2.2 ) với a=3,b=10,c=70 và (2.3 – hàm thuộc hình thang ) a=60,b=70,c=1399,d=1400 và đồ thị hàm thuộc tương ứng với ba tập mờ này như

sau :

39

Ví dụ, thời gian đàm thoại 5’30 và 5’00 có “mức độ thuộc” vào tập mờ

tgđt_ngắn lần lượt là 0.5 và 0.55. Thời gian đàm thoại 68 và 50 phút có mức độ

thuộc vào tập mờ tgđt_dài tương ứng là 0.90 và 0.

Các ưu điểm của áp dụng tập mờ vào rời rạc hóa dữ liệu

Ưu điểm thứ nhất : Giải quyết được vấn đề “điểm biên gãy” nhờ tập mờ có thể phân khoảng mịn hơn nhờ vào “độ trơn “ của hàm thuộc.

Ưu điểm thứ hai : Rời rạc hóa bằng phân khoảng đôi khi tạo ra số khoảng rất lớn và do đó số thuộc tính nhị phân cũng rất lớn. Còn khi sử dụng tập mờ thì số

lượng tập mờ gắn với mỗi thuộc tính là không đáng kể.

Ưu điểm thứ ba : Tập mờ cho phép chúng ta biểu diễn luật kết hợp dưới dạng tự nhiên hơn và gần gũi với người sử dụng

Ưu điểm thứ tư : Giá trị thuộc tính sau khi rời rạc hóa ( sau khi tính qua hàm thuộc ) biến thiên trong khoảng [0, 1] cho biết “mức độ thuộc “ ít hay nhiều trong khi đó các hàm thuộc tính nhị phân trước đây chỉ có một trong hai giá trị 0,1. Điều này cho chúng ta khả năng ước lượng chính xác hơn “độ đóng góp “ của các bản ghi trong cơ sở dữ liệu vào một tập phổ biến nào đó. (adsbygoogle = window.adsbygoogle || []).push({});

Ưu điểm thứ năm : Các thuộc tính mặc dầu đã được mờ hóa, nhưng vẫn giữ

nguyên được một số tính chất của thuộc tính nhị phân, do đó vẫn có thể áp dụng các thuật toán khai phá luật kết hợp nhị phân vào khai phá luật kết hợp mờ với một vài thay đổi.

Một ưu điểm nữa đối với rời rạc hóa dựa trên tập mờ là nó có thể áp dụng tốt cho cả hai dạng cơ sở dữ liệu : cơ sở dữ liệu quan hệ ( relation database ) và cơ sở

40

2.2.4. Luật kết hợp mờ

Cho I = { i1, i2, …, in} là tập n thuộc tính, iu là thuộc tính thứ u trong I.

T = { t1, t2, …tm } là tập m bản ghi, tv là bản ghi thứ v trong T. tv[iu] cho biết giá trị của thuộc tính iu tại bản ghi tv.

Áp dụng phương pháp mờ hoá thuộc tính đã trình bày ở phần trên, chúng ta gắn các thuộc tính iu với một tập các tập mờ như sau: Fiu={f1iu, f2iu,…fkiu} Luật kết hợp mờ có dạng X is A => Y is B Trong đó • X,Y ⊆ I là các tập mục (tập thuộc tính) • X= {x1, x2, …,xp} xi≠ xj (nếu i ≠ j) • Y= { y1, y2,…,yq} yi≠ yj (nếu i ≠ j) • A={fx1,fx2,...,fxp}, B={fy1,fy2,…,fyq} là tập các tập mờ tương ứng với các thuộc tính trong X và Y. fxi∈ Fxi và fyk∈ Fyk

Một tập thuộc tính mờ trong luật kết hợp mờ là một cặp <X,A> với A là tập các tập mờ tương ứng với các thuộc tính trong X và X ⊆ I

Độ hỗ trợ của tập mục <X,A> ký hiệu là fs(<X,A>) được xác định theo công thức

Trong đó:

• |T| là số bản ghi trong T và bằng m

• X={x1,…,xp}: tập các thuộc tính, Xi là thuộc tính i trong X

41

• T={t1,…,tm}: tập các giao tác, tv là giao tác thứ v trong T.

• αxu(tv[xu]) được xác định theo công thức

αxi(tv[xi]) = mxi(tv[xi]) nếu mxi(tv[xi]) ≥ wxi (2.12) 0 nếu ngược lại

Với: mxi là hàm thuộc của tập mờ fxi gắn với thuộc tính xi

wxi là ngưỡng ( xác định bởi người dùng) của hàm thuộc mxi

• ⊗ là toán tử T-norm(T-chuẩn). Trong lý thuyết lô gic mờ nó có vai trò giống như phép toán logic AND trong logic cổ điển. Có nhiều cách lựa chọn phép toán T-norm như: - Phép lấy min: a⊗b=min(a,b) - Tích đại số: a⊗b=ab - Tích bị chặn: a⊗b=max(0,a+b-1) a nếu b=1 - Tích Drastic: a⊗b= b nếu a=1 0 nếu a,b<1 -Phép giao: a⊗b= 1-min[1,((1-a)w+(1-b)1/w](với w>0) Tập phổ biến: một tập thuộc tính mờ <X,A> là phổ biến nếu độ hỗ trợ của nó lớn hơn hoặc bằng độ hỗ trợ tối thiểu fminsupp(fuzzy minimum support) do người dùng nhập vào:

fs(<X,A>) ≥ fminsupp

Độ hỗ trợ của một luật mờđược tính theo công thức sau

fs(<X is A ⇒ Y is B>) = fs(<X∪Y, A∪B>) (2.13)

Độ tin cậy của một luật kết hợp mờ được xác định theo công thức sau fc(<X is A ⇒ Y is B>) =fs(<X is A ⇒ Y is B>) /fs(<X,A>) (2.14) Một luật được gọi là phổ biến nếu độ hỗ trợ của nó lớn hơn hoặc bằng fminsupp, có nghĩa là fs(<X is A ⇒ Y is B>) ≥ fminsupp

42

Một luật được xem là tin cậy nếu độ tin cậy của nó lớn hơn hoặc bằng độ tin cậy tối thiểu fminconf, fc(<X is A ⇒ Y is B>) ≥fminconf được xác định bởi người dùng.

2.2.5.Thuật toán khai phá luật kết hợp mờ

Thuật toán khai phá luật kết hợp mờ dựa trên thuật toán Apriori và Apriori nhị phân và một số thay đổi trong quá trình cài đặt thực tế nhằm cải thiện thời gian tìm luật. Thuật toán khai thác luật kết hợp mờ chia làm 3 pha chính sau:

Pha 1: Mô hình hóa bài toán: chuyển dữ liệu ban đầu thông qua hàm thuộc của các tập mờ tương ứng với từng thuộc tính

Pha 2: Tìm tất cả các tập thuộc tính mờ phổ biến dạng <X,A> có độ hỗ trợ lớn hơn (adsbygoogle = window.adsbygoogle || []).push({});

độ hỗ trợ cực tiểu của người dùng nhập vào: fs(<X,A>)≥ fminsupp

Pha 3: Sinh các luật mờ tin cậy từ các tập phổ biến đã tìm thấy ở pha thứ nhất Nếu <X,A> là tập thuộc tính mờ phổ biến thì luật kết hợp mờđược sinh từ X có dạng X’ is A’ → X\X’ is A\A’.

Trong đó: X’ là tập con khác rỗng của X, X\X’ is A\A’. Trong đó:

X’ là tập con khác rỗng của X, X\X’ là hiệu của 2 tập hợp X và X’. fc là độ

tin cậy của luật thỏa mãn fc ≥ fminconf (do người dùng xác định)

A’ là tập con khác rỗng của A và là tập các tập mờ tương ứng với các thuộc tính trong X’. A\A’ là hiệu của 2 tập A và A’

Đầu vào của thuật toán: Cơ sở dữ liệu D với tập các thuộc tính I và các bản ghi T, ngưỡng hàm thuộc Wf, độ hỗ trợ tối thiểu fminsupp, độ tin cậy tối thiểu fminconf và toán tử Tnorm

Đầu ra của thuật toán: Tất cả các luật kết hợp mờ tin cậy.

Một phần của tài liệu Khai phá luật kết hợp mờ và áp dụng vào bài toán đầu tư chứng khoán (Trang 32)