Thuật toán COFI-tree

Một phần của tài liệu Khai phá tập mục lợi ích cao sử dụng cấu trúc cây tiền tố (Trang 29 - 92)

Thuật toán Apriori gặp phải hai chi phí lớn:

- Chi phí sinh ra số lượng khổng lồ các tập ứng viên. Ví dụ, nếu có 104 mục thường xuyên thì thuật toán Apriori sẽ cần sinh ra hơn 107

các ứng viên 2-tập mục và thực hiện kiểm tra độ hỗ trợ của chúng.

- Lặp nhiều lần duyệt cơ sở dữ liệu, số lần duyệt cơ sở dữ liệu của thuật toán Apriori bằng độ dài của tập mục thường xuyên dài nhất tìm được. Thuật toán Apriori chỉ thích hợp cho các cơ sở dữ liệu thưa (sparse), với các cơ sở dữ liệu dày (dense) thì thuật toán thực hiện kém hiệu quả.

Để khắc phục nhược điểm trên của thuật toán Apriori. Năm 2003, nhóm tác giả Mohammad El-Hajj và Osmar R.Zaiane ở đại học Alberta Edmonton, Canada đề xuất thuật toán không đệ quy khai phá cây FP-tree (frequent pattern tree) dựa trên cấu trúc cây COFI-tree (Co-Occurrence Frequent Items tree) [8], [9].

2-tập mục Count L2 {A, B} 1 Loại bỏ các 2-tập mục có count < 2 2-tập mục Count {A, C} 2 {A, C} 2 {A, E} 1 {B, C} 2 {B, C} 2 {B, E} 3 {B, E} 3 {C, E} 2 {C, E} 2

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Thuật toán COFI-tree gồm 2 giai đoạn chính. Giai đoạn thứ nhất, xây dựng cây FP-tree. Giai đoạn thứ hai, khai phá cây FP-tree chia thành nhiều bước tương ứng với các mục dữ liệu trong bảng đầu mục của cây FP-tree, mỗi bước sử dụng một cấu trúc dữ liệu phụ trợ là cây COFI-tree của mục dữ liệu đó.

Mỗi nút của cây FP-tree gồm 3 trường: tên mục dữ liệu, độ hỗ trợ và một con trỏ (con trỏ này trỏ đến nút tiếp theo cùng trên trên cây hoặc là null nếu không có). Cây FP-tree có một bảng đầu mục (header table). Mỗi mục của bảng có 3 trường: tên mục dữ liệu, độ hỗ trợ và con trỏ, con trỏ này trỏ đến nút đầu tiên biểu diễn mục dữ liệu này trong cây.

Cây COFI-tree có bảng đầu mục giống như cây FP-tree nhưng các mục dữ liệu có thứ tự ngược lại. Mỗi mục trong bảng đầu mục chứa 3 trường: tên mục dữ liệu, độ hỗ trợ địa phương (số lần xuất hiện của mục dữ liệu trong cây COFI-tree) và con trỏ (trỏ đến nút đầu tiên biểu diễn mục dữ liệu này trong cây). Một danh sách liên kết được duy trì giữa các nút cùng tên để thuận lợi cho quá trình khai phá. Mỗi nút của cây COFI-tree có 4 trường: tên mục dữ liệu, hai biến s và p (biến s biểu diễn độ hỗ trợ của nút, biến p cho biết số lần nút đó đã tham gia tạo mẫu), con trỏ (trỏ đến nút tiếp theo cùng tên trên cây).

Ta minh họa thuật toán COFI-tree qua xét cơ sở dữ liệu bảng 1.2 với ngưỡng độ hỗ trợ minsup=3.

Bảng 1.5: Cơ sở dữ liệu giao tác minh họa thực hiện thuật toán COFI-tree.

TID A B C D E F T1 0 1 1 1 0 0 T2 0 1 1 1 0 0 T3 1 1 0 1 0 0 T4 0 0 1 1 0 1 T5 0 0 1 1 0 0 T6 1 0 1 0 0 0 T7 1 1 1 0 0 1 T8 1 0 1 0 0 0 T9 1 1 0 0 1 0 T10 1 0 0 0 1 0 T11 1 1 1 0 0 0

Giai đoạn 1: Xây dựng cây FP-tree.

Duyệt cơ sở dữ liệu lần thứ nhất tính được độ hỗ trợ của mỗi mục dữ liệu, loại bỏ các mục dữ liệu không thỏa mãn ngưỡng minsup = 3, sắp các mục còn lại theo thứ tự giảm dần của độ hỗ trợ, nhận được bảng 1.7.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Bảng 1.6: Các mục dữ liệu và độ hỗ trợ. Mục dữ liệu Độ hỗ trợ A 7 B 6 C 8 D 5 E 2 F 2

