Tải bản đầy đủ (.pdf) (26 trang)

Khai phá tập mục lợi ích cao và ứng dụng tại công ty cổ phần siêu thị VHSC (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (889.47 KB, 26 trang )

HỌC VIÊN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

----------------------------------

Nguyễn Trọng Thắng

KHAI PHÁ TẬP MỤC LỢI ÍCH CAO VÀ ỨNG
DỤNGTẠI CÔNG TY CỔ PHẦN SIÊU THỊ VHSC
Chuyên ngành: Hệ thống thông tin
Mã số : 8.48.01.04

TÓM TẮT LUẬN VĂN THẠC SĨ

HÀ NỘI - 2018


Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Người hướng dẫn khoa học: Giáo sư Tiến sỹ Vũ Đức Thi
Phản biện 1: Phó Giáo sư Tiến sỹ Nguyễn Hà Nam

Phản biện 2: Phó Giáo sư Tiến sỹ Lê Thanh Hương

Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn
thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: 09 giờ 40 phút ngày 06 tháng 01 năm 2018
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông



1

MỞ ĐẦU
1. Lý do chọn đề tài
Luận văn tác giả tập trung tìm hiểu phân tích các quá trình
giao dịch bán hàng dựa trên các tập dữ liệu giao dịch tìm ra
các nhóm mặt hàng được bán, theo chu kỳ, định kỳ, và tìm ra
được các nhóm mặt hàng đưa ra lợi nhuận. Từ ý nghĩa khoa
học và thực tiễn trên tác giả chọn đề tài: “Khai phá tập mục
lợi ích cao và ứng dụng tại công ty Cổ phần siêu thị VHSC”.
2. Tổng quan về vấn đề nghiên cứu
Luận văn xác định một số nội dung trọng tâm như sau:
- Tìm những thuật toán hiệu quả cho việc phát hiện các nhóm
hàng bán ra đem lại lợi nhuận cao dựa trên hóa đơn giao dịch.
- Tìm những thuật toán hiệu quả cho việc phát hiện nhu cầu
mua hàng của khách hàng thường xuyên đem lại lợi nhuận cao
dựa trên hóa đơn giao dịch.
- Khả năng ứng dụng tại công ty Cổ phần siêu thị VHSC.
3. Mục tiêu nghiên cứu
 Mục tiêu tổng quát:
 Nghiên cứu tập mục lợi ích cao.
 Khảo sát các nhu cầu thực tế các mặt hàng bán được với
lợi nhuận thu được dựa trên giao dịch, chu kỳ bán hàng hóa
đem lại lợi nhuận, đưa ra phương pháp khai phá tập mục lợi
ích cao phù hợp.
 Mục tiêu cụ thể:
 Tìm hiểu thuật toán khai phá tập mục lợi ích cao có thể
áp dụng vào nhu cầu thực tế tại Công ty Cổ phần siêu thị
VHSC.
 Cài đặt chương trình thử nghiệm khai phá tập mục lợi



2

ích cao.
4. Đối tượng và phạm vi nghiên cứu
 Đối tượng nghiên cứu:
 Một số vấn đề cơ bản khai phá tập tập mục lợi ích cao.
 Thuật toán FHM, thuật toán FHN, thuật toán PHM,
thuật toán FOSHU và khả năng áp dụng tại công ty cổ phần
Siêu thị VHSC.
 Phạm vi nghiên cứu
 Trên dữ liệu tĩnh. Việc xử lý dữ liệu theo hướng tập
trung.
 Khả năng ứng dụng các thuật toán khai phá tập tập mục
lợi ích cao tại công ty cổ phần Siêu thị VHSC
 Không đi sâu nghiên cứu chi tiết, đánh giá hiệu suất
thuật toán.
5. Phương pháp nghiên cứu
 Nghiên cứu lý thuyết:
 Luận văn sử dụng phương pháp thu thập, phân tích,
tổng hợp thông tin để tổng kết các kiến thức nền tảng, các
công bố khoa học và các ứng dụng từ các nguồn tài liệu trên
Internet và các nguồn tài liệu như bài báo khoa học trên các
kỷ yếu hội thảo, tạp chí chuyên ngành…
 Nghiên cứu thực nghiệm:
 Cài đặt thực nghiệm thuật toán.
 Đánh giá khả năng áp dụng khai phá các thuật toán khai
phá tập mục lợi ích cao tại công ty cổ phần Siêu thị VHSC.
6. Kết cấu của luận văn

Ngoài phần mục lục, danh mục, mở đầu, kết luận, tài liệu
tham khảo. Luận văn được cấu trúc thành 3 chương với nội
dung như sau:


3

Chương 1- Cơ sở lý thuyết: Trình bày tổng quan về khai phá
dữ liệu, khái quát về khai phá tập mục thường xuyên, khai phá
dữ liệu lợi ích cao, định nghĩa đối với bài toán khai phá tập
mục lợi ích cao.
Chương 2 - Thuật toán khai phá tập mục lợi ích cao: Trình
bày các thuật toán thuật toán FHM, thuật toán FHN, thuật toán
PHM và thuật toán FOSHU.
Chương 3 - Cài đặt ứng dụng thử nghiệm: Ứng dụng trên cơ
sở các thuật toán đã trình bày, kiểm tra với mẫu số liệu cụ thể,
đánh giá khả năng ứng dụng và áp dụng tại Công ty cổ phàn
siêu thị VHSC.
Chương 1 - CƠ SỞ LÝ THUYẾT
1.1. Mở đầu
Khai phá dữ liệu (Data mining) là quá trình trích xuất các
thông tin có giá trị tiềm ẩn bên trong lượng lớn dữ liệu được
lưu trữ trong các cơ sở dữ liệu, kho dữ liệu.
1.1.1. Quy trình khai phá dữ liệu và phát hiện tri thức
- Từ dữ liệu thô quá trình khám phá tri thức có thể phân thành
các bước sau: Lựa chọn dữ liệu; Thu thập và tiền xử lý dữ
liệu; Khai phá dữ liệu; Đánh giá và biểu diễn tri thức; Tri thức
1.1.2. Các phương pháp chính trong khai phá dữ liệu
Các phương pháp chính trong KPDL có thể được phân chia
theo chức năng hay lớp các bài toán khác nhau như sau:

- Phân lớp và dự đoán, Luật kết hợp, Phân cụm và phân
đoạn, Khái niệm và tổng hợp hóa.
1.1.3. Các cơ sở dữ liệu có thể khai phá
KPDL được ứng dụng rộng rãi có rất nhiều dạng dữ liệu khác


4

nhau:
- Cơ sở dữ liệu quan hệ,Cơ sở dữ liệu giao tác, CSDL đa
chiều, CSDL hướng đối tượng ,CSDL không gian, CSDL có
yếu tố thời gian,CSDL đa phương tiện
1.1.4. Kiến trúc của một hệ thống khai phá dữ liệu
- Kiến trúc của một hệ thống KPDL điển hình có thể có
thành phần như : Kho dữ liệu; Máy chủ CSDL; Cơ sở tri thức;
Máy KPDL; Modun đánh giá mẫu; Giao diện đồ họa người
dùng
1.1.5. Khai phá dữ liệu và một số lĩnh vực liên quan
- Cơ sở dữ liệu; Thống kê; Máy móc, trí tuệ nhân tạo;
Thương mại; Y tế; Tài chính, ngân hàng; Giáo dục; Thuật
toán; Các ngành khoa học khác.
1.1.6. Một số ứng dụng của khai phá dữ liệu
- Phân tích dữ liệu gen và sinh học y học, Phân tích dữ liệu
tài chính, Phân tích các mẫu gian lận và xác định các mẫu
khác thường
1.1.7. Các vấn đề về cơ sở dữ liệu
- Dữ liệu lớn ,Kích thước lớn, Dữ liệu động, Các trường
không phù hợp, Các giá trị bị thiếu, Các trường bị thiếu, Độ
nhiễu và không chắc chắn, Mối quan hệ phức tạp giữa các
trường

1.2. Giới thiệu bài toán khai phá tập mục lợi ích cao
1.2.1. Khai phá tập mục thường xuyên
Bài toán truyền thống (hay còn gọi bài toán nhị phân) với
mục đích 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.
Trong khai phá luật kết hợp cơ bản, 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


5

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, tính chất đóng
xuống của tập mục thường xuyên. Đó 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.
1.2.2. Giới thiệu bài toán khai thác tập lợi ích cao
Trong mô hình khai thác lợi ích cao, giá trị của mục dữ liệu
trong giao tác là một số (chẳng hạn như số lượng đã bán của
mặt hàng), ngoài ra còn có bảng lợi ích cho biết lợi ích mang
lại khi bán một đơn vị hàng đó, do người quản lý kinh doanh
xác định). Lợi ích của một tập mục là số đo lợi nhuận của tập
mục đó trong CSDL, nó có thể là tổng lợi nhuận, là tổng chi
phí của tập mục.
1.2.3. Cách tiếp cận trong khai thác tập lợi ích cao
- Dựa vào biên trên của độ có ích); Dựa vào định nghĩa về
TWU; Dựa trên TWU và FP-tree; Dựa trên TWU và phương
pháp cắt tỉa bằng cách ước lượng giá trị lợi ích đồng thời
mang tên EUCP.
1.3. Các định nghĩa và quy ước trong khai thác tập mục
lợi ích cao

