MỘT SỐ THUẬT TOÁN KHAI PHÁ TẬP MỤC HỮU ÍCH CAO

Một phần của tài liệu Ứng dụng thuật toán EFIM để khai phá tập mục hữu ích cao từ cơ sở dữ liệu bán hàng tại siêu thị co opmart quảng ngãi (Trang 32)

7. Bố cục luận văn

2.4.MỘT SỐ THUẬT TOÁN KHAI PHÁ TẬP MỤC HỮU ÍCH CAO

2.4.1. Thuật toán Two-Phase

Thuật toán hai pha (Two-Phase) là một trong các thuật toán khai phá tập mục hữu ích cao. Thuật toán này tỉa các tập ứng viên hiệu quả và đơn giản hóa việc tính toán giá trị hữu ích nhằm giảm không gian tìm kiếm và giảm chi phí bộ nhớ. Thuật toán gồm 2 giai đoạn:

- Giai đoạn 1: Tìm các tập ứng viên có giá trị hữu ích cao bằng việc tính giá trị trọng số giao tác TWU để tỉa không gian tìm kiếm. Nếu tập mục có giá trị trọng số giao tác lớn hơn ngưỡng tối thiểu do người dùng quy định thì đó là tập mục hữu ích cao và ngược lại.

các tập ứng viên được tính trong giai đoạn 1 để loại bỏ những tập mục có giá trị hữu ích thấp.

Tuy nhiên, thuật toán hai pha phát sinh ra các tập ứng viên với số lượng lớn nên đòi hỏi phải duyệt dữ liệu nhiều lần để tìm tập mục hữu ích cao.

2.4.2. Thuật toán FHM

Để tránh phát sinh các tập ứng viên trong thuật toán Two-Phase, nhiều thuật toán mới được đề xuất để khai phá các tập mục hữu ích cao trong giai đoạn 1, thời gian thực hiện nhanh hơn 10 và 100 lần so với thuật toán hai pha như thuật toán HUI-Miner, thuật toán FHM nhanh gấp 6 lần so với HUI-Miner.

Thuật toán FHM (Fast High-utility Miner) dùng để khai phá tập mục hữu ích cao do V. Philippe Fournier và các cộng sự đề xuất năm 2014 [15]. Tác giả đưa ý tưởng thuật toán:

- Giá trị đầu vào là CSDL giao tác D và ngưỡng hữu ích tối thiểu do người dùng quy định.

- Đầu ra: Các tập mục có giá trị hữu ích cao

- Thuật toán sẽ tính giá trị TWU cho các mục thông qua việc quét CSDL D, sau đó tập hợp các mục có TWU lớn hơn ngưỡng hữu ích tối thiểu minutil, ký hiệu I’ và sắp xếp giá trị TWU của mỗi mục theo thứ tự tăng dần. Quét CSDL D để xây dựng giá trị hữu ích của các mục trong I’ và cấu trúc EUCS (Estimated Utility Co- Occurrence Structure).

2.5. THUẬT TOÁN EFIM

Năm 2015, các nhà khoa học S. Zida, P. F. Viger, J. C-W. Lin, C-W. Wu, V. S. Tseng [14] đề xuất thuật toán một pha có tên EFIM (EFficient high-utility Itemset Mining). Thuật toán EFIM đã cải thiện đáng kể về bộ nhớ và thời gian thực hiện so với thuật toán trước đó. Bốn ý tưởng để thiết kế thuật toán EFIM:

- Thiết kế thuật toán một pha để tránh phát sinh các tập ứng viên trong thuật toán hai pha.

- Sử dụng hai kỹ thuật: High-utility Database Projection(HDP) và High-utility Transaction Merging (HTM) tương ứng thực hiện CSDL tham chiếu và hợp nhất

các giao tác giống nhau trong CSDL tham chiếu. Hai kỹ thuật này nhằm giảm kích thước và giảm chi phí quét CSDL.

- EFIM tính toán giá trị hữu ích của tập mục dựa vào hai giá trị ràng buộc giá trị hữu ích cây con và giá trị hữu ích cụ bộ để tỉa không gian tìm kiếm.

- Sử dụng mảng để tính toán các ràng buộc cho tất các phần mở rộng của tập mục.

Sau đây là một số định nghĩa:

2.5.1. Một số khái niệm

- Độ hữu ích giao tác (Transaction Utility)