Bảng 1.7: Các mục dữ liệu thường xuyên đã sắp thứ tự. Mục dữ liệu Độ hỗ trợ

C 8

A 7

B 6

D 5

Duyệt cơ sở dữ liệu lần 2, mỗi giao tác chọn ra các mục dữ liệu thường xuyên, sắp chúng theo thứ tự giảm dần của độ hỗ trợ và chèn lên cây. Hình 1.8 biểu diễn cây FP-tree.

Giai đoạn 2: Khai phá cây FP-tree.

Xét lần lượt các mục dữ liệu từ dưới lên trong bảng đầu mục của cây FP-tree, với mỗi mục dữ liệu, xây dựng cây COFI-tree của nó, khai phá cây này tìm các mẫu thường xuyên, sau khi khai phá xong, loại bỏ cây đó và xây dựng cây COFI-tree cho mục dữ liệu tiếp theo. Minh họa thuật toán qua xét mục dữ liệu đầu tiên D như sau:

- Xây dựng cây COFI-tree của mục D (gọi cây này là D-COFI-tree)

Có 3 nút trên cây có nhãn D, từ các nút này đi lên gốc tìm được 3 đường đi: (D:2, B:2, C:8), (D:1, B:2, A:3) và (D:2, C:8), các đường đi này xác định các mẫu dữ liệu với độ hỗ trợ bằng độ hỗ trợ của nút đầu D, tức là: DBC:2, DBA:1 và DC:2. Xây dựng cây D-COFI-tree từ các mẫu này. Hình 1.9 biểu diễn cây D-COFI-tree.

Bảng 1.8: Các mục dữ liệu trong giao tác sắp xếp giảm dần theo độ hỗ trợ.

TID Các mục dữ liệu

T1 C, B, D

T2 C, B, D

T3 A, B, D (adsbygoogle = window.adsbygoogle || []).push({});

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ T5 C, D T6 C, A T7 C, A, B T8 C, A T9 A, B T10 A T11 C, A, B

Hình 1.8: Cây FP-tree của CSDL bảng 1.5.

Hình 1.9: Cây COFI-tree của mục D.

- Khai phá cây D-COFI-tree: xét lần lượt các mục dữ liệu trong bảng đầu

mục, bắt đầu từ mục có độ hỗ trợ lớn nhất là C, cuối cùng đến mục có độ hỗ trợ nhỏ nhất A. Mục C có 2 nhánh trên cây là (C:2, B:3, D:5) và (C:2, D:5).

Nhánh thứ nhất tạo ra mẫu CBD với độ hỗ trợ là s – p = 2 – 0 = 2 (s và p là hai biến tại nút nhãn C). Thuật toán tăng giá trị biến p của tất cả các nút trên đường đi này lên 2. Mẫu CBD: 2 và tất cả các mẫu con có chứa D của nó được cất vào danh sách ứng viên của mục D là CBD:2, CD:2, BD:2 (bước 1).

Bảng đầu mục Mục DL Độ hỗ trợ Con trỏ C 8 A 7 B 6 D 5 Gốc C 8 A 4 B 2 D 2 D 2 D 1 B 2 A 3 B 2 Bảng đầu mục Mục DL Độ hỗ trợ Con trỏ B 3 A 1 C 4 D (5 0) B (3 0) C (2 0) A (1 0) C (2 0)

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Nhánh thứ hai nhận được mẫu CD:2 và kết nạp nó vào danh sách ứng viên. Trong danh sách ứng viên đã có mẫu CD:2 nên chỉ điều chỉnh độ hỗ trợ của mẫu này thành CD:4 và danh sách ứng viên trở thành CBD:2, CD:4, BD:2. Tăng biến p của các nút trên đường đi này lên 2 đơn vị (bước 2).

Tương tự, xét tiếp mục B, có một nhánh là BD nên sinh ra mẫu BD:1, kết nạp vào danh sách các ứng viên được CBD:2, CD:4, BD:3 (bước 3).

Mục A còn lại trong bảng đầu mục bỏ qua vì có độ hỗ trợ nhỏ hơn minsup

(bước 4). Hình 1.10 minh họa các bước khai phá cây D-COFI-tree.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Thuật toán duyệt qua các mẫu trong danh sách ứng viên, loại các mẫu không thỏa mãn ngưỡng hỗ trợ và nhận được các mẫu thường xuyên là CD:4, BD:3. Cây D-COFI-tree được loại bỏ và tiếp tục xây dựng cây cho mục dữ liệu tiếp theo. Chi tiết về cây COFI-tree có thể tham khảo trong [9].

