Thuật toán hai pha HUMining

Một phần của tài liệu khai phá tập mục lợi ích cao trong cơ sở dữ liệu lớn (Trang 43 - 74)

2.3.3.1. Cơ sở lý thuyết

Định nghĩa 2.10. Ta gọi tổng lợi ích của tất cả các mục có mặt trong tq là lợi ích

của giao tác tq. Ký hiệu lợi ích của giao tác tq bằng tu(tq), ta có: ( ) ( , ) p q q pq p i t tu t f x y    . (2.6)

Ví dụ: Cho cơ sở dữ liệu bảng 2.1 và bảng 2.2, ta có tu t( )3       2 3 1 1 1 5 12.

Định nghĩa 2.11. Cho tập mục STS là tập tất cả các giao tác chứa S. Ta gọi tổng lợi ích của tất cả các giao tác trong TS là lợi ích theo giao tác của S.

Ký hiệu lợi ích theo giao tác của Stwu(S), ta có:

( ) ( ) ( ) ( , ) q S q S p q S q pq p t T t T i t twu S tu T tu t f x y          . (2.7)

Ví dụ: Xét dữ liệu cho trong bảng 2.1 và 2.2. Với S = A, ta có

3, , , ,4 6 8 9 A Tt t t t t ,     ( )3 ( )4 ( )6 ( )8 ( ) 12 14 13 57 13 1099 twu Atu ttu ttu ttu ttu t       . Với S = AD thì TAD  t t4, 8 , twuA D, tu t( )4 tu t( )8 14 57 71.

Định nghĩa 2.12. Cho ngưỡng  > 0. Tập mục S được gọi là tập mục có lợi ích theo giao tác cao nếu twu S( ).

Định lý 2.3. (Tính chất Anti monotone của lợi ích theo giao tác) Cho k

S là một k- tập mục, Sk1 là một (k-1)-tập mục con của Sk ( k 1 k

S   S ). Nếu Sk có lợi ích theo giao tác cao thì k 1

S  cũng có lợi ích theo giao tác cao.

Chứng minh: Vì k 1 k S   S , nên TSkTSk1. Theo (2.7): 1 1 ( ) ( ) ( ) ( ) q Sk q Sk k k q q t T t T twu S tu t tu t twu S          .

Suy ra, nếu twu S( k) thì 1

( k )

twu S   .

Nhận xét 2.1. Tính chất Anti monotone của lợi ích theo giao tác có nghĩa là nếu

một k-tập mục k

S có chứa tập mục con k 1

S  mà k 1

S  là tập mục có lợi ích theo giao tác thấp thì k

hiện tập mục có lợi ích theo giao tác cao ta có thể tiến hành từng bước theo độ dài từ nhỏ đến lớn của các tập mục. Tại bước k = 2, 3, ... các ứng viên chỉ có thể là các kết nối của các (k-1)-tập mục có lợi ích theo giao tác cao.

Định lý 2.4. Ký hiệu WH là lớp tất cả các tập mục X có lợi ích theo giao tác cao, H

là lớp tất cả các tập mục lợi ích cao. Nếu chọn  minutil thì HWH.

Chứng minh: Với mọi tập mục StqTS, đều có Stq. Do đó

( ) ( , ) ( , ) ( ) q S p q S p q pq p pq p t T i S t T i t u S f x y f x y twu S            .

Vậy nếu u S( )minutil = thì tu S( )  minutil, tức là nếu SH thì SWH.

Nhận xét 2.2. Từ định lý 2.4 suy ra, nếu  minutil thì để tìm các tập mục lợi ích cao ta chỉ cần tìm trong số các tập mục có lợi ích theo giao tác cao.

2.3.3.2. Thuật toán hai pha HUMining

Kết hợp nhận xét 2.1 và 2.2 trên đây, ta có thuật toán sau đây phát hiện tập mục lợi ích cao trong cơ sở dữ liệu cỡ lớn. Thuật toán gồm hai pha:

Pha thứ 1. Tìm tất cả các tập mục có lợi ích theo giao tác cao với ngưỡng  =

minutil.

Pha thứ 2. Phát hiện tất cả các tập mục lợi ích cao trong số các tập mục có lợi

ích theo giao tác cao.

Có thể thấy, pha thứ 1 là công đoạn chính, tiêu tốn phần lớn thời gian trong tiến trình khai phá tập mục lợi ích cao. Vì ràng buộc lợi ích theo giao tác thỏa mãn tính chất anti monotone, để phát hiện tập mục có lợi ích theo giao tác cao, ta có thể sử dụng bất kỳ thuật toán nào trong số các thuật toán khai phá tập mục thường xuyên xây dựng dựa trên tính chất Anti monotone, chỉ cần thay việc đếm độ hỗ trợ của các tập mục bằng việc tính lợi ích theo giao tác của chúng. (Hiện nay đã có rất nhiều thuật toán hiệu quả khai phá tập mục thường xuyên được xây dựng dựa trên tính chất Anti monotone, [9, 11] ).

