You are on page 1of 8

Kỷ yếu Hội nghị Quốc gia lần thứ … về Nghiên cứu cơ bản và ứng dụng Công Nghệ thông

tin (FAIR); …, ngày …/…/…

MỘT THUẬT TOÁN HIỆU QUẢ KHAI THÁC


LUẬT KẾT HỢP HỮU ÍCH CAO DỰA TRÊN DÀN
Trần Lệ Quyên1, Nguyễn Thị Thúy Loan2,Võ Đình Bảy3
1
Tổ tin học, Trường THPT Chuyên Bạc Liêu
2
Khoa Công nghệ thông tin, Đại học Quốc tế, VNU-HCM
3
Khoa Công nghệ thông tin, Đại học Công nghệ TPHCM
tlquyen083@gmail.com; nttloan@hcmiu.edu.vn;bayvodinh@gmail.com

TÓM TẮT - Trong kinh doanh, doanh nghiệp thường quan tâm đến lợi nhuận của công ty. Bên cạnh việc quan tâm đến giá trị
lợi ích của các mặt hàng, các doanh nghiệp còn quan tâm đến mối quan hệ giữa các mặt hàng để đề ra các chiếc lược kinh doanh
hiệu quả. Ví dụ, họ cần tìm các mặt hàng nào để giới thiệu cho khách hàng, sắp xếp các gian hàng, trưng bày sản phẩm, v..v. Để thu
hút khách hàng và tăng lợi nhuận. Từ đó, các thuật toán khai thác luật kết hợp hữu ích cao từ các tập hữu ích cao được đề xuất. Tuy
nhiên, các thuật toán này thường tốn nhiều thời gian và bộ nhớ do phải trải qua nhiều giai đoạn. Bài báo đề xuất thuật toán LHAR
khai thác tập luật hữu ích cao dựa trên dàn các tập hữu ích cao. Thuật toán đề xuất sinh luật ngay giai đoạn xây dựng dàn nên cải
thiện đáng kể về thời gian khai thác và bộ nhớ sử dụng.
Từ khoá: Tập hữu ích cao, dàn hữu ích cao, luật kết hợp hữu ích cao.
I. GIỚI THIỆU
Bài toán khai thác tập phổ biến (Frequent itemset mining - FIM) chỉ tìm ra các tập phổ biến xuất hiện thường
xuyên trong cơ sở dữ liệu (CSDL) giao dich. Trong mỗi giao dịch của khách hàng, nó chỉ xét mỗi mặt hàng xuất hiện
hay không xuất hiện và xem giá trị lợi nhuận của các mặt hàng là như nhau. Điều này chưa phản ánh đúng thực tế với
cơ sở dữ liệu bán hàng [6]. Ví dụ, xét một giao dịch của một khách hàng trong siêu thị, khách hàng có thể mua 10 chai
nước và 1 chai rượu, số lượng chai nước họ mua nhiều hơn mười lần và giá trị lợi nhuận khi bán một chai rượu sẽ cao
hơn rất nhiều lần khi bán một chai nước, dù việc bán chai nước thì phổ biến hơn so với bán chai rượu. Để giải quyết
vấn đề này, bài toán FIM được đinh nghĩa lại thành bài toán khai thác tập hữu ích cao (High Utility Itemset Mining -
HUIM) để xét trường hợp các tập mục (itemset) có thể xuất hiện nhiều lần trong mỗi giao dịch và mỗi hạng mục (item)
có giá trị lợi ích là khác nhau. Bài toán này được ứng dụng rất nhiều trong thực tế như: phân tích luồng nhấp chuột trên
trang web, tiếp thị chéo trong các cửa hàng bán lẻ và các ứng dụng y học [6]. Mở rộng bài toán HUIM là bài toán khai
thác luật kết hợp hữu ích cao (High Utility Association Rules - HARs) từ các tập hữu ích cao (High Utility Itemsets –
HUIs) để xem xét mối quan hệ giữa các item trong cơ sở dữ liệu (CSDL). Hiện nay bài toán khai thác HARs từ HUIs
vẫn còn là đề tài rất mới, chưa có nhiều nghiên cứu. Hai thuật toán đã được giới thiệu là: HGB-HAR [1] và LARM [2].
LARM đã được chứng minh là hiệu quả hơn HGB-HAR. Tuy nhiên, LARM phải trải qua hai giai đoạn thì mới sinh
được luật. Đồng thời, gian đoạn 1 khi xây dựng dàn trên từng tập HUI có hai quá trình tìm kiếm theo chiều sâu song
song nhau, làm tốn nhiều thời gian và bộ nhớ. Để giải quyết vấn đề này, bài báo đề xuất thuật toán khai thác HARs dựa
trên xây dựng dàn các tập hữu ích cao (High Utility Itemsets Lattice - HUIL), một cải tiến từ thuật toán LARM. Những
đóng góp chính của bài báo như sau:

- Đề xuất thuật toán LHAR (Mining High utility Association Rules based on building Lattice) để khai thác luật
kết hợp hữu ích cao ngay trong quá trình xây dựng dàn.
- Thực nghiệm trên nhiều CSDL chuẩn để kiểm chứng tính hiệu quả của thuật toán LHAR so với LARM.
Phần còn lại của bài báo được tổ chức như sau: Phần 2 trình bày các định nghĩa và khái niệm liên qua đến bài toán
khai thác luật kết hợp hữu ích cao từ tập hữu ích cao. Phần 3 trình bày một số nghiên cứu liên quan đến khai thác HUIs
và khai thác HARs từ HUIs. Phần 4 trình bày thuật toán mới đề xuất khai thác HARs từ HUIs dựa trên xây dựng dàn
HUIL. Phần 5 trình bày kết quả so sánh của thuật toán mới đề xuất LHAR với thuật toán LARM [2]. Kết luận và
hướng phát triển được trình bày ở phần 6.