1.7.4. Mở rộng bài toán khai phá tập mục thƣờng xuyên

Mô hình khai phá tập mục thường xuyên cơ bản có nhiều ứng dụng trong thực tế nhưng nó có những hạn chế, không đáp ứng đầy đủ yêu cầu của người sử dụng. Ràng buộc về độ hỗ trợ của tập mục thường xuyên chủ yếu mang ngữ nghĩa thống kê, không phản ánh được vai trò khác nhau của các thuộc tính cũng như đặc tính dữ liệu vốn có của chúng trong cơ sở dữ liệu.

Để đáp ứng yêu cầu của thực tiễn, bài toán khai phá tập mục thường xuyên đã có nhiều cách thức mở rộng và ứng dụng.

Một hướng mở rộng bài toán có nhiều ứng dụng là quan tâm đến cấu trúc dữ liệu và mức độ quan trọng khác nhau của các mục dữ liệu, các thuộc tính trong cơ sở dữ liệu. Một số mô hình mở rộng bài toán đã được nghiên cứu là:

- Quan tâm đến mức độ quan trọng khác nhau của các mục dữ liệu bằng cách gán cho mỗi mục một giá trị được gọi là trọng số. Độ hỗ trợ và độ tin cậy của luật kết hợp khi đó lần lượt trở thành độ hỗ trợ và độ tin cậy có trọng số. Luật kết hợp có độ hỗ trợ và độ tin cậy trọng số hóa được gọi là luật kết hợp có trọng số. Các thuật toán MINWAL(O), MINWAL(W) giải quyết vấn đề này.

- Quan tâm đến các kiểu thuộc tính khác nhau trong cơ sở dữ liệu như nhị phân, đa phân, định lượng. Luật kết hợp khi đó được gọi là luật kết hợp định lượng. Để tìm các luật kết hợp định lượng người ta đưa bài toán về dạng nhị phân bằng cách phân khoảng các giá trị thuộc tính, sau đó có thể sử dụng các thuật toán khai phá luật kết hợp nhị phân đã biết.

- Chú ý đến cả cấu trúc dữ liệu lẫn mức độ quan trọng khác nhau của các thuộc tính trong cơ sở dữ liệu. Theo hướng này, nhiều nhà nghiên cứu đề xuất các

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

mô hình mở rộng: khai phá tập mục cổ phần cao, đánh giá sự đóng góp của tập mục trong tổng số các mục dữ liệu của cơ sở dữ liệu; khai phá tập mục lợi ích cao, đánh giá lợi ích mà tập mục mang lại trong cơ sở dữ liệu. Trong [11], [12], [13], các tác giả đề xuất mô hình khai phá tập mục lợi ích cao và các thuật toán UMining, UMining-H để khai phá.

1.8. Kết luận chƣơng 1

Chương 1 trình bày chi tiết các khái niệm cơ bản, kiến trúc, quá trình khai phá dữ liệu, bài toán khai phá tập mục thường xuyên và hai thuật toán điển hình trong khai phá tập mục thường xuyên là thuật toán Apriori và COFI-tree. Thuật toán Apriori tiêu biểu cho phương pháp sinh ra các tập mục ứng viên rồi duyệt cơ sở dữ liệu kiểm tra độ hỗ trợ của chúng, thuật toán COFI-tree đại diện cho phương pháp không sinh ra các tập mục ứng viên mà nén cơ sở dữ liệu lên cấu trúc cây, sau đó khai phá cây này để tìm các tập mục thường xuyên. Trong chương 2 sẽ trình bày các khái niệm cơ bản về tập mục lợi ích cao, cấu trúc cây tiền tố và các thuật toán khai phá tập mục lợi ích cao sử dụng cấu trúc cây tiền tố.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

CHƢƠNG 2: KHAI PHÁ TẬP MỤC LỢI ÍCH CAO SỬ DỤNG CẤU TRÚC CÂY TIỀN TỐ

2.1. Mở đầu

Bài toán truyền thống khai phá luật kết hợp do R. Agrawal, T. Imielinski và A. N. Swami đề xuất lần đầu tiên vào năm 1993 đã được nhiều nhà nghiên cứu quan tâm. Mục đích của nó là phát hiện các tập mục thường xuyên, từ đó tạo các luật kết hợp. Bài toán truyền thống này 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. Người kinh doanh quản lý quan tâm nhiều hơn đến việc phát hiện những khách hàng đem lại lợi nhuận cao. Trong thực tế, có những nhóm mặt hàng có thể bán được rất ít nhưng mang lại lợi ích lớn, ngược lại có những nhóm mặt hàng thường xuyên bán được nhưng lợi ích mang lại không cao.