Vì tất cả các bước phát hiện các k-tập mục có lợi ích theo giao tác cao đều cần sử dụng lợi ích của các giao tác, việc làm đầu tiên mà HUMining thực hiện là duyệt toàn bộ cơ sở dữ liệu, tính lợi ích của mỗi giao tác. Ta giả thiết, mỗi giao tác trong cơ sở dữ liệu T được gán thêm một trường, ký hiệu là tu(t), để lưu giá trị lợi ích của nó.

Khi đã khám phá được tập tất cả các tập mục có lợi ích theo giao tác cao thì việc phát hiện các tập mục lợi ích cao trong số các tập mục này là rất đơn giản, chỉ cần quét cơ sở dữ liệu một lần duy nhất.

Dưới đây là thuật toán khai phá tập mục lợi ích cao được xây dựng với phần tìm tập các tập mục có lợi ích theo giao tác cao dựa theo thuật toán Apriori trong khai phá tập mục thường xuyên đã giới thiệu ở chương 1.

Thuật toán HUmining: Tìm tất cả các tập mục lợi ích cao với ngưỡng minutil.

Input: Cơ sở dữ liệu giao tác T, hàm lợi ích f, ngưỡng lợi ích minutil.

Output: Tập H bao gồm các tập mục lợi ích cao.

Method:

1. for mỗi giao tác tT

2. Tính lợi ích tu t( ) theo công thức (2.6) ;

3. end for ;

// Pha thứ 1: Phát hiện các tập mục có lợi ích theo giao tác cao.

4. k=1;

5. WHk i iI and twu i( )minutil; / / Phát hiện 1-tập mục có lợi ích theo

giao tác cao. 6. repeat 7. k = k+1;

8. Ckapriori_gen WH( k1) ; //Tạo các tập mục ứng viên.

9. for mỗi giao tác tTdo

10. Ctsubset C t( k, ) ; // Nhận diện các ứng viên thuộc t.

11. for mỗi ứng viên cCt do

12. twu c( )twu c( )tu t( ) ; / /Cộng thêm lợi ích của giao tác t vào lợi ích theo giao tác của c.

13. end for ; 14. end for ;

15. WHk c c C/  ktwu c( )minutil; / /Tuyển chọn các k-tập mục có lợi ích

16. until Ck  ; 17. WH =WHk;

// Pha thứ 2: Phát hiện tập mục lợi ích cao.

18. for mỗi giao tác tT do

19. Ctsubset WH t( , ) ; //Nhận diện các tập mục có lợi ích theo giao tác cao

thuộc t.

20. For mỗi ứng viên sCt do

21. u s( )u s( )u s t( , ); //Cộng thêm lợi ích của c tại giao tác t vào lợi ích của c.

22. end for ; 23. end for ;

24. H s s/ WHu s( )minutil; //Lọc các tập mục lợi ích cao.

Thuật toán HUMining sử dụng hàm apriori_gen(WHk-1) (bước 8). Hàm này hoàn toàn giống như hàm Apriori_gen(Fk-1) trong thuật toán Apriori khai phá tập mục thường xuyên. Nó tạo ra các k-tập mục ứng viên tại bước k bằng cách kết nối các (k-1)-tập mục có lợi ích theo giao tác cao đã tìm được ở bước k-1, (với giả thiết các tập mục đã được sắp thứ tự từ điển).

Thuật toán apriori_gen(): Tạo tập Ck các tập mục ứng viên có lợi ích theo giao tác cao.

Input: Tập các (k-1)-tập mục có lợi ích theo giao tác cao WHk1.

Output: Tập các k-tập mục ứng viên Ck. Method: // Bước kết nối 1. for mỗi (k-1)-tập mục 1 k 1 SWH  do 2. for mỗi (k-1)-tập mục S2WHk1 do 3. if S1[1]S2[1] and S1[2]S2[2]and...and