Định nghĩa 1.1: cơ sở dữ liệu giao tác:
Cho tập các mục (item) I= {i1, i2 ,…in}. Một giao tác Tc là
tập con của I ,Tc ∈ I. Cơ sở dữ liệu giao tác là một tập các giao
tác D = {T1, T2,..., Tn}.Mỗi một giao tác Tc, Tc ∈ I và c
được gán một định danh gọi là TID. Mỗi mục i ∈ I liên
quan đến một số dương 𝑝(𝑖) được gọi là lợi ích bên ngoài (ví
dụ đơn vị lợi nhuận hay còn gọi là giá trị chủ quan ). Đối với
mỗi giao tác Tc mà i ∈ Tc là một số dương q(i, Tc) được gọi là
lợi ích trong của i


6

Định nghĩa 1.2: Lợi ích của một mục/tập mục trong giao
tác: 𝑢(𝑋, 𝑇𝑐 ) =∑𝑖∈𝑋 𝑢(𝑖, 𝑇𝑐 ).
Định nghĩa 1.3: Lợi ích của một tập mục trong cơ sở dữ liệu
giao tác: 𝑢(𝑋) = ∑𝑇𝑐 ∈𝑔(𝑋) 𝑢(𝑋, 𝑇𝑐 ).𝑔(𝑋) là tập hợp các giao
tác chứa 𝑋.
Định nghĩa 1.4: Khai phá tập mục lợi ích cao.Một tập 𝑋
được coi là tập mục lợi ích cao nếu: 𝑢(𝑋) ≥ 𝑚𝑖𝑛𝑢𝑡𝑖𝑙. Nếu
không nó là tập lợi ích thấp.
Định nghĩa 1.5: Lợi ích giao tác:
𝑇𝑈(𝑇𝑐 ) = ∑

𝑥∈𝑇𝑐

𝑢 (𝑥, 𝑇𝑐 ).

Định nghĩa 1.6: Lợi ích trọng số của giao tác:
𝑇𝑊𝑈 (𝑋) = ∑


𝑇𝑈 (𝑇𝑐 ).

𝑇𝑐 ∈𝑔(𝑋)

Định nghĩa 1.7: Danh sách lợi ích.Mục 𝑖𝑢𝑡𝑖𝑙 của 1 bộ là
lợi ích của 𝑋 trong 𝑇𝑡𝑖𝑑 là: u(X, Ttid). Mục 𝑟𝑢𝑡𝑖𝑙 của một bộ
được xác định là: ∑𝑖∈𝑇𝑡𝑖𝑑 ∧𝑖∈𝑋 𝑈(𝑖, 𝑇𝑡𝑖𝑑 ).
Tính chất 1.1: Trọng số độ lợi ích của giao tác đối với tập
mục 𝑋 lớn hơn hoặc bằng với lợi ích của nó : 𝑇𝑊𝑈 (𝑋) ≥
𝑢(𝑋).
Tính chất 1.2: Thuật toán TWU chống đơn điệu. Coi như 𝑋
và 𝑌 là hai tập mục.Nếu 𝑋 ⊂ 𝑌 thì 𝑇𝑊𝑈(𝑋) ≥ 𝑇𝑊𝑈(𝑌).
Tính chất 1.3: Coi 𝑋 là một tập mục. Nếu 𝑇𝑊𝑈(𝑋) <
𝑚𝑖𝑛𝑢𝑡𝑖𝑙 thì tập 𝑋 là tập mục lợi ích thấp như tất cả các tập
con khác rỗng của nó.
Tính chất 1.4: Tổng iutils. Gọi 𝑋 là một tập mục. Nếu tổng
các giá trị của 𝑖𝑢𝑡𝑖𝑙 trong danh sách lợi ích của 𝑋 lớn hơn hoặc
bằng 𝑚𝑖𝑛𝑢𝑡𝑖𝑙, khi đó 𝑋 là một tập lợi ích cao. Ngược lại, nó
sẽ là lợi ích thấp .