Độ hữu ích của giao tác Td, ký hiệu tu(Td) là tổng giá trị hữu ích của tất cả các mục chứa trong giao tác đó.

𝑡𝑢(𝑇𝑑) = ∑𝑖𝑗∈𝑇𝑑𝑢(𝑖𝑗, 𝑇𝑑)

Ví dụ: Trong bảng 2.1 và bảng 2.2 tính độ hữu ích của giao tác T1, T2 trong trong CSDL giao tác D.

tu(T1) = u(A, T1) + u(C, T1) + u(D, T1) = 1*5 + 1*1 + 1*2 = 8

tu(T2) = u(A, T2) + u(C, T2) + u(E, T2) + u(G, T2) = 2 * 5 + 6 + 2 * 3 + 5 = 27

Bảng 2.3. Bảng độ hữu ích các giao tác trong CSDL

TID Transactions Transaction Utitily

T1 (A,1) (C,1) (D,1) 8

T2 (A,2) (C,6) (E,2) (G,5) 27

T3 (A,1) (B,2) (C,1) (D,6) (E,1) (F,5) 30 (adsbygoogle = window.adsbygoogle || []).push({});

T4 (B,4) (C,3) (D,3) (E,1) 20

T5 (B,2) (C,2) (E,1) (G,2) 11

- Độ hữu ích trọng số giao tác (Transaction Weighted Utilization - TWU)

Độ hữu ích trọng số giao tác của một tập mục X trong CSDL giao tác D, ký hiệu TWU(X) là tổng giá trị hữu ích của tất cả các giao tác chứa X trong D.

TWU(X) = ∑ tu(Td)

Td∈D XTd

Ví dụ: Tính độ hữu ích trọng số của mục A trong bảng 2.1 và bảng 2.2 TWU(A) = tu(T1) + tu(T2) + tu(T3) = 65.

Giá trị TWU của các mục thể hiện bảng 2.4.

Bảng 2.4. TWU của các mục trong CSDL giao tác D

Item A B C D E F G

TWU 65 61 96 58 88 30 38

- Tính chất 1: Cho X là tập mục, TWU(X) lớn hơn hoặc bằng giá trị hữu ích của X và các tập mục chứa X, tức là TWU(X) ≥ u(X) và TWU(X) ≥ u(Y), với (∀Y  X) [8].

- Tính chất 2:Nếu tập mục X có giá trị TWU(X) nhỏ hơn độ hữu ích tối thiểu minutil, thì tất cả các tập mục chứa X là tập mục hữu ích thấp [4].

Ví dụ: Với minutil = 35, trong bảng 2.4 mục F và các tập mục chứa F đều là tập mục hữu ích thấp.

- Giá trị hữu ích còn lại (Remaining utility)

Gọi ≻ là thứ tự sắp xếp bất kỳ các mục của I trong CSDL D (ví dụ theo alpha b hoặc theo giá trị TWU), X là tập mục trong giao tác Td. Giá trị hữu ích còn lại của X trong một giao tác Td, ký hiệu re(X, Td) sau khi sắp xếp theo ≻, được tính như sau:

re(X, Td) = ∑i∈Td ˄ i≻x,∀x∈X u(i, Td)

Ví dụ: Dựa vào bảng 2.1 và bảng 2.2 tính re của {A, E} trong giao tác T2 Gọi ≻ sắp xếp theo thứ tự alpha b ta có: (G ≻ F ≻ E ≻ D ≻ C ≻ B ≻ A) Giao tác T2 = {(A,2)(C,6)(E,2)(G,5)}

Sau khi sắp xếp các mục trong T2 theo ≻, T2= {G, E, C, A} re({A, E}, T2) = u(G, T2) = 5

Gọi ≻ là thứ tự sắp xếp các mục của I, thứ tự sắp xếp tất cả các mục trong không gian tìm kiếm là 2I được biểu diễn dưới dạng cây. Trong không gian tìm kiếm, thuật toán EFIM sử dụng phương pháp tìm kiếm theo chiều sâu: Đầu tiên đào sâu từ gốc (rỗng) tiếp đến là đào sâu các tập mục trên cây con theo thứ tự ≻.

Ví dụ: Xét I = {A, B, C, D} và cây tìm kiếm được biểu diễn như sau:

Hình: 2.1. Biểu diễn cây tìm kiếm của I

Một số định nghĩa tìm kiếm các tập mục theo chiều sâu:

- Các mục mở rộng từ tập mục:

Gọi α là tập mục, E(α) là tập hợp tất cả các mục có thể mở rộng từ tập mục α để tìm kiếm theo chiều sâu, tức là:

E(α) = {z | (zI)  (z ≻ x), x α} Ví dụ cho α = C thì E(α) = {D, E, F, G}

- Mục đơn mở rộng của tập mục:

Gọi α là tập mục, Z là mục đơn mở rộng của α nếu Z = α  {z}, z  E(α) Ví dụ: Xét CSDL D, bảng 2.1 bảng 2.2. Gọi ≻ sắp xếp theo thứ tự alpha. Cho α = D, E(α) = {E, F, G} ta có mục đơn mở rộng của α: {D, E}, {D, F}, {D, G}

kỹ thuật mới gọi là CSDL tham chiếu – High utility Database Projection (HDP). Kỹ thuật này sẽ loại bỏ tất cả các mục không phải tập mục mở rộng của α khi quét CSDL để tính giá trị hữu ích của tập mục trên cây con.

- Giao tác tham chiếu – Projected transaction (adsbygoogle = window.adsbygoogle || []).push({});

Tham chiếu của giao tác T lên tập mục α ký hiệu là α – T và được định nghĩa như sau:

α – T = {i | i ∈ T ∧ i ∈ E(α)}

- Cơ sở dữ liệu tham chiếu – Projected database

Tham chiếu của một CSDL D lên tập mục α, ký hiệu α – D và được định nghĩa như sau:

α – D = {α – T | (T D)  α – T  } Ví dụ: Xét CSDL D và bảng 2.1, cho α = {B}, tính α – D, ≻ sắp xếp theo thứ tự alpha b. Ta có: + α – D = {α – T3, α – T4, α – T5} + E(α) = {C, D, E, F, G} + α – T3 = {C, D, E, F} + α – T4 ={C, D, E} + α – T5 ={C, E, G}

Thuật toán EFIM đã đưa một kỹ thuật hiệu quả là hợp nhất giao tác – High utilty Transaction Merging (HTM). HTM sẽ xác định các giao tác giống nhau và thay thế chúng bằng một giao tác trong CSDL tham chiếu.

Một giao tác Ta được gọi là giống giao tác Tb nếu các mục trong Ta giống các mục trong giao tác Tb, tức là Ta = Tb. Hai giao tác giống nhau không nhất thiết phải cùng giá trị hữu ích nội.

- Hợp nhất giao tác – Transaction merging

Hợp nhất giao tác là thay thế một tập các giao tác giống nhau T1, T2, … Tm trong CSDL D bằng một giao tác mới TM = T1 = T2 = … = Tm.

hiệu quả không cao. Vì vậy cần phải hợp nhất các giao tác trong CSDL tham chiếu.

- Hợp nhất giao tác tham chiếu - Projected transaction merging

Hợp nhất giao tác tham chiếu là thay thế một tập các giao tác giống nhau T1, T2, … Tm trong CSDL tham chiếu α – D bằng một giao tác mới TM = T1 = T2 = … = Tm, với số lượng của mỗi mục (iTM) bằng tổng giá trị hữu ích nội trong các giao tác, tức là: 1 ( , ) ( , ) m M k k q i T q i T   

Ví dụ: Xét CSDL D, bảng 2.1, cho α = {C}, ≻ sắp xếp theo thứ tự alpha b. + α – D = {α – T1, α – T2, α – T3, α – T4, α – T5} + E(α) = {D, E, F, G} + α – T1 = {D} + α – T2 = {E, G} + α – T3 = {D, E, F} + α – T4 = {D, E} + α – T5 = {E, G}

Thay giao tác α – T2 và giao tác α – T5 bằng giao tác TM = {E, G}. Với q(E, TM) = 2 + 1 = 3, q(G, TM) = 5 + 2 = 7

- Thứ tự các giao tác - Total order on transactions

Gọi ≻T là tập các giao tác sắp xếp theo thứ tự từ trước ra sau. Xét 2 giao tác: Ta = {i1, i2, ..., im} và Tb = {j1, j2, ..., jk}. Thứ tự sắp xếp các giao tác ≻T được xác định bằng 4 trường hợp:

+ Trường hợp 1: Tb ≻Ta nếu cả hai giao tác Tb, Ta là như nhau và TID của Tb lớn hơn TID của Ta