II. MỘT SỐ ĐỊNH NGHĨA [2]


Định nghĩa 2.1. (CSDL giao dịch). Cho X, I là tập hữu hạn các item sao cho X ⊆ I. Một CSDL giao dịch D là một tập
hữu hạn với nhiều giao dịch D={T 1 , T 2 , … , T n } với mỗi giao dịch Td, Td ⊆ I và Td có một thuộc tính nhận dạng
duy nhất là mã số của giao dịch (Transaction identifier - Tid). Mỗi item ip trong giao dich Td được gắn kết với một số
dương được gọi là số lượng, kí hiệu là q(ip,Td). Mỗi item i p ∈ I trong mỗi giao dịch Td được gắn với một đơn vị lợi ích
là p(ip) được gọi là giá trị lợi nhuận thu được của item ip trong giao dịch Td .
Bảng 1. Bảng ví dụ mẫu về CSDL giao dịch
Tid Chi tiết giao dịch Độ hữu ích của các item
T1 A(4) C(1) E(6) F(2) A(4) C(5) E(1) F(1)
T2 D(1) E(4) F(5) D(2) E(1) F(1)
2 KHAI THÁC LUẬT KẾT HỢP HỮU ÍCH CAO DỰA TRÊN DÀN

T3 B(4) D(1) E(5) F(1) B(4) D(2) E(1) F(1)


T4 D(1) E(2) F(6) D(2) E(1) F(1)
T5 A(3) C(1) E(1) A(4) C(5) E(1)

Ví dụ, bảng 1 là một CSDL có 5 giao dịch T1, T2, ..., T5. Xét giao dịch T2 có 3 item D, E, F với số lượng lần lượt là: 1,
4, 5. Giá trị lợi ích thu được lần lượt là: 2, 1, 1.
Định nghĩa 2.2. (Độ hữu ích của một item trong một giao dịch) Độ hữu ích của một item i trong một giao dịch Tc kí
hiệu là u(i,Tc) được định nghĩa là: u ( i ,T c )= p ( i ) q (i ,T c ) . Nó cho biết lợi nhuận bán món hàng i trong giao dịch Tc.
Ví dụ, độ hữu ích của item D trong giao dịch T2 của CSDL mẫu ở bảng 1 là u(D, T2) = 2 1 = 2.
Định nghĩa 2.3. (Độ hữu ích của một itemset trong một giao dịch) Độ hữu ích của một itemset X trong một giao dịch
Tc được ký hiệu là u(X, Tc) được xác định bởi công thức: u ( X , T c ) = ∑ u (i, T c ) nếu X ⊆ T c Ví dụ, độ hữu ích của
i∈ X
itemset {D, E} của giao dịch T2 trong CSDL bảng 1 là: u({D, E}, T2) = u(D, T2) + u(E, T2) = 2 + 4 = 6.
Định nghĩa 2.4. (Độ hữu ích của một itemset trong CSDL giao dịch) Độ hữu ích của một itemset X trong CSDL D
được tính bằng tổng tất cả các độ hữu ích của X trong tất cả các giao dịch có chứa X: u ( X ) = ∑ u( X ,T d ) Ví
X ⊆ Td Td ∈ D
dụ, trong CSDL bảng 1 thì độ hữu ích của tập item X ={E, F} là u(X) = 31.
Định nghĩa 2.5. (Độ hỗ trợ của một itemset trong CSDL) Số hỗ trợ của một itemset X trong CSDL D xác định tần số
xuất hiện của X trong CSDL. Độ hỗ trợ của X đối với D được định nghĩa là tỷ lệ giữa các giao dịch có chứa X với tổng
số giao dịch trong CSDL. Được kí hiệu là supp(X). Ví dụ, độ hỗ trợ của X = {A, C, E} trong CSDL bảng 1 là
supp({A,C,E}) = 2/5 hay viết ngắn gọn là supp({A,C,E}) = 2.
Định nghĩa 2.6. (Itemset hữu ích cao) Một itemset X gọi là một tập hữu ích cao nếu độ hữu ích u(X) không nhỏ hơn
một ngưỡng giá trị hữu ích tối thiểu min-Util (Minimun Utility Threshold) do người sử dụng định nghĩa (tức là u(X) ≥
min-Util) Nếu không X là tập item hữu ích thấp.
Định nghĩa 2.7. (Độ hữu ích cục bộ của một item trong itemset). Độ hữu ích cục bộ của một item xi trong itemset X, kí
hiệu là luv(xi, X) và được tính bằng tổng độ hữu ích của xi trong tất cả các giao dịch chứa X, được xác định bằng công
thức sau: luv (x i , X )= ∑ u( x i ,t d ) Ví dụ, độ hữu ích cục bộ của item xi = {E} và itemset X = {E, F} trong
X ⊆ t d ⋀ t d ∈D
CSDL bảng 1 là: Luv(xi, X) = 6 + 4 + 5 + 2 = 17.
Định nghĩa 2.8. (Độ hữu ích bộ phận của một itemset in itemset). Giá trị độ hữu ích bộ phận của một itemset X trong
itemset Y, X⊆Y, kí hiệu là luv(X,Y) và được xác định bằng tổng các độ hữu ích của mỗi item xi ∈ X trong Y. Công
thức biểu diễn như sau: luv ( X ,Y )= ∑ luv (x i , Y ) Ví dụ, Giá trị độ hữu ích bộ phận của itemset X = {D, E}
x i ∈ X ⊆Y
trong itemset Y = {D, E, F} trong CSDL bảng 1 là luv(X,Y) = 6 + 11 = 17.
Định nghĩa 2.9. (Luật kết hợp hữu ích cao). Luật kết hợp hữu ích R là một biểu thức có dạng X → Y, biểu diễn mối
quan hệ giữa hai tập hữu ích cao X, Y ⊆ I. Giá trị độ tin cậy lợi ích của R, kí hiệu uconf(R), được xác định công thức
luv( X , XY )
uconf ( R )= . R: X → Y được gọi là luật kết hợp hữu ích cao nếu uconf(R) lớn hơn hoặc bằng ngưỡng
u( X )
độ tin cậy hữu ích tối thiểu – Minimun Utility Confidence Threshold (min-Uconf) được xác định bởi người dùng.
Ngược lại, R được gọi là luật kết hợp hữu ích thấp. Ví dụ, với itemset X = {F[14], E[17]} và itemset Y = {D[6], F[12],
23
E[11]} thì luật kết hợp hữu ích R: FE → D có độ tin cậy hữu ích là uconf ( R )= 100=74.19 % nếu chọn min-
31
Uconf = 60(%) thì R là luật kết hợp hữu ích cao.
III. CÁC NGHIÊN CỨU LIÊN QUAN
3.1. Khai thác tập hữu ích cao.
Bài toán HUIM đã được nhiều tác giả quan tâm trong những năm vừa qua vì nó giải quyết được bài toán mang
tính thực tế là xem các item có thể xuất hiện nhiều hơn một lần trong mỗi giao dịch và mỗi item có một trọng số (ví dụ,
đơn vị lợi nhuận). Một số thuật toán nghiên cứu về HUIM như: Năm 2005, Liu và các đồng sự đề xuất thuật toán Two-
Phase [3] là thuật toán đầu tiên đưa ra khái niệm khai thác các tập hữu ích cao thay vì khai thác các tập phổ biến thông
qua hai giai đoạn. Two-Phase đưa ra các khái niệm về độ hữu ích giao dịch (Transaction Utility - TU). Độ hữu ích
trọng số giao dịch (Transaction Weighted Utility - TWU) để sửa bài toán FIM thành bài toán HUIM hiệu quả và tính
chính xác độ hữu ích của các HUIs. Tuy nhiên, Two-Phase gặp vấn đề là sinh ra một lượng lớn các tập ứng viên trong
giai đoạn 1 bằng cách đánh giá quá cao lợi ích của chúng và gặp vấn đề về thời gian và bộ nhớ sử dụng khi phải lặp đi
lặp lại nhiều lần quét CSDL trong giai đoạn 2 để tính toán chính xác độ hữu ích của các tập ứng viên.
Trần Lệ Quyên, Nguyễn Thị Thúy Loan, Võ Đình Bảy 3