7

Tính chất 1.5: Sử dụng danh sách lợi ích để tính toán lợi ích
của một tập mục.Lợi ích của một tập mục là tổng các giá trị
𝑖𝑢𝑡𝑖𝑙 trong danh sách lợi ích.
Tính chất 1.6: Tổng iutils và rutils. Gọi 𝑋 là một tập mục.
Gọi những phần mở rộng của 𝑋 là những tập mục có được
bằng cách thêm một mục 𝑦 vào 𝑋 sao cho 𝑦 ≻ 𝑖 đối với tất cả

các mục 𝑖 trong 𝑋. Nếu tổng giá trị của 𝑖𝑢𝑡𝑖𝑙 và 𝑟𝑢𝑡𝑖𝑙 trong
danh sách lợi ích của 𝑥 nhỏ hơn 𝑚𝑖𝑛𝑢𝑡𝑖𝑙, tất cả các phần mở
rộng của 𝑋 và phần mở rộng chuyển tiếp là các tập mục lợi
ích thấp .
Tính chất 1.7: Sử dụng danh sách lợi ích để tỉa không gian
tìm kiếm. Xét 𝑋 là một tập mục. Coi phần mở rộng của 𝑋 là
các tập mục thu về bằng cách thêm một mục 𝑦 vào 𝑋 sao cho
𝑦 ≻ 𝑖, ∀𝑖 ∈ 𝑋. Nếu tổng các giá trị của 𝑖𝑢𝑡𝑖𝑙 và 𝑟𝑢𝑡𝑖𝑙 trong
𝑢𝑙(𝑋) nhỏ hơn 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 thì 𝑋 và phần mở rộng của nó là lợi
ích thấp.
Tính chất 1.8: Cho một tập X. Lợi ích u(X) bằng với tổng
các giá trị iutil trong ul (X) [12].
Tính chất 1.9: Cho một tập X. Tổng các giá trị iutil và rutil
trong ul(X) là một giới hạn trên của u(X). Hơn nữa, có thể
chứng minh rằng giới hạn trên này chặt chẽ hơn TWU(X).
1.4. Kết luận chương 1:
Chương 1 luận văn đã trình bày khái quát về về KPDL và
KDD, bài toán khai phá tập mục thường xuyên, khai phá dữ
liệu lợi ích cao, một số định nghĩa, tính chất đối với bài toán
khai phá tập mục lợi ích cao sử dụng cho các chương tiếp theo.


8

Chương 2 - THUẬT TOÁN KHAI PHÁ
TẬP MỤC LỢI ÍCH CAO
2.1. Thuật toán FHM
2.1.1. Đặt vấn đề
Trong mục này, tác giả trình bày một thuật toán có tên là
FHM (Khai phá hiệu quả tập mục lợi ích cao) để khai phá

HUIs trong khi xem xét đơn vị lợi nhuận dương.
2.1.2. Nội dung thuật toán FHM
Thủ tục chính lấy giá trị lợi ích là ngưỡng 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 làm đầu
vào của cở sở dữ liệu. Đầu tiên nó quét cơ sở dữ liệu để tính
TWU của mỗi mục. Sau đó nó xác định tập hợp 𝐼 ∗ của tất cả
các mục có một TWU không nhỏ hơn 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 (các mục khác
bị bỏ qua vì chúng không thể là một phần của một tập mục lợi
ích cao theo tính chất 1.1). Giá trị TWU của các mục sau đó
được sử dụng để thiết lập một thứ tự toàn phần ≻ trên các
mục, đó là thứ tự tăng dần của các giá trị TWU. Việc phát hiện
HUIs bằng cách thực hiện quét cơ sở dữ liệu đơn để thiết lập
những danh sách lợi ích của các mẫu có chứa các mục đơn.
Sau đó, ta thu được các mẫu dài hơn bằng cách thực hiện các
hoạt động nối các danh sách lợi ích của mẫu ngắn.
Sau đó thực hiện quét cơ sở dữ liệu lần thứ 2. Trong quá
trình quét cơ sở dữ liệu này, các mục trong giao tác được sắp
xếp lại theo thứ tự toàn phần ≻, danh sách lợi ích của mỗi mục
i ∈ I* được xây dựng và cấu trúc đó được đặt tên là EUCS
(Cấu trúc ước lượng giá trị lợi ích đồng thời). Cấu trúc mới
này được định nghĩa là một bộ ba có dạng (𝑎, 𝑏, 𝑐) ∈ 𝐼∗ ×
𝐼 ∗ × 𝑅. Một bộ ba (𝑎, 𝑏, 𝑐) chỉ ra TWU({𝑎, 𝑏}) = 𝑐. EUCS có


9

thể được thực hiện như một ma trận tam giác hoặc như một
bản đồ băm với các bộ có dạng (𝑎, 𝑏, 𝑐) sao cho 𝑐 ≠ 0. Xây
dựng EUCS vô cùng nhanh (nó được thực hiện với một cơ sở
dữ liệu quét duy nhất) và chiếm một lượng nhỏ bộ nhớ, được
giới hạn bởi |𝐼∗ | × |𝐼∗ |, dù trong thực tế kích thước nhỏ hơn

rất nhiều bởi vì số lượng các cặp mục đồng thời xảy ra trong
các giao tác. Sau khi xây dựng EUCS, thuật toán tìm kiếm
theo chiều sâu của các tập mục bắt đầu gọi thủ tục đệ quy
Search với tập mục rỗng ∅, tập hợp các mục đơn 𝐼∗ , 𝑚𝑖𝑛𝑢𝑡𝑖𝑙
và EUCS.
Thủ tục Search lấy đầu vào: (1) là một tập mục 𝑃, (2) phần
mở rộng của 𝑃 có dạng Pz nghĩa là có được Pz bằng cách thêm
mục 𝑧 vào 𝑃, (3) 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 và (4) EUCS.
Thủ tục Search được thực hiện như sau: Đối với mỗi phần
mở rộng 𝑃𝑥 của 𝑃, nếu tổng các giá trị 𝑖𝑢𝑡𝑖𝑙 của danh sách
lợi ích của 𝑃𝑥 không nhỏ hơn 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 thì 𝑃𝑥 là một tập mục
lợi ích cao và là đầu ra (tính chất 1.4). Sau đó, nếu tổng của
các giá trị 𝑖𝑢𝑡𝑖𝑙 và 𝑟𝑢𝑡𝑖𝑙 trong danh sách lợi ích của 𝑃𝑥 không
nhỏ hơn 𝑚𝑖𝑛𝑢𝑡𝑖𝑙, điều này có nghĩa là những phần mở rộng
của 𝑃𝑥 cần được khám phá. Việc này được thực hiện bằng
cách gộp 𝑃𝑥 với tất cả phần mở rộng của 𝑃𝑦 thuộc 𝑃 sao cho
𝑦 ≻ 𝑥 để hình thành các phần mở rộng có dạng 𝑃𝑥𝑦 chứa
|𝑃𝑥| + 1 mục. Danh sách lợi ích của 𝑃𝑥𝑦 sau đó được xây
dựng bằng cách gọi thủ tục Construct để nối các danh sách lợi
ích của 𝑃, 𝑃𝑥 và 𝑃𝑦. Sau đó, gọi đệ quy 𝑃𝑥𝑦 tới thủ tục Search
được thực hiện nhằm tính độ lợi ích của 𝑃𝑥𝑦 và khám phá các
tập mở rộng của nó.
Thủ tục Search bắt đầu từ các hạng mục đơn, nó sẽ tiến hành
thăm dò đệ quy không gian tìm kiếm của các tập mục bằng