+ Trường hợp 2: Tb ≻T Ta nếu k > m và im − x = jk − x với 0 ≤ x < m

+ Trường hợp 3: Tb ≻T Ta nếu 0 ≤ x < min(m, k) làm cho jk − x ≻ im − x và im –y = jk – y với x <y < min(m, k)

+ Trường hợp 4: Ta≻T Tb

- Xét Tx = {b, c}, Ty = {a, b, c} thoả mãn trường hợp 2: Ty ≻T Tx nếu: 3 > 2 với 0 ≤ x < 2 + Xét x = 0 thì i2 = j3 tức là c = c

+ Xét x = 1 thì i1 = j2 tức là b = b Vậy Ty≻T Tx

Tính chất 3: Gọi ≻T là thứ tự sắp xếp các giao tác trong CSDL và tập mục α. Các giao tác giống nhau xuất hiện thường xuyên trong CSDL tham chiếu α – D.

Ngoài các kỹ thuật giảm chi phí CSDL, một vấn đề quan trọng khác là thiết kế cơ chế cắt tỉa các tập mục trong không gian tìm kiếm. Thuật toán EFIM đã dựa vào hai giá trị hữu ích mới của tập mục đó là giá trị hữu ích của cây con (Sub-tree utility) và giá trị hữu ích cục bộ (Local utility).

Hai ràng buộc này được tính đối với nhánh của tập mục α trong cây tìm kiếm, một số nhánh của cây sẽ được bỏ qua nếu không thõa hai ràng buộc và tập trung đào sâu các nhánh cây phù hợp hai ràng buộc. Điều này làm giảm quá trình tìm kiếm, tiết kiệm thời gian mà vẫn đảm bảo tính đúng đắn của thuật toán.

- Giá trị hữu ích cục bộ - Local utility

Cho α là tập mục và z là mục, zE(α). Giá trị hữu ích cục bộ z đối với α, ký hiệu lu(α, z) được tính như sau:

( {z}) ( , ) [ ( , ) ( , )] T g lu z u T re T         

Ví dụ: Xét CSDL D, bảng 2.1 và bảng 2.2. Cho α = {A}, tính lu(α, C), lu(α, D) và lu(α, E).

Gọi ≻ thứ tự sắp xếp các mục trong I, α = {A} suy ra E(α) = {B, C, D, E, F, G} lu(α, C) = u(α, T1) + re(α, T1) + u(α, T2) + re(α, T2) + u(α, T3) + re(α, T3) lu(α, D) = u(α, T1) + re(α, T1) + u(α, T3) + re(α, T3) (adsbygoogle = window.adsbygoogle || []).push({});

lu(α, E) = u(α, T2) + re(α, T2) + u(α, T3) + re(α, T3) re(α, T1) = u(C, T1) + u(D, T1) = 3

re(α, T2) = u(C, T2) + u(E, T2) + u(G, T2) = 17

re(α, T3) = u(B, T3) + u(C, T3) + u(D, T3) + u(E, T3) + u(F, T3) + u(G, T3) = 25 Vậy lu(α, C) = 8+ 27+ 30 = 65, lu(α, D) = 38, lu(α, E) = 57.

Định lý 1: Gọi α là tập mục, mục z  E(α). Nếu giá trị hữu ích cục bộ z đối với α nhỏ hơn ngưỡng hữu ích tối thiểu, lu(α, z) < minutil thì tất cả các mục mở rộng của α chứa z là tập mục hữu ích thấp. Nói cách khác z bị loại bỏ ra khỏi tất cả nhánh của tập mục α [14].

Để tiếp tục giảm cắt tỉa, thuật toán sử dụng một ràng buộc có tên sub-tree utility:

- Giá trị hữu ích cây con – Sub-tree utility

Cho α là tập mục và z là mục có thể mở rộng từ tập mục α để tìm kiếm theo chiều sâu với z  E(α). Giá trị hữu ích cây con z đối với α, ký hiệu su(α, z) được định nghĩa như sau:

( {z}) ( {z}) ( , ) [ ( , ) ( , ) ( , )] T g i T i E su z u T u z T u i T               

Ví dụ: Xét CSDL D, bảng 2.1 và bảng 2.2. Cho α = {A}, tính su(α, C), su(α, D) và su(α, E).

su(α, C) = u(α, T1) + u(C, T1) + u(D, T1) + u(α, T2) + u(C, T2) + u(EG, T2) + u(α, T3) + u(C, T2) + u(EG, T3) = (5 + 1+ 2) + (10 + 6 + 11) + (5 + 1 + 20) = 61