Để khắc phục hạn chế của thuật toán Two-Phase [3]. Năm 2010, Tseng và đồng sự đề xuất thuật toán UP-Growth
[4], cũng là một thuật toán 2 giai đoạn, dựa trên thuật toán FP-Growth [5] và tính chất bao đóng giảm của thuật toán
Two-Phase với bốn chiến lượt được áp dụng: Một là, loại bỏ các tập item không triển vọng toàn cục (Discarding
global unpromising items - DGU). Hai là, giảm độ hữu ích nút trong cây UP-Tree toàn cục (Decreasing global node
utilities - DGN). Ba là, loại bỏ các item không triển vọng bộ phận (Discarding local unpromising items - DLU). Bốn
là, giảm độ hữu ích nút bộ phận (Decreasing local node utilities - DLN). UP-Growth so với Two-Phase thì sinh ra ít
ứng viên hơn trong giai đoạn 1 nhờ sử dụng bốn chiến lược DGU, DGN, DLU, DLN trong suốt quá trình xây dựng cây
UP-Tree toàn cục và cây UP-Tree cục bộ. Do vậy mà thuật toán UP-Growth có thời gian thực hiện được công nhận
nhanh hơn 1000 lần và sử dụng bộ nhớ ít hơn thuật toán Two-Phase. Tuy nhiên, UP-Growth vẫn còn sinh ra lượng lớn
tập ứng viên tiềm năng trong giai đoạn 1 bằng cách đánh giá quá cao giá trị lợi ích của chúng. Thuật toán UP-Growth
xây dựng cấu trúc cây UP-Tree phức tạp.
Năm 2017, Zida và các đồng sự đề xuất thuật toán EFIM [6] khai thác các tập HUIs khá hiệu quả với hai giới hạn
mới về độ hữu ích là: Sửa đổi độ hữu ích cây liệt kê tập con (revised sub-tree utility - SU) và độ hữu bộ phận (local
utility - LU). SU và LU cắt tỉa không gian tìm kiếm hiệu quả hơn so với cận trên TWU và độ hữu ích còn lại
(remaining utility - RE) được sử dụng trong các thuật toán đã nghiên cứu trước đó. EFIM cũng giới thiệu hai kỹ thuật
hiệu quả để giảm chi phí quét CSDL có tên là dự kiến CSDL hữu ích cao (High-utility Database Projection - HDP) và
hợp nhất giao dịch hữu ích cao (High-utility Transaction Merging - HTM). Không giống như Two-Phase hoặc UP-
Growth, EFIM là thuật toán một giai đoạn. Do vậy, EFIM tiệu thụ ít bộ nhớ vượt trội hơn và có thời gian thực hiện ít
hơn với thời gian tuyến tính.
3.2. Khai thác luật kết hợp hữu ích cao từ tập hữu ích cao
Năm 2015, Sahoo và đồng sự đề xuất thuật toán HGB-HAR [1] để khai thác tất cả các HARs từ HGB với ba giai
đoạn: Một là, khai thác các itemset hữu ích cao đóng (Closed High Utility Itemsets - HUCIs) và tập sinh hữu ích cao
(Generators) của tập HUCIs tương ứng. Hai là, khai thác tất cả các luật hữu ích cao không dư thừa (High Utility
Generic Basic - HGB) từ tập HUCIs và tập Generators. Ba là, khai thác tất cả các tập luật kết hợp hữu ích cao HARs từ
tập HGB có được trong giai đoạn 2. HGB-HAR [1] là thuật toán đầu tiên mở ra hướng nghiên cứu mới cho bài toán
khai thác luật kết hợp hữu ích cao từ tập hữu ích cao. Tuy nhiên thuật toán gặp vấn đề về thời gian trong giai đoạn 3
khi tập HGB có nhiều item ở vế phải, kiểm tra các tập con của vế phải tập HGB kết hợp với vế trái có phải là tập HUI
hay không? Và quét lại tập luật nhiều lần đề loại bỏ các luật bị trùng.
Năm 2017, Mai và đồng sự đề xuất thuật toán LARM [2] khai thác HARs từ HUIL gồm 2 giai đoạn: Một là, xây
dựng dàn các tập hữu ích cao HUIL. Hai là, khai thác HARs từ HUIL. Thuật toán LARM [2] đã được chứng minh là có
thời gian thực hiện và sử dụng bộ nhớ ít hơn HGB-HAR [1] do tính chất tối ưu của dàn trong khai thác dữ liệu. Tuy
nhiên, gặp phải hai vấn đề sau: Một là, thuật toán xây dựng dàn HUIL sử dụng hai quá trình duyệt theo chiều sâu trên
dàn đang xây dựng thông qua hai hàm ResetLattice và InsertLattice. Hai là, xây dựng dàn xong rồi mới sinh luật HARs
dẫn đến tốn nhiều thời gian và bộ nhớ do phải thực hiện lần lượt hai giai đoạn.
IV. PHƯƠNG PHÁP ĐỀ XUẤT