10

cách nối các mục đơn và chỉ tỉa không gian tìm kiếm theo như
tính chất 1.5. Có thể dễ dàng thấy được, theo tính chất 1.4 và

tính chất 1.5, thủ tục này chính xác và hoàn thành việc thăm
dò tất cả các tập tin lợi ích cao.
Cắt tỉa đồng thời. Điểm mới của FHM là cơ chế cắt tỉa mới
có tên là EUCP dựa vào cấu trúc mới EUCS. EUCP là một
chiến lược cắt tỉa để trực tiếp loại bỏ sự mở rộng lợi ích thấp
𝑃𝑥𝑦 và tất cả các mở rộng chuyển tiếp mà không cần xây dựng
danh sách lợi ích của chúng. Điều kiện cắt tỉa là nếu không có
bộ (𝑥, 𝑦, 𝑐) trong EUCS sao cho 𝑐 ≥ 𝑚𝑖𝑛𝑢𝑡𝑖𝑙, sau đó 𝑃𝑥𝑦 và
tất cả các mục khác rỗng đều là các tập lợi ích thấp và không
cần phải khám phá.
2.2. Thuật toán FHN
2.2.1. Đặt vấn đề
Trong mục này, tác giả trình bày một thuật toán có tên là
FHN (Khai phá hiệu quả tập mục lợi ích cao với lợi nhuận
đơn vị âm) để khai phá HUIs trong khi xem xét cả lợi nhuận
đơn vị dương và âm. Để thực hiện thuật toán khi sử dụng đơn
vị lợi nhuận âm ta cần định nghĩa lại như lợi ích bên ngoài
chấp nhận hai giá trị dương và âm.
2.2.2. Nội dung thuật toán FHN
Đầu tiên, mô tả thủ tục chính, tương tự thủ tục chính từ thuật
toán FHM [10]. Thủ tục này chỉ có thể xử lý các giá trị lợi ích
bên ngoài dương. Sau đó sẽ xử lý lợi nhuận đơn vị âm mà
không mất bất kỳ HUIs nào.
Thủ tục Search lấy đầu vào (1) là một tập mục 𝑃, (2) phần
mở rộng của 𝑃 có dạng 𝑃𝑧 nghĩa là có được 𝑃𝑧 bằng cách
thêm mục 𝑧 vào 𝑃, (3) 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 và (4) EUCS. Thủ tục Search
được thực hiện như sau. Đối với mỗi phần mở rộng 𝑃𝑥 của 𝑃,


11


nếu tổng các giá trị 𝑖𝑢𝑡𝑖𝑙 của danh sách lợi ích của 𝑃𝑥 không
nhỏ hơn 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 thì 𝑃𝑥 là một tập mục lợi ích cao và là đầu
ra (xem tính chất 1.2). Sau đó, nếu tổng của các giá trị 𝑖𝑢𝑡𝑖𝑙
và 𝑟𝑢𝑡𝑖𝑙 trong danh sách lợi ích của 𝑃𝑥 không nhỏ hơn
𝑚𝑖𝑛𝑢𝑡𝑖𝑙, điều này có nghĩa là những phần mở rộng của 𝑃𝑥
cần được thăm dò (xem tính chất 1.3). Việc này được thực
hiện bằng cách hợp nhất 𝑃𝑥 với tất cả phần mở rộng của 𝑃𝑦
thuộc 𝑃 sao cho 𝑦 ≻ 𝑥 và 𝑇𝑊𝑈({𝑥, 𝑦}) ≥ 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 để hình
thành các phần mở rộng có dạng 𝑃𝑥𝑦 chứa |𝑃𝑥| + 1 các hạng
mục. Danh sách lợi ích của 𝑃𝑥𝑦 sau đó được xây dựng như
trong FHM bằng cách gọi thủ tục Construct để nối các danh
sách lợi ích của 𝑃, 𝑃𝑥 và 𝑃𝑦. Thủ tục thứ 2 giống như trong
FHM [10] và không nêu chi tiết ở đây. Sau đó, một cuộc gọi
đệ quy 𝑃𝑥𝑦 tới thủ tục Search được thực hiện nhằm tính độ
lợi ích của nó và thăm dò phần mở rộng của nó. Kể từ khi thủ
tục Search khởi động từ các hạng mục đơn lẻ, nó sẽ tiến hành
thăm dò đệ quy không gian tìm kiếm của các tập mục bằng
cách nối các mục đơn và chỉ tỉa không gian tìm kiếm theo như
tính chất 1.3.
+ Điều chỉnh thuật toán để xử lý các khoản lợi nhuận đơn
vị âm
Trước hết chúng ta phải xác định thứ tự toàn phần ≻ sao cho
các hạng mục âm luôn cùng tất cả các hạng mục dương. Bây
giờ hãy xét một tập 𝑋. Cho 𝑢𝑝(𝑋) ⊆ 𝑋 là tập hợp tất cả các
mục dương trong 𝑋. Ngoài ra, gọi 𝑢𝑛(𝑋) ⊆ 𝑋 là tập hợp tất
cả các mục âm thuộc 𝑋.
Tuy nhiên việc sử dụng điều kiện cắt tỉa vào trong thuật toán
yêu cầu tính toán một cách hiệu quả. Thứ nhất, thay vì tính
TWU ban đầu, TWU được xác định lại sẽ được sử dụng để



12