Tương tự, su(α, D) = 25 và su(α, E) = 34

Tính chất 4: Gọi α là tập mục, mục z  E(α), giá trị su(α, z) lớn hơn hoặc bằng giá trị hữu ích của mục mở rộng của α, tức là su(α, z) ≥ u(α, z).

Định lý 2: Gọi α là tập mục, mục z  E(α). Nếu giá trị hữu ích cây con z đối với α nhỏ hơn ngưỡng hữu ích thối thiểu, su(α, z) < minutil thì tất cả phần mở rộng α  {z} là tập mục hữu ích thấp [14].

Xét ví dụ trên với minutil = 30 thì α  {D} là tập mục hữu ích thấp.

- Các mục chính và phụ - Primary and secondary items

Gọi α là tập mục, các mục chính của α là tập hợp các mục, ký hiệu Primary(α), tính theo công thức:

Primary(α) = {z | z  E(α)  su(α, z) ≥ minutil}.

Các mục phụ của α là tập hợp các mục, ký hiệu Secondary(α), được tính theo công thức sau:

Vì lu(α, z) ≥ su(α, z) nên Primary(α) ⊆ Secondary(α).

Ví dụ: Cho α = {A}, tính được Primary(α) = {C, E} và Secondary(α) ={C, D, E}, có nghĩa trong hình 2.1 chỉ nên đào sâu nhánh {AC} và {AE} và đào sâu 3 nút C, D, E.

Thuật toán EFIM sử dụng phương pháp khác để tính các ràng buộc có hiệu quả cả về thời gian và không gian gọi là Fast Utility Counting (FUC) bằng cách sử dụng mảng utility-bin.

- Cấu trúc mảng – Utility-bin

Gọi I là tập hợp các mục xuất hiện trong CSDL D, U là một mảng cấu trúc utility-bin, với chiều dài mảng | I |. Mỗi mục trong mảng ký hiệu U[z], z  I, giá trị nhập vào của mỗi mục trong mảng là giá trị hữu ích của mục (giá trị khởi tạo là 0).

Một mảng cấu trúc có thể được sử dụng để tính toán hiệu quả các ràng buộc sau [14]:

- Tính giá trị TWU của tất cả các mục: Cho mảng khởi tạo U, mỗi giao tác T trong mảng U[z], với zT được cập nhật U[z] = U[z] + TU(T). Quét CSDL lần cuối cho mỗi mục kI, các phần tử U[k] sẽ tính giá trị TWU(k).

- Tính giá trị hữu ích cây con đối với tập mục α: Cho mảng cấu trúc utility-bin dùng để tính giá trị hữu ích cây con sub-tree, mảng U được khởi tạo có giá trị 0. Tiếp theo giá trị mảng mỗi giao tác T là U[z] với z = T  E(α) được cập nhập theo công thức sau: ( ) [ ] [ ] ( , ) ( , ) ( , ) i T i z i Secondary U z U z u T u z T u i T           

Giao tác cuối cùng được tính: U[k] = su(α, k), kE(α)

- Tính giá trị hữu ích cục bộ đối với tập mục α: Mảng U được khởi tạo có giá trị 0. Tiếp theo giá trị mảng mỗi giao tác T là U[z], với z = T  E(α) được cập nhập theo công thức sau: U[z] = U[z] + u(α, T) + re(α, T). Giao tác cuối cùng được tính U[k] = lu(α, k), kE(α).

Ví dụ: Dựa vào dữ liệu trong bảng 2.1 và bảng 2.2, tính giá trị TWU bằng Utility-bin.

Bảng 2.5. Giá trị TWU bằng utility-bin (adsbygoogle = window.adsbygoogle || []).push({});

U[A] U[B] U[C] U[D] U[E] U[F] U[G]

Khởi tạo 0 0 0 0 0 0 0 T1 8 0 8 8 0 0 0 T2 35 0 35 8 27 0 27 T3 65 30 65 38 58 30 27 T4 65 50 85 58 77 30 27 T5 65 61 96 58 88 30 38

2.5.2. Thuật toán EFIM

Một phần của tài liệu Ứng dụng thuật toán EFIM để khai phá tập mục hữu ích cao từ cơ sở dữ liệu bán hàng tại siêu thị co opmart quảng ngãi (Trang 32)