Bài toán: Cho CSDL D, ngưỡng độ hữu ích tối thiểu min-Util và ngưỡng độ tin cậy tối thiểu min-Uconf do người dùng
lựa chọn. Bài toán khai thác luật kết hợp từ các mẫu hữu ích cao là tìm ra tất cả các luật kết hợp R thỏa điều kiện
uconf(R) ≥ min-Uconf gọi là luật kết hợp hữu ích cao từ các tập item I có u(I) ≥ min-Util gọi là các tập hữu ích cao
khai thác từ CSDL D [1].

4.1. Ý tưởng thuật toán LHAR (Mining High utility Association Rules based on building Lattice)
Chúng tôi đề xuất khai thác luật kết hợp hữu ích cao dựa trên dàn hữu ích cao qua hai bước sau:
Bước 1: Khai thác HUIs từ CSDL với ngưỡng độ hữu ích tối thiểu min-Util do người dùng lựa chọn. Trong bước này
Chúng tôi sử dụng thuật toán EFIM [6] được đề xuất bởi Zida và các đồng sự năm 2017.
Bước 2. Vừa xây dựng dàn HUIL vừa khai thác luật kết hợp HARs trong quá trình xây dựng dàn. Trong bước này vừa
cải tiến bước 1 vừa rút gọn lại bước 2 của thuật toán LARM [2]. Việc xây dựng dàn HUIL từ các tập HUIs chỉ còn một
quá trình duyệt theo chiều sâu và kết xuất luật HARs chỉ còn một giai đoạn.
Cấu trúc của dàn thể hiện trong hình 1. Dàn tương tự với dàn trong thuật toán LARM [2] gồm nút gốc là rỗng,
không chứa HUI, không có giá trị độ hữu ích và độ hỗ trợ, có tên là Root(0,0). Các nút được nối với nút gốc hoặc nối
với nhau theo quan hệ cha con. Mỗi nút là một phần tử HUI có độ hữu ích trên từng item, tổng độ hữu ích của các item
(Utility) và độ hỗ trợ (Support) tương ứng. Ví dụ, hình 1 nút A[28](28, 2) có một item là A có độ hữu ích là 28 và tổng
độ hữu ích Utility = 28, Support = 2. Nút A[28](28, 2) là cha của nút A[28]C[10](38, 2) có hai item là A và C có độ
hữu ích tương ứng trên từng item là Utility(A) = 28, Utility(C) = 10, tổng độ hữu ích trên cả nút là Utility = 38. Độ hỗ
trợ trên cả nút là Support = 2. Ngược lại, nút A[28]C[10](38, 2) là con của nút A[28](28, 2). Nút A[28](28, 2) có hai
con là A[28]C[10](38, 2) và A[28]E[7](35, 2).
4 KHAI THÁC LUẬT KẾT HỢP HỮU ÍCH CAO DỰA TRÊN DÀN