ngăn chặn việc đánh giá thấp độ lợi ích của HUI chứa các mục
dương. Thứ hai, danh sách lợi ích được xác định lại sao cho
các yếu tố 𝑖𝑝𝑢𝑡𝑖𝑙 và 𝑖𝑛𝑢𝑡𝑖𝑙 được sử dụng. Hơn nữa, giá trị
𝑟𝑢𝑡𝑖𝑙 của danh sách lợi ích chỉ chứa các giá trị lợi ích của các
mục dương. Lý do là các thuật toán có thể bỏ sót một số HUIs
nếu giá trị 𝑟𝑢𝑡𝑖𝑙 của các mục âm không nằm trong danh sách
lợi ích. Thứ ba, thứ tự toàn phần được xác định lại sao cho tất
cả các mục âm áp đảo các mục dương. Thứ tư, điều kiện cắt
tỉa TWU 𝑇𝑊𝑈({𝑥, 𝑦}) < 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 sử dụng cấu trúc EUCS chỉ
áp dụng cho các mục dương. Thứ năm, điều kiện cắt tỉa áp
dụng duy nhất để quyết định liệu một tập mục có nên mở rộng
các mục âm hay không. Thứ sáu, điều kiện cắt tỉa các mục
dương dựa trên tổng các giá trị 𝑖𝑛𝑢𝑡𝑖𝑙 và 𝑟𝑢𝑡𝑖𝑙 được định
nghĩa lại như tổng các giá trị 𝑖𝑝𝑢𝑡𝑖𝑙 và 𝑟𝑢𝑡𝑖𝑙. Bây giờ chúng
ta sẽ thảo luận về sự đúng đắn của những sửa đổi này để tìm
ra tất cả HUIs khi sử dụng các mục âm và mục dương. Ta chia
phần giải thích này thành hai phần (1) thuật toán trước tiên
mở rộng tập mục bằng cách thêm các hạng mục dương và (2)
sau đó thuật toán nối các hạng mục âm (trên cơ sở ≻ ). Trong
phần đầu tiên, FHN đúng vì nó hoạt động như một thuật toán
khai thác HUI thông thường để phát hiện các HUI chỉ chứa
các mục dương. Điều này đúng bởi vì các mặt hàng âm luôn
luôn được thêm sau các mặt hàng dương (do đó các mục âm
không được xét khi các HUIs chỉ chứa các mục dương). Hơn
nữa, điều kiện cắt tỉa phải đảm bảo tổng các giá trị 𝑟𝑢𝑡𝑖𝑙 và
𝑖𝑝𝑢𝑡𝑖𝑙 phải lớn hơn 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 vì các giá trị 𝑟𝑢𝑡𝑖𝑙 của các mục

âm không được xét trong danh sách lợi ích khi thuật toán
TWU chỉ chứa các mục dương. Việc cắt tỉa phải đảm bảo sao
cho việc mở rộng 𝑃𝑥𝑦 không được khám phá nếu


13

𝑇𝑊𝑈(𝑥, 𝑦) < 𝑚𝑖𝑛𝑢𝑡𝑖𝑙 là chính xác vì sử dụng TWU được
định nghĩa lại. Ở phần thứ hai (khi các mục âm được kết nối),
ta chỉ sử dụng điều kiện cắt tỉa theo như tính chất 2.4. Chính
vì vậy, không có HUIs chứa các mục âm bị bỏ sót.
2.3. Thuật toán PHM
2.3.1. Đặt vấn đề
Trong mục này, tác giả trình bày một thuật toán có tên PHM.
Thứ nhất, khái niệm các mẫu tuần hoàn được sử dụng trong
FIM được kết hợp với các khái niệm của HUIs để xác định
một kiểu mẫu mới được đặt tên Các tập mục lợi ích cao có
tính chu kỳ định kỳ (PHIs), và các thuộc tính của nó được
nghiên cứu. Thứ hai, các biện pháp mới của định kỳ định kỳ
được gọi là chu kỳ trung bình và chu kỳ tuần hoàn tối thiểu
được giới thiệu để cung cấp một cách linh hoạt để đánh giá
chu kỳ mẫu. Thứ ba, một thuật toán hiệu quả tên là PHM (khai
thác tập mục lợi ích cao theo chu kỳ) được trình bày phát hiện
có hiệu quả các tập mục có lợi ích cao có chu kì.
2.3.2. Nội dung thuật toán PHM
Thuật toán PHM là một thuật toán dựa trên danh sách lợi
ích, dựa trên ý tưởng từ thuật toán FHM [10], trong đó danh
sách lợi ích của mỗi tập thuộc tính X được chú giải bằng hai
giá trị bổ sung: minper(X) và maxper(X).
Thủ tục chính của PHM đầu vào cơ sở dữ liệu giao tác: input,

và minutil, minAvg, maxAvg, minPer và maxPer. Thuật toán
đầu tiên quét cơ sở dữ liệu để tính toán TWU({i}), minper({i}),
maxper({i}), và |g({i})| cho mỗi mục i ∈ I. Sau đó, thuật toán
tính giá trị γ = (|D|/maxAvg) -1 sau đó sẽ được sử dụng cho
tập thường xuyên tỉa sử dụng tính chất 2.2. Sau đó, thuật toán
xác định tập I * của tất cả các mục có một TWU không nhỏ


14

hơn minutil, chu kỳ tối đa không lớn hơn maxPer, và xuất hiện
trong không ít hơn γ lần giao tác (các mục khác bị bỏ qua vì
chúng không thể là một phần của PHUIs bởi tính chất 1.7, 2.1
và 2.2). Các giá trị TWU của các mục sau đó được sử dụng để
thiết lập thứ tự toàn phần ≻ trên các mục, đó là thứ tự của các
giá trị TWU tăng dần. Sau đó thực hiện quét cơ sở dữ liệu.
Trong quá trình quét cơ sở dữ liệu này, các mục trong các giao
tác được sắp xếp lại theo thứ tự toàn phần ≻, danh sách lợi ích
của mỗi mục I ∈ I* được xây dựng và một cấu trúc tên EUCS
được xây dựng [10]. Cấu trúc thứ hai được định nghĩa như là
một tập gồm ba ba dạng (a, b, c) ∈ I* x I* x R. Một tập ba (a,
b, c) chỉ ra rằng TWU({a, b}) = c. EUCS có thể được thực
hiện như một ma trận tam giác hoặc như là một sơ đồ phạm
vi của các hashmaps chỉ có các bộ đôi của dạng (a, b, c) sao
cho c≠0 được giữ lại. Sau khi xây dựng EUCS, khám phá tìm
kiếm sâu đầu tiên của các tập bắt đầu bằng cách gọi thủ tục đệ
quy Search bằng cách tìm các mục rỗng ∅, tập các mục đơn
I*, 𝛾, minutil, minAvg, minPer, maxPer, cấu trúc EUCS, và
|D|.
Thủ tục Search lấy khi nhập vào tập các mục P, các phần mở