S k1[  2] S k2[ 2]and S k( [1  1] S k2[ 1] then 4. Ck { [1],S1 S1[2], ... ,S k1[ 1],S k2[ 1]};

6. end for ; // Bước cắt tỉa 7. for mỗi tập mục ciCk do 8. for mỗi (k-1)-tập mục sci do 9. if (sWHk1) then 10. loại ci khỏi Ck; 11. end for ; 12. return Ck ;

Ví dụ: Cho cơ sở dữ liệu giao tác bảng 2.1. Giả sử giá trị chủ quan của các mục cho trong bảng 2.2, hàm lợi ích f x y( , )x y. và minutil = 130. Thuật toán HUMining thực hiện việc phát hiện các tập mục lợi ích cao trong cơ sở dữ liệu này như sau:

Các dòng lệnh 1-3 cho tu t( )1 21, tu t( )2 71, tu t( )3 12; tu t( )4 14, tu t( )5 14, 6 ( ) 13 tu t  , tu t( )7 111, tu t( )8 57, tu t( )9 13, tu t(10)72. Pha 1: Các dòng lệnh 4-16 cho:

Bước k = 1. C1 A B C D E, , , , . twu A( ) 24, twu B( ) 240, twu C( ) 48, ( )

twu D  36, twu E( ) 50. WH1B C D E, , , .

Bước k= 2. C2 BC BD BE CD CE DE, , , , , . twu BC( )72, twu BD( ) 182 , ( ) 254

twu BE  , twu CD( )57, twu CE( ) 176 , twu DE( )253.

 

2 , , ,

WHBD BE CE DE .

Bước k = 3. C3 BDE. twu BDE( ) 182 . WH3 BDE. Pha 1 kết thúc chỉ sau 3 bước, (vì C4  ).

Ta nhận được HW B C D E BD BE CE DE BDE, , , , , , , , . Pha 2:

Các dòng lệnh 18-23 cho u B( )240, u C( )48, u D( )36, u E( )50, ( )

Dòng lệnh 24 cho H B BD BE BDE, , , .

Hình 2.4 dưới đây mô tả không gian tìm kiếm tập mục lợi ích cao trong cơ sở dữ liệu bảng 1 theo thuật toán HUMining. Các tập mục đánh dấu 2 sao là tập mục lợi ích cao tìm được.

Hình 2.4. Không gian tìm kiếm tập mục lợi ích cao theo thuật toán HUMining

(gồm 12 tập mục tô đen) trong dàn tập mục của cơ sở dữ liệu bảng 1, với minutil

= 130. Số ghi trong ô là lợi ích của tập mục hoặc lợi ích theo giao tác / lợi ích của tập mục. Tập mục đánh dấu một hoặc hai sao là tập mục có lợi ích theo giao tác cao, trong đó tập mục hai sao là tập mục lợi ích cao tìm được.

2.3.3.3. Đánh giá thuật toán

Chúng tôi đã tiến hành thử nghiệm thuật toán HUMining trên một số cơ sở dữ liệu giao tác tạo được bằng phương pháp tạo ma trận số ngẫu nhiên. Căn cứ vào các kết quả thử nghiệm và việc phân tích cấu trúc thuật toán, chúng tôi nhận thấy HUMining có những ưu điểm vượt trội sau đây so với UMining và UMining-H.

1. Thu gọn một cách đáng kể không gian tìm kiếm. Hình 2.4 minh hoạ không gian tìm kiếm tập mục lợi ích cao trong cơ sở dữ liệu bảng 2.1 theo thuật toán

ABCDE 0 ABCD 0 ABDE 0 ABCE 0 ACDE 57 BCDE 0 ABC 0 ABD 0 ABE 0 ACD 52 ACE 51 ADE 46 BCD 0 BCE 72 BDE** 182/182 CDE 48 AB 26 AC 41 AD 36 AE 33 BC 72/62 BD** 182/172 BE** 254/240 CD 57/43 CE* 176/85 DE* 253/56 A 109/24 B** 280/240 C* 176/48 D* 253/36 E* 372/50

HUMining. Có thể thấy, ở đây không gian tìm kiếm chỉ gồm 12/31 tập mục con của I.

2. Khi minutil lớn, không gian tìm kiếm được thu gọn ngay từ bước 2. Ví dụ, đối với cơ sở dữ liệu bảng 2.1, tại bước 2 đã có 4 tập mục chứa A bị loại khỏi không gian tìm kiếm do A không phải là mục có lợi ích theo giao tác cao, trong khi các tập mục này hoàn toàn không bị loại bởi thuật tỉa trong UMining và UMining-H (hình 2.2 và 2.3). Với những cơ sở dữ liệu cỡ lớn hơn, có thể hy vọng HUMining sẽ thu gọn không gian tìm kiếm nhiều hơn. 3. Căn cứ vào định lý 2.4, nếu chọn  minutil thì tập tất cả các tập mục lợi ích

cao là tập con của tập các tập mục có lợi ích theo giao tác cao. Do đó, sẽ không có tập mục lợi ích cao nào bị bỏ sót khi thuật toán kết thúc.

4. Trong quá trình thực hiện thuật toán, tuy phải tính toán nhiều lần lợi ích theo giao tác của các tập mục theo công thức (2.7), nhưng để xác định các giá trị này, phép toán chủ yếu phải thực hiện là phép cộng hơn là phép nhân. Do đó, tổng thời gian tính nhỏ hơn nhiều so với tổng thời gian cần thiết để tính các giá trị lợi ích ước lượng khi áp dụng thuật toán UMining hoặc UMining-H. 5. Để thực hiện pha 2 (phát hiện các tập mục lợi ích cao trong số các tập mục có

lợi ích theo giao tác cao), ta chỉ cần quét tập dữ liệu đúng một lần. Hơn nữa, nếu chọn ngưỡng minutil lớn, số tập mục có lợi ích theo giao tác cao sẽ ít, thời gian dành cho việc thực hiện pha 2 sẽ rất nhỏ.

6. Cuối cùng, nhưng lại là một ưu điểm vượt trội của HUMining là, với chỉ một vài thay đổi nhỏ, chúng ta có thể sử dụng bất kỳ thuật toán khai phá tập mục thường xuyên nào vào việc khai phá tập mục có lợi ích theo giao tác cao, nếu thuật toán đó được xây dựng dựa trên tính chất Apriori của tập mục thường xuyên. Như đã biết, hiện nay có rất nhiều thuật toán hiệu quả khai phá tập mục thường xuyên, (xem chẳng hạn [9, 11]. Hơn nữa, vì các thuật toán khai phá tập mục thường xuyên rất dễ song song hóa, nên HUMining cũng là thuật toán như thế.

Với những ưu điểm trên đây, chúng tôi cho rằng thuật toán HUMining hiệu quả hơn nhiều so với hai thuật toán UMining và UMining-H trong [15].

2.4. Kết luận chƣơng 2

Bài toán khai phá luật kết hợp truyền thống có nhiều ứng dụng, tuy vậy do tập mục thường xuyên chỉ mang ngữ nghĩa thống kê nên mô hình bài toán này chỉ đáp ứng được phần nào nhu cầu ứng dụng thực tiễn. Nhằm khắc phục hạn chế của bài toán truyền thống, người ta đã mở rộng nó theo nhiều hướng khác nhau, trong đó có vấn đề khai phá tập mục lợi ích cao. Lợi ích của một tập mục là số đo lợi nhuận mà nó có thể mang lại trong kinh doanh, được tính toán dựa trên giá trị khách quan và giá trị chủ quan của các mục thành viên. Giá trị khách quan của một mục là số đơn vị mục bán được, dữ liệu này có sẵn trong cơ sở dữ liệu. Giá trị chủ quan của một mục là giá trị lợi nhuận mà mỗi đơn vị mục có thể đem lại, theo đánh giá của nhà kinh doanh. Khai phá tập mục lợi ích cao là khám phá tất cả tập mục X đem lại lợi ích u X( ), trong đó  là ngưỡng quy định bởi người sử dụng.

Chương 2 luận văn đã phát biểu bài toán khai phá tập mục lợi ích cao và trình bày ba thuật toán khai phá tập mục lợi ích cao kiểu Apriori là UMining, UMining-H và HUMining.

Nhằm khắc phục những hạn chế của các thuật toán kiểu Apriori, chương 3 sẽ đề cập thuật toán hiệu quả khai phá tập mục lợi ích cao theo hướng không sinh ứng viên: Thuật toán COUI-Mine.

Chƣơng 3

THUẬT TOÁN HIỆU QUẢ KHAI PHÁ TẬP MỤC LỢI ÍCH CAO KIỂU FP-GROWTH

3.1 Mở đầu

Trong các phương pháp khai phá tập mục thường xuyên thì phương pháp nén các giao tác lên cấu trúc cây rồi khai phá cây đó là phương pháp có nhiều ưu điểm và hiệu quả. Tiêu biểu cho hướng tiếp cận này là thuật toán FP-growth sử dụng cấu trúc cây FP (frequent Pattern Tree ) [10] và một cải tiến của nó là thuật toán COFI- tree [5, 6], đã được trình bày lại trong chương 1.

Nhận thấy tính hiệu quả của các thuật toán kiểu FP-growth và ràng buộc lợi ích theo giao tác (TWU) của các tập mục cũng có tính chất phản đơn điệu, các tác giả trong [2] và trong [18] đã đề xuất các thuật toán hiệu quả khai phá tập mục lợi ích cao sử dụng cách biểu diễn dữ liệu bằng cấu trúc cây như thuật toán FP-growth.

Chương 3 này nhằm trình bày thuật toán COUI-Mine khai phá tập mục lợi ích cao kiểu FP-growth, dựa theo tài liệu [2] và [18].

3.2. Thuật toán COUI-Mine

Trong chương 2, ta đã nêu khái niệm lợi ích theo giao tác của một tập mục, gọi

Một phần của tài liệu khai phá tập mục lợi ích cao trong cơ sở dữ liệu lớn (Trang 43 - 74)

Tải bản đầy đủ (PDF)

(74 trang)