Hình 1. Dàn các tập hữu ích cao khai thác từ CSDL bảng 1 với ngưỡng min-Util = 25%
4.2. Mô tả thuật toán LHAR
Đầu vào: Tập HUIs được sắp xếp theo thứ tự tăng dần về số lượng phần tử (TableHUI), ngưỡng độ tin cậy tối thiểu
(min-Uconf).
Đầu ra: Tập tất các các luật kết hợp hữu ích cao (RuleSet).

Algorithm LHAR

Input: tableHUI, min-Uconf


Output: RuleSet
#1 BuildLattice(tableHUI, min-Uconf)
#2 Set rootNode = Lattice Node of Empty Itemset, RuleSet = ∅
#3 ;
#4 Set Root = new Itemset(0,0);
#5 rootNode.add(Root);
#6 for each (level in tableHUI.getLevels)
#7 for each (X in level)
#8 Root.isTraversed=false;
#9 Set resetList = ArrayList of Empty Itemset;
#10 InsertLattice(X, Root, min-Uconf);
#11 for each (Y in resetList)
#12 Y.isTraversed=false;
#13 End
#14 End
End

InsertLattice(X, rNode, min-Uconf)

#15 if rNode.isTraversed
#16 return;
#17 End
#18 Set Flag = true, rNode.isTraversed=true;
#19 if X.size >1 then
#20 for each ChildNode in rNode.ChildNode
#21 if ChildNode ⊂ X then
#22
Trần Lệ Quyên, Nguyễn Thị Thúy Loan, Võ Đình Bảy 5

#23 if ChildNode.isTraversed=false then