Gần đây, nhằm khắc phục hạn chế của bài toán cơ bản khai phá luật kết hợp, người ta đã mở rộng nó theo nhiều hướng khác nhau. Trong [11], [12], [13], H. Yao, H. J. Hamilton và cộng sự đã đề xuất bài toá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. (adsbygoogle = window.adsbygoogle || []).push({});

Có thể coi bài toán cơ bản khai phá tập mục thường xuyên là trường hợp đặc biệt của bài toán khai phá tập mục lợi ích cao, trong đó tất cả các mục đều có giá trị khách quan bằng 0 hoặc 1 và giá trị chủ quan bằng 1.

Các thuật toán khám phá tập mục thường xuyên được xây dựng theo phương pháp tìm kiếm từng bước. Cơ sở của các thuật toán này là tính chất Apriori hay còn gọi là tính chất phản đơn điệu (anti monotone) của tập mục thường xuyên. Tính chất đó là “tập con khác rỗng của một tập mục thường xuyên phải là tập thường xuyên”.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Điều này có nghĩa các (k+1)-tập mục thường xuyên chỉ có thể sinh ra từ các k-tập mục thường xuyên. Tính chất Apriori cho phép loại bỏ được các tổ hợp mục không thường xuyên ra khỏi không gian tìm kiếm tại mỗi bước. Đáng tiếc là các tập mục lợi ích cao không thỏa mãn tính chất Apriori. Do đó, việc rút gọn không gian tìm kiếm, phát hiện tập mục lợi ích cao không thể thực hiện được như trong khai phá tập mục thường xuyên.

Chương này trình bày bài toán khai phá tập mục lợi ích cao và phương pháp khai phá dựa trên cấu trúc cây tiền tố.

2.2. Bài toán khai phá tập mục lợi ích cao

Phần này nêu một số định nghĩa và thuật ngữ mô tả bài toán khai phá tập mục lợi ích cao theo [11], [12], [13],

Cho tập các mục (item) I i i1, ,...2 in . Một giao tác (transaction) T là một tập con của I T, I. Cơ sở dữ liệu là một tập các giao tác DB T T1, 2,...,Tm . Mỗi giao tác được gán một định danh TID. Một tập mục con X I, gồm k mục phân biệt được gọi là một k-tập mục. Giao tác T gọi là chứa tập mục X nếu X T.

Định nghĩa 2.1: Ta gọi giá trị của mục ip trong giao tác Tq ( giá trị tại cột ip hàng

q

T của cơ sở dữ liệu) là giá trị khách quan (objective value) của mục ip tại giao tác

,

q

T ký hiệu là o i T( ,p q).

Thông thường giá trị khách quan của mục dữ liệu là số tự nhiên (như số lượng đã bán của một mặt hàng trong giao tác).

Định nghĩa 2.2: Ta gọi giá trị do nhà kinh doanh gán cho mục ip trong cơ sở dữ liệu, dựa trên đánh giá lợi nhuận mà mỗi đơn vị mục dữ liệu có thể đem lại, là giá trị chủ quan (subjective value) của mục ip và ký hiệu là s i( ).p

Giá trị chủ quan của các mục thường được cho trong một bảng kèm theo cơ sở dữ liệu và gọi là bảng lợi ích (utility table). Chẳng hạn, cơ sở dữ liệu các giao tác và bảng lợi ích ở bảng 2.1 và bảng 2.2, giá trị khách quan của mục B tại giao tác T2

o(B,T2) 8, giá trị chủ quan của B là s(B) 4.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Định nghĩa 2.3: Ký hiệu x là giá trị khách quan, y là giá trị chủ quan của mụ . Một hàm 2 biến f(x,y):R R R, đơn điệu tăng theo x và theo y, được gọi là hàm lợi ích.

Thông thường hàm lợi ích được xác định như sau: f x y( , ) x y.

Định nghĩa 2.4: Cho hàm lợi ích f x y( , ). Lợi ích của mục ip tại giao tác Tq, ký hiệu u(ip,Tq) là giá trị của hàm f(x,y) tại o(ip,Tq) và s(ip), tức là

( ,p q) ( ( ,p q), ( )).p

u i T f o i T s i

Định nghĩa 2.5: Cho tập mục X chứa trong giao tác Tq. Lợi ích của tập mục X tại giao tác Tq, ký hiệu u X T( , q), là tổng lợi ích của tất cả các mục ip thuộc X tại giao tác Tq, tức là ( , ) ( , )

Một phần của tài liệu Khai phá tập mục lợi ích cao sử dụng cấu trúc cây tiền tố (Trang 29 - 92)