rộng của P có dạng Pz có nghĩa là Pz đã có được trước đây
bằng cách nối một mục z tới P, 𝛾, minutil, minAvg, minPer,
maxPer, cấu trúc EUCS, và |D|. Các thủ tục tìm kiếm thực
hiện một vòng lặp trên mỗi phần mở rộng Px của P. Trong
vòng này, trung bình chu kỳ của Px được thu được bằng cách
chia | D |. Bởi số lượng các yếu tố trong danh sách lợi ích của
Px cộng với một. Sau đó, nếu khoảng trung bình của Px nằm
trong khoảng [minAvg, maxAvg], tổng giá trị iutil của danh
sách lợi ích của Px không nhỏ hơn minutil, chu kỳ tối thiểu /


15

tối đa của Px không nhỏ hơn / không lớn hơn minPer / maxPer
theo các giá trị được lưu trữ trong danh sách lợi ích của nó,
sau đó Px là PHUIs và nó xuất ra. Sau đó, nếu tổng các giá trị
iutil và rutil trong danh sách lợi ích của Px không ít hơn
minutil, số lượng các mục trong danh sách lợi ích của Px
không nhỏ hơn𝛾, và maxper (Px) không lớn hơn maxPer, Nó
có nghĩa là mở rộng của Px nên được khám phá (theo tính chất
1.6, 2.1 và 2.2 ). Điều này được thực hiện bằng cách hợp nhất
Px với tất cả các phần mở rộng Py của P sao cho y ≻ x để tạo
thành phần mở rộng có dạng Pxy chứa | Px | + 1 mục. Danh
sách lợi ích của Pxy sau đó được xây dựng bằng cách gọi thủ
tục Construct, để kết hợp lợi ích giá trị danh sách của P, Px và
Py. Sau đó, một cuộc gọi đệ quy cho thủ tục Search với Pxy
được thực hiện để tính lợi ích của nó và khám phá các phần
mở rộng của nó. Sau đó, một cuộc gọi đệ quy cho thủ tục
Search với Pxy được thực hiện để lợi ích của nó và khám phá
các phần mở rộng của nó. Thủ tục Search bắt đầu từ các mục

đơn lẻ, khám phá đệ quy không gian tìm kiếm của các tập
bằng cách nối các mục đơn và chỉ dọn dẹp không gian tìm
kiếm bằng tính chất 1.6, 2.1 và 2.2. Do đó, có thể dễ dàng thấy
rằng thủ tục này chính xác và đầy đủ để khám phá tất cả các
PHUIs. Hơn nữa, trong quá trình thực hiện PHM, có hai sự
tối ưu hóa bổ sung, được mô tả ngắn gọn tiếp theo.
Tối ưu 1. Phương pháp ước lượng chu kì trung bình
(EAPP).
Các thuật toán PHM tạo ra một cấu trúc được gọi là EUCS
để lưu giữ TWU của tất cả các cặp mục xảy ra trong cơ sở dữ
liệu, và cấu trúc này được sử dụng để tỉa bất kỳ tập các Pxy nào
có chứa một cặp item {x, y} có TWU thấp hơn minutil (dòng


16

7 của thủ tục Search). Chiến lược EAPP là một chiến lược
mới sử dụng cùng một ý tưởng nhưng các mục sử dụng chu
kỳ trung bình thay vì các lợi ích. Trong quá trình quét cơ sở
dữ liệu lần thứ hai, một cấu trúc mới gọi là ESCS được tạo ra
để lưu trữ | g({x, y}) | Cho mỗi cặp mục {x, y}, dòng 7 của
thủ tục tìm kiếm được sửa đổi thành tập con Pxy nếu | g ({x,
y}) | nhỏ hơn 𝛾 theo tính chất 2.8.
Tối ưu 2. Abandoning List Construction early (ALC). Một
chiến lược khác được giới thiệu trong PHM là ngừng xây
dựng danh sách lợi ích của một tập nếu một điều kiện cụ thể
được đáp ứng, cho thấy rằng tập không thể là một PHUI. Theo
tính chất 2.8, một tập các Pxy không thể là một PHUI, nếu nó
xuất hiện trong các giao tác nhỏ hơn y = (| D / / MaxAvg) - 1.
Chiến lược ALC bao gồm sửa đổi các thủ tục Construct như

sau. Sửa đổi lần đầu tiên là khởi tạo một biến max với giá trị
𝛾 trong Dòng 1. Sửa đổi lần thứ hai là các dòng sau, trong đó
danh sách lợi ích của Pxy được xây dựng bằng cách kiểm tra
nếu mỗi bộ trong danh sách lợi của Px xuất hiện trong danh
sách lợi ích của Py (Dòng 3). Đối với mỗi bộ không xuất hiện
trong Py, biến max được giảm dần bởi 1. Nếu max là nhỏ hơn
𝛾, việc xây dựng danh sách lợi ích của Pxy có thể bị dừng lại
vì | g(Pxy) | Sẽ không được lớn hơn 𝛾. Do đó Pxy không phải là
PHUI theo tính chất 2.8, và các phần mở rộng của nó có thể
bị bỏ qua.
2.4 .Thuật toán FOSHU
2.4.1. Đặt vấn đề
Trong mục này, tác giả trình bày một thuật toán khai thác
HOU với lợi nhuận đơn vị âm/dương được bán trong khoảng
thời gian [20]. Gọi PE là tập các số nguyên dương đại diện


17

cho các khoảng thời gian. Mỗi giao tác Tc ∈ D được kết hợp
với một khoảng thời gian pt(Tc) ∈ PE, đại diện cho khoảng
thời gian diễn ra giao tác.
2.4.2. Nội dung thuật toán FOSHU
Trong phần này, tác giả trình bày về thuật toán FOSHU, dựa
vào cấu trúc danh sách lợi ích được sử dụng trong FHM[10]
và đo giá trị TWU, để xử lý các khoảng thời gian và các mục
có lợi nhuận theo đơn vị âm. Xử lý khoảng thời gian
Thủ tục chính
Thủ tục chính lấy làm đầu vào một cơ sở dữ liệu chuyển tiếp
và ngưỡng minutil. Đầu tiên, thuật toán quét cơ sở dữ liệu để