#24 resetList.add(ChildNode);
#25 Uconf = R.CalculateConfidence(ChildNode, X);
#26
#27 if Uconf  min-Uconf then
#28 Set R: ChildNode →X\ChildNode;
#29 RuleSet.add(R);
#30
#31 End
#32 End
#33 Set Flag=false;
#34 InsertLattice(X, ChildNode, min-Uconf);
#35 End
#36 End
#37 End
#38 if Flag then
#39 if X.isTraversed=false then
#40 rootNode.add(X);
#41 rNode.ChildNode.add(X);
#42 resetList.add(X);
#43 X.isTraversed=true;
#44 End
Else
rNode.ChildNode.add(X);
End
Thuật toán đề xuất khai thác HARs dựa trên xây dựng dàn HUIL mang tên LHAR từ HUIs thực hiện như sau:
-Đầu tiên, thuật toán gọi hàm BuildLattice để khởi tạo và xây dựng dàn rootNode có nút gốc là Root(0,0). Nút gốc là nút
HUI không có giá trị độ hữu ích và độ hỗ trợ. Khởi tạo tập luật kết hợp hữu ích cao RuleSet là rỗng (dòng #2).
-Tiếp theo, duyệt tập HUIs theo từng mức (level) theo thứ tự tăng dần về kích thước phần tử tableHUI.getLevels, ứng
với mỗi level xét từng HUI là {X}, mỗi nút {X} có cờ isTraversed để đánh dấu cho biết nút {X} đã được xét hay
chưa (quy ước: X.isTraversed = false là chưa được xét, X.isTraversed = true là đã được xét). Khởi tạo cờ
isTraversed cho nút gốc Root(0,0) là false. Khởi tạo tập các nút được xét (resetList) trong quá trình xây dựng dàn
là rỗng (dòng #8). Tập resetList là tập dùng để chứa những HUI là nút đã bị đánh dấu cờ isTraversed = true trong
quá trình xây dựng dàn (tập các nút được xét). Thực hiện gọi hàm InsertLattice(X, Root, min-Uconf) để chèn {X}
vào dàn rootNode với nút gốc Root(0,0) đồng thời để tìm luật kết hợp với ngưỡng min-Uconf (dòng #9). Tái tạo lại
tập HUIs đã được xét bằng cách đánh dấu lại cờ isTraversed cho các HUIs trong tập resetList là false sau khi thực
hiện hàm InsertLattice(X, Root, min-Uconf) cho mỗi nút {X}.
Hàm InsertLattice(X, rNode, min-Uconf) thực hiện như sau:
-Đầu tiên, kiểm tra cờ isTraversed của nút rNode nếu là true thì thoát. Nếu không thì thực hiện các bước sau: bước 1,
thiết lập cờ Flag là true. Cờ Flag dùng để kiểm tra có thể thêm nút {X} trực tiếp vào nút rNode đang xét hay
không? Gán giá trị cờ isTraversed cho nút rNode là true nghĩa là đánh dấu rNode đã được xét trong quá trình xây
dựng dàn. Để trong quá trình thực hiện đệ quy hàm InsertLattice(X, rNode, min-Uconf) nếu rNode đã được xét thì
quá trình thực hiện đệ quy sẽ bỏ qua nút rNode.
-Tiếp theo, kiểm tra số lượng phần tử của tập {X}, nếu {X} chỉ có một Item thì thêm {X} làm con trực tiếp nút gốc
Root(0,0) (dòng #35). Từ dòng #35 trở đi là để thêm trực tiếp phần tử {X} vào nút rNode đang xét. Nếu {X} chưa có
trên dàn rootNode thì {X} được thêm mới hoàn toàn. Ngược lại, {X} đã có trên dàn thì chỉ cần {X} là con của nút
rNode đang xét. Nếu {X} có nhiều hơn một Item thì thực hiện duyệt qua mỗi con của nút rNode là nút ChildNode
(dòng #20). Nếu ChildNode là con của {X} (ChildNode ⊂ {X}) thì thực hiện hai việc: Một là, nếu cờ isTraversed
của nút ChildNode là false thì thêm ChildNode vào tập resetList (dòng #23). Thực hiện tính độ tin cậy Uconf của
luật R: ChildNode →X\ChildNode (dòng #24), nếu Uconf ≥ min-Uconf thì thêm luật R vào tập luật RuleSet (dòng
#27). Hai là, đệ quy thực hiện chèn {X} vào nút ChildNode (dòng #31).
4.3. Minh họa thuật toán LHAR
Xét CSDL trong bảng 1, chọn ngưỡng min-Util = 25% và ngưỡng min-Uconf = 60%. Các tập hữu ích cao HUIs
được chia thành bốn mức (level), mỗi mức i (level – i) gồm tập HUIs chứa i phần tử theo thứ tự được cho bởi thuật
toán EFIM [6] như sau:
- Level – 1: {A[28](28, 2)} viết ngắn gọn là: {A}
- Level – 2: { A[28]C[10](38, 2), A[28]E[7](35, 2), F[14]E[17](31, 4)} viết ngắn gọn là: {AC, AE, FE}
6 KHAI THÁC LUẬT KẾT HỢP HỮU ÍCH CAO DỰA TRÊN DÀN

- Level – 3: {B[16]D[2]E[5](23, 1), D[6]F[12]E[11](29, 3), A[16]C[5]F[2](23, 1), A[28]C[10]E[7](45, 2),


A[16]F[2]E[6](24, 1)} viết ngắn gọn là: {BDE, DFE, ACF, ACE, AFE}
- Level - 4: {B[16]D[2]F[1]E[5](24, 1), A[16]C[5]F[2]E[6](29, 1)} viết ngắn gọn là: {BDFE, ACFE}
Thuật toán LHAR dựa trên kết quả tính tập HUIs của thuật toán EFIM thực hiện xây dựng dàn và khai thác luật như
sau:
- Đầu tiên, thuật toán khởi tạo dàn rootNode chỉ gồm một nút gốc là Root(0,0), nút này là một HUI rỗng, không có
giá trị độ hữu ích và độ hỗ trợ. Khởi tạo tập luật RuleSet là rỗng.
- Tiếp theo, thuật toán xử lý tập HUIs mức level – 1. Chỉ có {X} = {A} ∈ level - 1. Thực hiện thêm trực tiếp {X} vào
dàn rootNode và làm con của nút gốc Root(0,0). Tập luật RuleSet vẫn là rỗng vì chưa có luật nào được thêm vào.
- Sau đó, tập HUIs mức level – 2 được xử lý đưa vào dàn. Với mỗi phần tử {X} ∈ level 2. Có {AC} và {AE} có con
ở mức level – 1 là {A}. Còn {FE} không có con mức level – 1 nên {FE} là con trực tiếp nút Root(0,0). Các nút có
con mức level – 1 được thêm vào dàn như sau: Ví dụ X = {AC}. Thực hiện chèn {AC} vào dàn rootNode với nút
gốc là Root(0,0). Với mỗi ChildNode ⊂ {AC} chỉ có {A}. Xét {A} tính độ tin cậy Uconf của luật R: A→C, là
Uconf(R)= 100% ≥ 65% nên thêm luật A→C (100%) vào tập luật RuleSet. Thêm mới nút {AC} vào dàn và chỉ ra
con của nút {A} là {AC}. Quá trình cứ thế tương tự với X = {AE}.
- Sau khi đã xử lý các HUIs mức level – 2, sẽ thực hiện xử lý tiếp các HUIs của mức Level – 3. Ví dụ X = {ACE}
thực hiện chèn {ACE} vào dàn rootNode với nút gốc là Root(0,0). Ta có, với mỗi ChildNode ⊂ {ACE} có {A} là
con của Root(0,0) được chọn. Xét {A}, tính Uconf(A →CE) = 100% ≥ 65% nên thêm luật A→CE(100%) vào tập
luật RuleSet. Do {A} còn có hai con là {AC} và {AE} nên không thêm {ACE} làm con trực tiếp của nút {A}. Đệ quy
duyệt theo chiều sâu trên nút {A}, xét với mỗi ChildNode ⊂ {ACE} có {AC} và {AE} là con của nút {A} được
chọn. Xét {AC}, tính Uconf(AC→E) = 100% ≥ 65% nên thêm luật AC→E(100%) vào tập luật RuleSet. Do {AC}
không có con nên thêm mới nút {ACE} vào dàn và chỉ ra {ACE} là con trực tiếp của {AC}. Tiếp theo, Xét nút
{AE}, tính Uconf(AE→C) = 100% ≥ 65%, nên thêm luật AE→C(100%) vào tập luật RuleSet. Do {ACE} đã có
trên dàn, nên chỉ cần chỉ ra nút {ACE} là con của {AE}. Quá trình cứ thế tương tự cho đến hết các HUIs mức level
– 3.
- Sau khi xét hết các HUIs của level – 3 rồi đến xét các HUIs của mức level – 4. Cuối cùng ta được dàn rootNode
với nút gốc là Root(0,0) hình 1 và tập luật RuleSet theo thứ tự như trong bảng 2.
Bảng 2. Bảng Tập luật kết hợp hữu ích cao khai thác từ CSDL bảng 1 với ngưỡng min-Util = 25% và ngưỡng min-Uconf = 60%.
Rules Uconf (%) Rules Uconf (%) Rules Uconf (%)
1. A → C 100 5. AC → E 100 9. ACF → E 100

2. A → E 100 6. AE → C 100 10. ACE → 60


F
3. FE → 74.19 7. AE → F 62.86 11. AE → 62.86
D CF
4. A → 100 8. BDE → F 100 12. AFE → 100
CE C
4.4. Những điểm mới trong thuật toán LHAR
So với thuật toán LARM [2] thì thuật toán LHAR có những điểm cải tiến làm cho thuật toán chạy tốt hơn về thời gian
thực hiện và sử dụng bộ nhớ như sau:
- Một là, LHAR thực hiện xây dựng dàn rootNode với nút gốc Root(0,0) chỉ qua một quá trình duyệt theo chiều sâu
với hàm InsertLattice, còn thuật toán LARM thực hiện xây dựng dàn qua hai quá trình duyệt theo chiều sâu trên
dàn, đó là thực hiện song song hai hàm ResetLattice và hàm InsertLattice. Hàm ResetLattice có thời gian thực
hiện tương đương với hàm InsertLattice.
- Hai là, LHAR thực hiện kết hợp vừa xây dựng dàn vừa sinh ra luật, bỏ qua giai đoạn 2 thực hiện hàm
FindHuiRulesFromLattice để tìm luật trong thuật toán LARM. Kết quả thử nghiệm cũng cho thấy, nếu thực hiện
hai giai đoạn giống như LARM và chỉ cả tiến hàm ResetLattice trong giai đoạn 1, hoặc nếu không cải tiến hàm
ResetLattice mà chỉ bỏ đi giai đoạn 2 thì thời gian vẫn không được cải tiến.
V. KẾT QUẢ THỰC NGHIỆM
5.1. CSDL thực nghiệm và môi trường thực nghiệm
Các CSDL dùng cho thực nghiệm là các CSDL chuẩn được tải từ website mã nguồn mở SPMF , được phát triển
bởi Fournier [7] tại đường link: http://www.philippe-fournier-viger.com/SPMF/index.php?link=datasets.php. Các
CSDL này được rất nhiều tác giả sử dụng trong khai thác dữ liệu, khai thác tập hữu ích cao và luật kết hợp hữu ích cao.
Các thuộc tính của các CSDL được mô tả trên kho dữ liệu chuẩn quốc tế UCI tại đường link:
https://archive.ics.uci.edu/ml/datasets.html. Các tính chất của CSDL sử dụng trong bài báo được mô tả trong bảng 3:
Trần Lệ Quyên, Nguyễn Thị Thúy Loan, Võ Đình Bảy 7

Bảng 3. Bảng mô tả CSDL cùng với các thuộc tính tương ứng
Tên CSDL Số giao dịch Số Items Tổng giá trị hữu ích Kích thước (KB)
Chess 3,196 75 2,156,659 642
Mushroom 8,124 119 3,413,720 1,064
Accidents 340,183 468 196,141,636 64,686
Các thuật toán được cài đặt và thử nghiệm trong môi trường có cấu hình là: Intel(R) Core(TM) i7-8550U CPU @
1.80GHz, Ram 8 GB, Hệ điều hành Windows 10 phiên bản 64-bit. Ngôn ngữ lập trình Java. Số lượng tập HUIs và số
lượng luật HARs chạy thử nghiệm trong các CSDL được thể hiện cụ thể trong bảng 4 dưới đây:

Bảng 4. Bảng Số tập hữu ích cao và số luật kết hợp hữu ích cao trên các CSDL thực nghiệm.
#HARs min-Uconf
Tên CSDL min-Util(%) #HUIs
40% 60% 80%
24.5 9740 1803478 1691473 593668
25.5 4226 490292 476465 200900
Chess
26.5 1911 132873 132250 70386
27.5 791 30726 30726 22211
10 707250 700455 679987 594178
11 5800 281150 279574 255553
Mushroom
12 2726 78308 78308 74688
13 1152 19606 19606 19474
10 7479 729209 422415 100614
11 2367 131644 88388 23911
Accidents
12 728 22510 17778 5568
13 189 2623 2453 1024
5.2. So sánh thời gian thực hiện và bộ nhớ sử dụng hai thuật toán LARM và LHAR.

Chúng tôi tiến hành thực nghiệm trên các CSDL và thấy rằng thuật toán LHAR có thời gian thực thi và bộ nhớ sử
dụng luôn đạt được hiệu suất tốt hơn LARM [2]. Kết quả thể hiện cụ thể qua các hình dưới đây:

Chess min-Uconf = 60% Chess min-Uconf = 60%


10000000 1200
Runtime (ms)

Memory Usage (Mb)

1000000 LHAR 1000 LHAR LARM


100000 LARM 800
10000 600
1000 400
100 200
10 0
27.5 26.5 25.5 24.5 27.5 26.5 25.5 24.5
Minimum Utility (%) Minimum Utility (%)
Hình 2 – Hình thể hiện thời gian thực thi trên CSDL Hình 3 – Hình thể hiện bộ nhớ sử dụng trên CSDL
Chess với min-Uconf = 60%. Chess với min-Uconf = 60%.
M e m ory U sag e (M b )

Mushroom min-Uconf = 60%


100000
Runtime (ms)

LHAR LARM Mushroom min-Uconf = 60%


10000 800
700 LHAR
1000 600 LARM
500
400
100 300
200
10 100
0
13 12 11 10 13 12 11 10
Minimum Utility (%) Minimum Utility (%)

Hình 4 – Hình thể hiện thời gian thực thi trên CSDL Hình 5 – Hình thể hiện bộ nhớ sử dụng trên CSDL
Mushroom với min-Uconf = 60%. Mushroom với min-Uconf = 60%.
M e m ory U sa g e (M b )

Accidents min-Uconf = 60%


1000000
100000 LHAR
Accidents min-Uconf = 60%
LARM
e (ms)

10000 800
700 LHAR
1000 600 LARM
400
10 300

Ru
200
1 100
0
13 12 11 10 13 12 11 10
8 Minimum Utility (%) KHAI THÁC LUẬT KẾT HỢP HỮU ÍCH CAO
Minimum DỰA
Utility TRÊN DÀN
(%)

Hình 6 – Hình thể hiện thời gian thực thi trên CSDL Hình 7 – Hình thể hiện bộ nhớ sử dụng trên CSDL
Accidents với min-Uconf = 60%. Accidents với min-Uconf = 60%.

VI. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN


Dựa trên nghiên cứu về dàn để khai thác luật kết hợp hữu ích cao trong thuật toán LARM [2], chúng tôi đã cải
tiến đề xuất thuật toán LHAR với sự tích hợp vừa xây dựng dàn vừa sinh luật kết hợp hữu ích cao, đồng thời cải tiến
cách xây dựng dàn giúp tiết kiệm thời gian và bộ nhớ hơn thuật toán HUIL [2]. Dựa trên kết quả thực nghiệm trên một
số CSDL chuẩn có thể khẳng định rằng thuật toán LHAR hiệu quả hơn thuật toán LARM cả về thời gian thực hiện và
bộ nhớ tiêu thụ.
Thuật toán LHAR kết hợp vừa xây dựng dàn vừa sinh luật hữu ích cao là một quá trình đệ quy tìm kiếm theo
chiều sâu. Dựa trên cải tiến về cách xây dựng dàn ta có thể sử dụng dàn đã xây dựng có thể khai thác luật kết hợp hữu
ích cao không dư thừa hay có thể phát triển thuật toán khai thác các tập đóng hữu ích cao và tập sinh hữu ích cao. Hoặc
có thể kết hợp xây dựng dàn để khai thác các luật kết hợp hữu ích thấp. Các công trình nghiên cứu này rất có ích cho
các nhà quản lý có thêm hướng tiếp cận trong quá trình lập kế hoạch, dự đoán su hướng phát triển trong tương lai trên
nhiều lĩnh vực như kinh doanh, giáo dục, y tế, thị trường chứng khoán, v.v…

Lời cảm ơn: Nghiên cứu này được tài trợ bởi Quỹ Phát triển khoa học và công nghệ Quốc gia (NAFOSTED) trong đề
tài mã số 102.05-2018.01.

TÀI LIỆU THAM KHẢO

[1] J. Sahoo, A. K. Das and A. Goswami, "An efficient approach for mining association rules from high utility itemsets.," Expert
Systems with Applications, vol. 42, no. 13, p. 5754–5778, 2015.
[2] T. Mai, B. Vo and L. T. T. Nguyen, "A lattice-based approach for mining high utility association rules," Information Sciences,
vol. 399, pp. 81-97, 2017.
[3] Y. Liu, W. Liao and A. Choudhary, "A two-phase algorithm for fast discovery of high utility itemsets," in Proceedings of 9th
Pacific-Asia Conf. on Knowl. Discovery and Data Mining, 2005.
[4] V. S. Tseng, C.-W. Wu, B.-E. Shie and P. S. Yu, " UP-Growth: an efficient algorithm for high utility itemset mining," in 16th
ACM SIGKDD international conference on Knowledge discovery and data mining, 2010.
[5] J. Han, J. Pei and Y. Yin, "Mining frequent patterns without candidate generation," in Proceedings of the 2000 ACM SIGMOD
international conference on Management of data, 2000.
[6] S. Zida, P. Fournier-Viger, J. C.-W. Lin, C.-W. Wu and V. S. Tseng, "EFIM: a fast and memory efficient algorithm for high-
utility itemset mining," Knowledge and Information Systems, vol. 51, no. 2, p. 595–625, 2017.
[7] P. Fournier-Viger, A. Gomariz, T. Gueniche, A. Soltani, C.-W. Wu and V. S. Tseng, "SPMF: a Java open-source pattern mining
library," The Journal of Machine Learning Research, vol. 15, no. 1, pp. 3389-3393, 2014.

AN EFFICIENT METHOD FOR MINING HIGH UTILITY


ASSOCIATION RULES BASED ON LATTICE
Tran Le Quyen, Nguyen Thi Thuy Loan, Vo Dinh Bay
ABSTRACT— In business, companies often care about the company’s profits. Besides being interested in the value of the
benefits of items. Businesses are also interested in the relationship between goods to set out effective business strategies. For example, what
items do they need to find to recommend to customers, arrange booths, display products, ect. To attract customers and increase profits. The
algorithms for mining high utility association rules from high utility itemsets were developed. However, these algorithms often have long
execution time and high memory consumption. In this paper, we propose an algorithm, called LHAR, for mining high utility association
rules based on the construction of high utility itemsets lattice. The proposed algorithm only needs a single phase for both building high
utility itemsets lattice and mining high utility association rules. Thus, help improving the algorithm’s exection time and memory usage.

You might also like