tính toàn bộ TWU của mỗi mục i, được xác định bằng TWU
(i) = h∈pi(x) TWU(X, h) và TWU({i}, h) cho mỗi giai đoạn
h. Hơn nữa, tập của tất cả các khoảng thời gian PE và các lợi
ích pto(h) của mỗi giai đoạn h ∈ PE được tính trong lần quét
cơ sở dữ liệu đầu tiên.
Sau đó, thuật toán cố gắng loại bỏ từng mục đơn lẻ không
thuộc tập tính chất lợi ích cao. Điều này được thực hiện bằng
cách tính đến (i) cho mỗi mục i bằng cách sử dụng pi(i) và lợi
ích của từng khoảng thời gian thu được trước đó. Điều này
cho phép tạo ra tập I * chứa tất cả các mục i sao cho có tồn tại
ít nhất một khoảng thời gian h thỏa mãn TWU({i}, h)/to({i})≥
minutil. Sau đó, tất cả các mục không có trong I * sẽ bị bỏ qua
vì chúng không thể là một phần của một tập lợi ích cao và bày
khoảng thời của tính chất 2.9. Điều quan trọng là TWU cần
phải được sử dụng ở đây để phân cắt các mục đơn thay vì tổng
iutil và rutil của danh sách lợi ích (tính chất 2.11), vì chiến
lược phân cắt sau này được định nghĩa là các phần mở rộng
w.r.t của một mục, nhưng ở giai đoạn này, phần mở rộng vẫn


18

chưa được xem xét. Các giá trị TWU của các mục sau đó được
sử dụng để thiết lập một thứ tự toàn phần ≻ trên tập I *, là thứ
tự tăng dần các giá trị TWU toàn cục. Thứ tự này được sử
dụng do bớt giảm không gian tìm kiếm khi sử dụng một thăm
dò sâu đầu tiên trong khai thác HUI [19, 26, 29]. Sau đó thực
hiện quét cơ sở dữ liệu lần thứ hai. Trong quá trình quét cơ sở
dữ liệu này, các mục trong giao tác được sắp xếp lại theo thứ
tự toàn phần ≻ và danh sách lợi ích của mỗi mục i ∈ I* được

xây dựng. Sau khi xây dựng các danh sách lợi ích, khám phá
tìm kiếm đầu tiên của các tập bắt đầu bằng cách áp dụng
phương pháp đệ quy tìm các tập rỗng ∅, tập I* và minutil. Thủ
tục Search lấy đầu vào (1) là một tập mục P, (2) phần mở rộng
của P có dạng Pz có nghĩa là rằng Pz đã có được trước đó bằng
cách thêm một mục z vào P, và (3) minutil.
Thủ tục Search như sau. Đối với mỗi phần mở rộng Px của
P, thủ tục tìm kiếm đầu tiên quét danh sách lợi ích của Px để
tính sumUtil (Px,h) cho mỗi khoảng thời gian h khi Px xuất
hiện. Đồng thời, tổng lợi ích của các khoảng thời gian mà Px
xuất hiện (to(Px)) được tính toán, cũng như tổng lợi ích của
Px (tương đương với sumlUtil(Px) của tính chất 2.13). Sau đó,
lợi ích tương dối của Px được tính bằng ru(Px) =
sumlUtil(Px)/to(Px). Nếu ru(Px) < minutil, Px là một tập mục
có lợi ích cao và là đầu ra. Sau đó, nếu có một khoảng thời
gian h sao cho tổng của sum/Util(Px, h) + sumRUtil(Px,
h))/to(Px) lớn hơn minutil, có nghĩa là các phần mở rộng của
Px nên khai phá (theo tính chất 2.20).
Thực hiện bằng cách hợp nhất Px với tất cả các phần mở rộng
Py của P sao cho y ≻ x để tạo thành phần mở rộng có dạng Pxy
chứa | Px | +1 mục. Danh sách lợi ích của Pxy sau đó được tạo


19

ra trong FHM bằng cách sử dụng Thủ tục Contrstruct để nối
các danh sách lợi ích của P, Px và Py. Thủ tục này cũng tương
tự như trong FHM [10] và do đó không cần mô tả chi tiết
thêm. Sau đó, thực hiện kiểm tra để xác định nếu Pxy và các
phần mở rộng có thể là các tập mục giá trị cao theo khoảng

thời gian hay không bằng cách sử dụng Thủ tục TWU (dòng
12), dựa trên tính chất 2.12. Thực hiện bằng cách quét danh
sách lợi ích của Pxy. Để tính TWU(Pxy, h) cho mỗi khoảng thời
gian h trong đó Pxy xuất hiện. Nếu TWU(Pxy, h)/pto (h)≥
minutil trong ít nhất một khoảng thời gian h, sau đó Pxy sẽ
được thêm vào phần mở rộng của Px, tập hợp các phần mở
rộng của Px sẽ được xem xét để mở rộng thêm với lặp lại đệ
quy khi Search.
Xử lý lợi nhuận đơn vị âm Để có thể chuyển đổi thuật toán
được mô tả trong phần trước thành một thuật toán mà đầu ra
là các HOU khi sử dụng cả các mục âm và mục dương, tiến
hành thực hiện các sửa đổi sau đây. Chúng ta xác định thứ tự
toàn phần ≻ sao cho các mục âm nối tiếp các mục dương.
Bằng cách sử dụng thứ tự này, các mục dương được sử dụng
để mở rộng một tập trước khi sử dụng mục âm. Điều này cho
phép chúng ta xác định các tỉ lệ phân cắt mới. Sau đó, đối với
tập X, chúng ta sử dụng các kí hiệu up(X) và un(X) tham chiếu
tương ứng đến tập hợp của tất cả mục âm và mục dương trong
X.
Dựa trên các ý tưởng trên, thuật toán FOSHU đã thực hiện
các sửa đổi sau đây: Thứ nhất, trong tính toán TWU ban đầu,
TWU được định nghĩa lại được sử dụng để tránh đánh giá thấp
các lợi ích của HOUs chứa các mục dương. Thứ hai, danh
sách lợi ích được xác định lại sao cho các mục iputil và inutil


20

được sử dụng. Ngoài ra, chỉ các giá trị lợi ích của các mục
dương được nằm trong các giá trị rutil của danh sách lợi ích

(như đã giải thích trước). Thứ ba, thứ tự toàn phần ≻ được xác
định sao cho các mục âm nối tiếp theo sau các mục dương
(như đã giải thích trước). Thứ tư, điều kiện phân cắt dựa trên
tính chất 2.20 đối với mục dương dựa trên tổng các giá trị iutil
và rutil được định nghĩa lại như tính chất 2.25.
2.5. Kết luận chương 2
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 bốn thuật toán khai phá tập mục lợi
ích cao :
+ FHM: Thuật toán khai phá tập mục lợi ích cao (FHM) có
thể phát hiện ra các tập mục lợi ích cao mà không cần tạo ra
các ứng viên .
+ FHN: Thuật toán khai phá tập mục lợi ích cao với lợi
nhuận âm (FHN) có thể phát hiện ra các tập mục lợi ích cao
mà không cần tạo ra các ứng viên và giới thiệu một số chiến
lược để xử lý các hạng mục lợi ích âm một cách hiệu quả.
+ PHM: Một thuật toán khai thác tập mục lợi ích cao hiệu
quả có tên là PHM liệt kê tất cả các tập phổ biến hữu ích một
cách hiệu quả và có thể lọc một lượng lớn các chuỗi tuần hoàn
không tuần hoàn để chỉ tiết lộ các tập thuộc tính hữu ích theo
chu kỳ mong muốn. Mục đích là để khám phá các nhóm mặt
hàng được khách hàng mua theo định kỳ và tạo ra lợi nhuận
cao.
+ FOSHU: Thuật toán khai thác Tập mục lợi ích cao sử dụng
thời gian bán để khai thác tập mục HUI trong khi xem xét thời
gian bán của mặt hàng và các mặt hàng lợi nhuận đơn vị
dương hoặc âm.


21


Chương 3 - CÀI ĐẶT ỨNG DỤNG THỬ NGHIỆM
3.1. Phát biểu bài toán
Các dữ liệu khai thác từ danh sách hóa đơn bán hàng đưa ra
thông tin có ích nhằm trợ giúp các bộ phận có những phân tích
hiệu quả như quá trình bày hàng (tiếp thị chéo), quá trình đặt
hàng, lưu kho, bày hàng hàng hóa, kế hoạch khuyến mại …
3.2. Thông tin cơ sở dữ liệu mẫu
+ Số lượng giao tác: 214 giao tác .
+ Số lượng mã hàng: 597 mục.
+ Bao gồm các chương trình giảm giá dẫn tới lợi nhuận bằng
0, lợi nhuận dương và lợi nhuận âm.
3.3. Lựa chọn công cụ phát triển
- Công cụ và Ngôn ngữ thực hiện
+ Hệ điều hành Windows 7.
+ Chip: Intel(R) Core(TM) i3-311M CPU @ 2.40GHz
+ Ngôn ngữ Java chạy Net Bean 8.1.1.
3.4. Quy trình xây dựng ứng dụng khai phá tập mục lợi
ích cao
Quá trình khai phá dữ liệu được thực hiện theo các bước sau:
Bước thứ nhất: Lựa chọn dữ liệu giao dịch: Lựa chọn khoảng
thời gian cần xuất dữ liệu, cửa hàng bán, nhóm hàng.
Bước thứ hai: Thu thập và tiền xử lý dữ liệu: Tại bước này
tiến hành làm sạch dữ liệu bao gồm các thông tin không cần
thiết cho quá trình sử dụng cho chương trình. Xử lý theo định
dạng chuẩn.
Bước thứ ba: Khai phá dữ liệu giao dịch: Sử dụng thuật toán
FHM, thuật toán FHN, thuật toán PHM, thuật toán FOSHU.
Bước thứ tư: Kết quả thu được khi sử dụng thuật toán: Sử



22

dụng thuật toán FHM, thuật toán FHN, thuật toán PHM, thuật
toán FOSHU
Bước thứ năm: Đánh giá kết quả thu được khi: Sử dụng thuật
toán FHM, thuật toán FHN, thuật toán PHM, thuật toán
FOSHU.
3.5. Áp dụng khai phá tập mục lợi ích cao
3.5.1. Lựa chọn dữ liệu giao dịch
Do tính chất số lượng giao tác lớn (hóa đơn bán lẻ), tác giả
sử dụng số liệu từ ngày 01-09-2017 đến ngày 05-09-2017 (04
ngày) được thông qua 01 máy bán hàng với thông tin như đã
mô tả.
3.5.2. Thu thập và tiền xử lý dữ liệu
Trên dữ liệu thu được tiến hành xử lý dữ liệu và chọn dữ
liệu cho chương trình khai phá tiếp theo. Mỗi một mặt hàng
xuất hiện trên một hàng mặc dù đều cùng một giao dịch. Bước
tiếp theo thực hiện xử lý mỗi một giao dịch trên một dòng và
đủ thông tin định dạng cho quá trình làm đầu vào cho dữ liệu
chương trình
3.5.3. Thực hiện chương trình khai phá lợi ích cao
Khai phá lợi ích cao FHM
3.5.4. Kết quả thu được khi sử dụng thuật toán
Kết quả thử nghiệm khi sử dụng thuật toán FHM:
+ Khi nhập giá trị tối thiểu ( ví dụ minutil= 590.000) ta thu
được : 10 tập mục trong đó liệt kê ra được lợi nhuận của các
mặt hàng cùng bán với nhau có lợi nhuận ≥ 590.000
Kết quả thử nghiệm sử dụng thuật toán FHN:
+ Khi nhập giá trị tối thiểu (ví dụ minutil= 590.000): 10 tập

mục trong đó liệt kê ra được lợi nhuận của các mặt hàng cùng
bán với nhau có lợi nhuận ≥ 590.000.


23

Kết quả thử nghiệm sử dụng thuật toán PHM: Khi nhập
giá trị: minutil = 590.000, minper = 1, maxper = 10000,
minavgper = 1, maxavgper = 10000, Kết quả ta thu được: 10
tập mục có khoảng cách chu kỳ với lợi nhuận ≥ 590.000
Kết quả thử nghiệm sử dụng thuật toán FOSHU: Khi
nhập giá trị: minutil = 0.442 ta thu được: 12 tập mục trong đó
có tỷ lệ lợi nhuận ≥ minutil = 0.442
3.5.5. Đánh giá kết quả chương trình
Các thuật toán cho kết quả như sau:
+ Sử dụng các thuật toán FHM và FHN: Cho kết quả 10
nhóm mặt hàng bán cùng nhau với tổng giá trị lợi nhuận lớn
hơn: 590.000.
+ Sử dụng thuật toán FHN: Cho kết quả 10 nhóm mặt hàng
bán cùng nhau với tổng giá trị lợi nhuận lớn hơn: 590.000.
+ Sử dụng thuật toán PHM: Cho kết quả 10 nhóm mặt hàng
bán cùng nhau với tổng giá trị lợi nhuận lớn hơn: 590.000
+ Sử dụng thuật toán FOSHU: Với tỷ lệ lợi ích tương đối
=0.442 Cho kết quả 10 nhóm mặt hàng bán cùng nhau với
tổng giá trị lợi nhuận lớn hơn: 590.000 và 2 nhóm mặt hàng
có lợi nhuận lớn hơn 580.000
3.6. Kết luận chương 3
Trong chương 3, tiến hành chạy thử nghiệm chương trình
với 4 thuật toán áp dụng thử nghiệm tại Công ty cổ phần siêu
thị VHSC(VIETNAM) trên cơ sở dữ liệu với mẫu thực tế.



×