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

Một số thuật toán khai phá luật dãy và ứng dụng thử nghiệm vào hệ thống quản lý khách hàng và tính hóa đơn nước

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 (1.84 MB, 60 trang )


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ




NGUYỄN ĐÌNH VĂN




MỘT SỐ THUẬT TOÁN KHAI PHÁ
LUẬT DÃY VÀ ỨNG DỤNG THỬ NGHIỆM
VÀO HỆ THỐNG QUẢN LÝ KHÁCH HÀNG
VÀ TÍNH HÓA ĐƠN NƢỚC



LUẬN VĂN THẠC SĨ






Hà Nội - 2011


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ






NGUYỄN ĐÌNH VĂN




MỘT SỐ THUẬT TOÁN KHAI PHÁ
LUẬT DÃY VÀ ỨNG DỤNG THỬ NGHIỆM
VÀO HỆ THỐNG QUẢN LÝ KHÁCH HÀNG
VÀ TÍNH HÓA ĐƠN NƢỚC

Ngành: Công Nghệ Thông Tin
Chuyên ngành: Hệ Thống Thông Tin
Mã số: 60.48.05

LUẬN VĂN THẠC SĨ


NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS. TS. Hà Quang Thụy



Hà Nội - 2011

- 3 -
Khai phá luật dãy Nguyễn Đình Văn


LỜI CAM ĐOAN

Tôi xin cam đoan luận văn này với đề tài “Một số thuật toán khai phá dãy và ứng
dụng thử nghiệm vào hệ thống quản lý khách hàng và tính hóa đơn nƣớc” là công trình
do tôi nghiên cứu và hoàn thành dƣới sự hƣớng dẫn của PGS. TS. Hà Quang Thụy,
trong luận văn có sử dụng một số tài liệu tham khảo nhƣ đã nêu trong phần “Tài liệu
tham khảo”.
Tác giả luận văn

Nguyễn Đình Văn
- 4 -
Khai phá luật dãy Nguyễn Đình Văn

MỤC LỤC
MỞ ĐẦU 6
CHƢƠNG 1 – KHÁI QUÁT CHUNG VỀ LUẬT DÃY VÀ KHAI PHÁ LUẬT DÃY 8
1.1 Giới thiệu chung về luật kết hợp 8
1.1.1 Khái niệm luật kết hợp 8
1.1.2 Các ứng dụng điển hình của luật kết hợp 9
1.1.3 Thuật toán Apriori 10
1.2 Luật dãy 12
1.2.1 Khái niệm luật dãy và ví dụ 12
1.2.2 Một số ứng dụng 14
1.2.3 Luật dãy và luật kết hợp: một số đối sánh 16
1.2.4 Sơ bộ về các phƣơng pháp khai phá luật dãy 17
CHƢƠNG 2 – CÁC PHƢƠNG PHÁP KHAI PHÁ LUẬT DÃY 21
2.1 Khái quát về khai phá luật dãy 21
2.2 Các thuật toán khởi thủy 23
2.2.1 Thuật toán AprioriAll 23
2.2.2 Thuật toán AprioriSome 27

2.2.3 Thuật toán GSP (Generalized Sequential Patterns) 30
2.3 Hai phƣơng pháp khai phá luật dãy 36
2.3.1 Khai phá dãy sử dụng kỹ thuật phân vùng (thuật toán Dynamic DISC-all) 36
2.3.2 Khai phá luật dãy bằng mã hóa khối cơ bản với thuật toán PRISM 38
CHƢƠNG 3 – ĐỀ XUẤT ỨNG DỤNG KHAI PHÁ LUẬT DÃY TRONG HỆ THỐNG
QUẢN LÝ KHÁCH HÀNG VÀ TÍNH HÓA ĐƠN NƢỚC 43
3.1 Tổng quan về hệ thống quản lý khách hàng và tính hóa đơn nƣớc 43
3.1.1 Phân hệ quản lý khách hàng 44
3.1.2 Phân hệ lập và in hóa đơn 46
3.1.3 Phân hệ thanh toán hóa đơn và quản lý nợ 48
3.1.4 Phân hệ báo cáo thống kê 49
3.2 Phát biểu bài toán 50
3.3 Mô hình giái quyết 52
3.4 Thực nghiệm và đánh giá 55
3.4.1 Giới thiệu thực nghiệm 55
3.4.2 Kết quả thực nghiệm và nhận xét 57
KẾT LUẬN 58
- 5 -
Khai phá luật dãy Nguyễn Đình Văn

CÁC ĐỊNH NGHĨA VÀ CHỮ VIẾT TẮT
Chữ viết tắt
Diễn giải
Candidate
Ứng viên
CSDL
Cơ sở dữ liệu
Element
Thành phần dãy
Frequent item

Phần tử thƣờng xuyên
Gcd
Hàm tính ƣớc số chung lớn nhất
Item
Phần tử
Itemset
Tập hợp các phần tử (item) xảy ra cùng lúc
Large sequence
Dãy phổ biến
Maximal sequence
Dãy tối đa, dãy phổ biến nhất
Projected database
CSDL quy chiếu
Sequence
Dãy
Support
Độ hỗ trợ
Support threshold
Ngƣỡng hỗ trợ
Supsequence
Dãy con
Threshold
Ngƣỡng
- 6 -
Khai phá luật dãy Nguyễn Đình Văn

MỞ ĐẦU
Khai phá luật dãy là một trong những lĩnh vực rất quan trọng trong nghiên cứu
khai phá dữ liệu của thập kỷ gần đây và ngày càng đƣợc áp dụng rộng rãi trong nhiều
lĩnh vực khác nhau. Vì trong thực tế, dữ liệu dãy tồn tại rất phổ biến, nhƣ dãy dữ liệu

mua sắm của khách hàng, dữ liệu điều trị y tế, các dữ liệu liên quan đến các thảm họa
tự nhiên, dữ liệu xử lý khoa học và kỹ thuật, dữ liệu chứng khoán và phân tích thị
trƣờng, dữ liệu các cuộc gọi điện thoại, nhật ký truy cập web, dãy ADN biểu thị gen
Mục đích chính của khai phá luật dãy là tìm kiếm và phát hiện tất cả các dãy con lặp đi
lặp lại trong một CSDL theo yếu tố thời gian.
Hiện nay, trên thế giới đã có rất nhiều nhóm tác giả nghiên cứu đề xuất các thuật
toán với các phƣơng pháp tiếp cận khai phá luật dãy khác nhau [1,2,5-12,14-16] nhằm
giải quyết sự đa dạng của các loại bài toán cũng nhƣ đƣa ra các hƣớng cải tiến nhằm
giảm thiểu chi phí thời gian và tài nguyên hệ thống.
Luận văn này nghiên cứu một số thuật toán khai phá luật dãy, trong đó tập trung
chủ yếu vào các thuật toán AprioriAll, AprioriSome [1], vì đây là những thuật toán rất
nổi tiếng trong lĩnh vực khai phá luật dãy và phù hợp với việc ứng dụng thử nghiệm
vào Hệ thống Quản lý khách hàng và tính hóa đơn nƣớc. Luận văn tiếp tục khóa luận
tốt nghiệp đại học trƣớc đây của tôi (Nguyễn Đình Văn (2003), Phân tích thiết kế hệ
thống và ứng dụng vào bài toán quản lý khách hàng và tính hóa đơn nước) trong việc
bổ sung những tính năng nâng cao cho hệ thống. Luận văn hy vọng phát hiện đƣợc
một số luật dãy, chẳng hạn nhƣ dãy thời gian tiêu thụ nƣớc nhiều nhất trong năm, dãy
dịch chuyển mức tiêu thụ nƣớc theo mục đích sử dụng (sinh hoạt, sản xuất, kinh
doanh, công cộng, …), phát hiện những trƣờng hợp bất thƣờng trong sử dụng nƣớc (tỉ
lệ đăng ký sử dụng và thực tế sử dụng nƣớc), mức độ thất thoát nƣớc và nguyên nhân
thất thoát nƣớc … để lãnh đạo xí nghiệp có thể đƣa ra các biện pháp quản lý, các chiến
lƣợc sản xuất, kinh doanh phù hợp.
Luận văn đƣợc trình bày gồm có phần mở đầu, ba chƣơng và phần kết luận.
Trong chƣơng một, luận văn tập trung chủ yếu vào giới thiệu tổng quan về luật
dãy và khái phá luật dãy. Vì luật dãy có những mối liên hệ gần gũi với luật kết hợp và
một số thuật toán khai phá luật dãy trong luận văn là mở rộng của thuật toán điển hình
Apirori khai phá luật kết hợp, nên phần này sẽ trình bày khái quát về luật kết hợp, một
số đối sánh giữa luật dãy và luật kết hợp. Giới thiệu sơ bộ các phƣơng pháp tiếp cận
khai phá luật dãy và các thuật toán điển hình tƣơng ứng. Nội dung của chƣơng này
đƣợc tổng hợp từ các tài liệu [1,3-4,13].

Trong chƣơng hai, luận văn tập trung giới thiệu các thuật toán khai phá luật dãy
nhƣ AprioriAll [1], AprioriSome [1], GSP [2] là những thuật toán khởi thủy khai phá
luật dãy. Giới thiệu hai phƣơng pháp khai phá luật dãy đƣợc công bố thời gian gần đây
- 7 -
Khai phá luật dãy Nguyễn Đình Văn

là “Khai phá luật dãy sử dụng kỹ thuật phân vùng” [10] và “Khai phá luật dãy bằng mã
hóa khối cơ bản” [16].
Trong chƣơng ba, luận văn giới thiệu tổng quan về Hệ thống Quản lý khách hàng
và tính hóa đơn nƣớc, đồng thời đề xuất ứng dụng khai phá luật dãy với thuật toán
AprioriAll. Trong đó, đƣa ra yêu cầu đầu bài và mô hình cụ thể giải quyết bài toán.
Luận văn sử dụng dữ liệu mô phỏng của Xí nghiệp kinh doanh nƣớc sạch Hoàn Kiếm
làm dữ liệu thử nghiệm để thực thi chƣơng trình, đánh giá kết quả thực nghiệm.
Luận văn đƣợc hỗ trợ một phần từ Đề tài QG.10-38.
Luận văn đƣợc thực hiện dƣới sự hƣớng dẫn của PGS. TS. Hà Quang Thụy –
trƣờng Đại học Công Nghệ. Em xin bày tỏ lòng biết ơn sâu sắc tới Thầy đã hƣớng dẫn
và có ý kiến chỉ dẫn quý báu trong quá trình em thực hiện luận văn. Xin chân thành
cảm ơn Thạc sĩ Đặng Tiểu Hùng – Công ty CSE đã đóng góp nhiều ý kiến bổ ích để
bản luận văn đƣợc hoàn thiện hơn. Cuối cùng xin bày tỏ lòng biết ơn tới những ngƣời
thân trong gia đình, bạn bè đã động viên và giúp đỡ để tác giả hoàn thành bản luận văn
này.





- 8 -
Khai phá luật dãy Nguyễn Đình Văn

CHƯƠNG 1 – KHÁI QUÁT CHUNG VỀ LUẬT DÃY VÀ

KHAI PHÁ LUẬT DÃY
Khai phá luật dãy là một chủ đề thiết thực và quan trọng trong khai phá dữ liệu
với nhiều ứng dụng nhƣ là trong phân tích giao dịch mua hàng của khách hàng, khai
thác weblogs, khai thác các dãy ADN, nghiên cứu dữ liệu trong các bài toán khí tƣợng
- thủy văn nhƣ dự báo thời tiết, các thảm họa tự nhiên nhƣ động đất, sóng thần
Các thuật toán khai phá luật dãy kế thừa nhiều từ các thuật toán khai phá luật kết
hợp, và nhiều thuật toán trong số đó là mở rộng của các thuật toán khởi thủy, ở đó sự
khác biệt chính là trong khai phá luật dãy đƣa ra các phân tích liên giao dịch (inter-
transaction), trong khi đó khai phá luật kết hợp là tìm luật về mối liên quan giữa các
phần tử trong cùng một giao dịch (intra- transaction). Trƣớc tiên, ta cần tìm hiểu một
số vấn đề của luật kết hợp.
1.1 Giới thiệu chung về luật kết hợp
1.1.1 Khái niệm luật kết hợp
Mục đích của luật kết hợp (Association Rule) là tìm ra các mối liên hệ giữa các
đối tƣợng trong khối lƣợng lớn dữ liệu [4]. Nội dung của luật kết hợp đƣợc phát biểu
nhƣ sau:
Cho tập các phần tử I = {i
1
, i
2
, …, i
m
}. Cho CSDL D là tập các giao dịch, trong
đó mỗi giao dịch T là một tập các phần tử, tức là T  I. Mỗi giao dịch đƣợc gắn với
một định danh gọi là TID.
Cho A là tập các phần tử. Giao dịch T đƣợc gọi là chứa A nếu và chỉ nếu A  T.
Một luật kết hợp có dạng A  B, trong đó A  I, B  I và A  B = Ø.
Độ hỗ trợ (support) và độ tin cây (confidence) là 2 tham số dùng để đo lường
luật kết hợp.
Luật A  B trong tập giao dịch D với độ hỗ trợ (support) s, kí hiệu là support(A

 B), trong đó s là tỉ lệ phần trăm của các giao dịch trong D mà có chứa A  B. Hay
là xác suất P(A  B ).
Công thức để tính độ hỗ trợ của luật A  B nhƣ sau:
support(A  B) = P(A  B ) =
N
Bn )A ( 

Trong đó: N là tổng số giao dịch; n(A  B ) là số giao dịch có chứa (A  B )
- 9 -
Khai phá luật dãy Nguyễn Đình Văn

Luật A  B có độ tin cậy (confidence) c trong tập giao dịch D, kí hiệu là
confidence(A  B), trong đó c là tỉ lệ phần trăm của các giao dịch trong D có chứa A
và cũng chứa B. Hay là xác suất P(B | A).
Công thức để tính độ tin cậy của luật A  B là xác suất có điều kiện B khi đã biết
A, nhƣ sau:
confidence(A  B) = P(B | A ) =
)(
)A (
An
Bn 

Trong đó: n(A) là số giao dịch chứa A; n(A  B ) là số giao dịch có chứa (A  B )
Các luật đáp ứng đƣợc (lớn hơn hoặc bằng) cả ngƣỡng hỗ trợ tối thiểu (min_sup)
và ngƣỡng tin cậy tối thiểu (min_conf) đƣợc gọi là các luật mạnh (strong rules). Thông
thƣờng, ta viết độ hỗ trợ và độ tin cậy là các giá trị giữa khoảng 0% và 100% thay vì
từ 0 đến 1.0.
min_sup và min_conf gọi là các giá trị ngƣỡng (threshold) và phải xác định trƣớc
khi sinh các luật kết hợp.
1.1.2 Các ứng dụng điển hình của luật kết hợp

Một số ứng dụng điển hình nhƣ: phân tích giỏ hàng (market basket analysis), đƣa
ra chiến lƣợc tiếp thị, thiết kế bài trí gian hàng, chiến lƣợc bán hàng khuyến mại, các
bài toán phân lớp, phân cụm,
Market basket analysis: Chẳng hạn, một ngƣời quản lý một chi nhánh bán hàng,
họ muốn biết thêm về thói quen mua sắm của khách hàng. Cụ thể nhƣ họ muốn biết
rằng “Trong mỗi lần mua sắm, khách hàng thƣờng mua các nhóm mặt hàng nào cùng
nhau?”. Để trả lời câu hỏi này, việc phân tích giỏ khách hàng sẽ đƣợc thực hiện trên
dữ liệu mua bán lẻ của khách hàng đã đƣợc lƣu trữ. Sau đó có thể sử dụng kết quả đó
để lên kế hoạch tiếp thị, chiến lƣợc quảng cáo hoặc dự định bổ sung các danh mục
hàng hóa mới. Việc phân tích giỏ hàng có thể giúp bạn thiết kế gian hàng với các cách
bài trí hàng hóa khác nhau. Các mặt hàng thƣờng xuyên đƣợc mua với nhau có thể
đƣợc đặt ở gần nhau để thúc đẩy việc bán hàng. Nếu khách hàng mua máy tính cũng
có xu hƣớng mua phần mềm diệt virus cùng lúc, cũng thế, đặt màn hình gần với các
phần mềm hiển thị có thể giúp tăng doanh số bán hàng của cả hai. Trong một chiến
lƣợc khác, bố trí phần cứng và phần mềm ở hai đầu của cửa hàng có thể lôi kéo khách
hàng mua những mặt hàng khác trên đƣờng di chuyển giữa hai vị trí. Ví dụ, sau khi
quyết định mua một máy tính đắt tiền, trong khi đến mua phần mềm diệt virus, khách
hàng quan sát thấy hệ thống an ninh gia đình đƣợc trƣng bày và có thể quyết định mua.
Việc phân tích giỏ hàng cũng có thể giúp các nhà bán lẻ đƣa ra các kế hoạch bán hàng
giảm giá. Thông thƣờng, khách hàng có xu hƣớng mua máy tính và máy in với nhau,
khi đó có thể bán giảm giá máy in nếu khách hàng mua máy tính.
- 10 -
Khai phá luật dãy Nguyễn Đình Văn

Trong gian hàng, mỗi mặt hàng gắn với một biến Boolean biểu thị sự có mặt hay
vắng mặt của mặt hàng đó. Tiếp đến, mỗi giỏ hàng có thể đƣợc thể hiện bởi một vector
Boolean các giá trị đƣợc gán cho các biến đó. Các vector Boolean biểu thị các mẫu
mua hàng mà ở đó các mặt hàng đƣợc kết hợp một cách thƣờng xuyên hoặc đƣợc mua
với nhau. Các mẫu này có thể đƣợc biểu thị ở dạng các luật kết hợp. Ví dụ, khách hàng
mua máy tính cũng có xu hƣớng mua phần mềm diệt virus cùng lúc, có thể đƣợc biểu

diễn với luật kết hợp nhƣ sau:
computer  antivirus_software [support = 2%, confidence = 60%]
support = 2% nghĩa là có 2% trong tất cả các giao dịch đƣợc phân tích cho thấy máy
tính và phần mềm diệt virus đƣợc mua cùng lúc. confidence = 60% nghĩa là có 60% số
lƣợng khách hàng đã mua máy tính thì cũng mua phần mềm. Thông thƣờng, các luật
kết hợp đƣợc quan tâm nếu chúng đáp ứng đƣợc cả ngƣỡng hỗ trợ tối thiểu và ngƣỡng
tin cậy tối thiểu. Các ngƣỡng này có thể đƣợc thiết lập bởi ngƣời dùng.
Một số thuật toán thƣờng đƣợc sử dụng cho khai phá luật kết hợp nhƣ: Apriori,
Eclat, Frequent-Pattern tree, … .Dƣới đây sẽ trình bày chi tiết thuật toán Apriori vì
thuật toán này đƣợc mở rộng để sử dụng cho khai phá luật dãy.
1.1.3 Thuật toán Apriori
Tƣ tƣởng của thuật toán Apriori là:
- Tìm tất cả các tập thƣờng xuyên (frequent itemsets): k-itemset (itemsets gồm
k items) đƣợc dùng để tìm (k+1)-itemset.
- Đầu tiên tìm 1-itemset (ký hiệu L
1
); L
1
đƣợc dùng để tìm L
2
(2-itemsets); L
2

đƣợc dùng để tìm L
3
(3-itemset) và tiếp tục cho đến khi không có k-itemset
đƣợc tìm thấy.
- Từ các tập thƣờng xuyên (frequent itemsets) sinh ra các luật kết hợp mạnh
(các luật kết hợp thỏa mãn 2 tham số min_sup và min_conf)
 Thuật toán Apriori [4]

Join Step: Ck is generated by joining Lk-1with itself.
Prune Step: Any (k-1)-itemset that is not frequent cannot be a
subset of a frequent k-itemset.
Pseudo-code:
C
k
: Candidate itemset of size k
L
k
: frequent itemset of size k
L
1
= {frequent items};
for (k = 1; L
k
!=Ø; k++) do
C
k+1
= candidates generated from L
k

for each transaction t in database do
increment the count of all candidates in C
k+1
that
are contained in t
L
k+1
= candidates in C
k+1

with min_support
end
- 11 -
Khai phá luật dãy Nguyễn Đình Văn

return 
k
L
k

Cụ thể, thực hiện theo các bƣớc sau:
Bƣớc 1: Duyệt toàn bộ CSDL để có đƣợc độ hỗ trợ s của 1-itemset, so sánh s với
min_sup, để có đƣợc 1-itemset (L
1
)
Bƣớc 2: Thực hiện phép nối (join) L
k-1
với L
k-1
để sinh ra tập ứng viên k-itemset. Loại
bỏ các tập không phải là tập thƣờng xuyên ta thu đƣợc k-itemset
Bƣớc 3: Duyệt CSDL để có đƣợc độ hỗ trợ s của mỗi tập ứng viên k-itemset, so sánh s
với min_sup để loại bỏ các tập không phải là tập thƣờng xuyên (có s < min_sup), thu
đƣợc tập thƣờng xuyên k–itemset (L
k
)
Bƣớc 4: Lặp lại từ bƣớc 2 cho đến khi tập ứng viên là rỗng (không tìm thấy tập thƣờng
xuyên).
Bƣớc 5: Với mỗi tập thƣờng xuyên I, sinh tất cả các tập con s không rỗng của I
Bƣớc 6: Với mỗi tập con s không rỗng của I, sinh ra các luật s => (I-s) nếu độ tin cậy

(confidence) của nó > = min_conf
Chẳn hạn với I= {A1,A2,A5},các tập con của I:
{A1}, {A2}, {A5}, {A1,A2},{A1,A5},{A2,A5}
sẽ có các luật sau
{A1} => {A2,A5},{A2} =>{A1,A5},{A5} =>{A1,A2}
{A1,A2} =>{A5},{A1,A5} =>{A2},{A2,A5} => {A1}
 Ví dụ: Giả sử ta có có sở dữ liệu giao dịch nhƣ sau :

Thuật toán Apriori khai phá luật kết hợp đƣợc mô tả qua các bƣớc sau
- 12 -
Khai phá luật dãy Nguyễn Đình Văn


Ta có tập thƣờng xuyên I ={B,C,E}, với min_conf = 80% ta có 2 luật kết hợp là
{B,C} => {E} và {C,E} => {B}

1.2 Luật dãy
1.2.1 Khái niệm luật dãy và ví dụ
Ta giới thiệu vấn đề dựa trên quá trình mua bán hàng và một CSDL lƣu trữ thông
tin giao dịch mua bán hàng bao gồm các thông tin về mã khách hàng (customer-id),
thời gian giao dịch (transaction-time) và các mặt hàng trong giao dịch.
 Các khái niệm
Một itemset là một tập không rỗng các phần tử (item).
Một dãy (sequence) là một danh sách có thứ tự các itemset.
Không mất tính tổng quát, chúng ta giả sử rằng một tập các phần tử đƣợc ánh xạ
tới một tập các số nguyên liền kề. Ta biểu thị itemset i bởi (i
1
i
2
i

m
), trong đó i
j
là một
phần tử. Ta biểu thị dãy s bởi (s
1
s
2
s
n
), trong đó s
j
là một itemset.
- 13 -
Khai phá luật dãy Nguyễn Đình Văn

Dãy (a
1
a
2
a
n
) đƣợc chứa trong dãy (b
1
b
2
b
n
) nếu ở đó tồn tại các số nguyên i
1

<
i
2
< < i
n
sao cho a
1
 b
i1
, a
2
 b
i2
, , a
n
 b
in
. Ta sử dụng ký hiệu

để biểu thị
quan hệ “đƣợc chứa trong”. Ví dụ, dãy <(3) (4,5) (8)>

<(7) (3 8) (9) (4 5 6) (8)>, vì
((3)  (3 8), (4 5)  (4 5 6) và (8)  (8). Tuy nhiên, dãy <(3) (5)> không đƣợc chứa
trong <(3 5)> và ngƣợc lại. Phần tử 3 và 5 trong dãy <(3) (5)> mô tả chúng không nằm
trong cùng một lần giao dịch, trong khi phần tử 3 và 5 trong dãy <(3 5)> mô tả chúng
nằm trong một lần giao dịch. Trong một tập các dãy, một dãy s là lớn nhất hay tối đa
(maximal) nếu s không đƣợc chứa trong bất kỳ dãy nào khác.
Tất cả các giao dịch của cùng một khách hàng có thể đƣợc xem nhƣ là một dãy.
Trong đó, mỗi giao dịch đƣợc xem nhƣ một tập các phần tử, và danh sách các giao

dịch theo thứ tự tăng dần về thời gian giao dịch tƣơng ứng với một dãy. Chúng ta gọi
đó là một dãy khách hàng (customer-sequence). Ta biểu thị các giao dịch của một
khách hàng đƣợc sắp xếp thứ tự tăng dần theo thời gian là (T
1
, T
2
, , T
n
). Tập các
phần tử (item) trong T
i
đƣợc biểu thị bởi itemset(T
i
). Dãy customer-sequence của một
khách hàng là một dãy <itemset(T
1
) itemset(T
2
) itemset(T
n
)>.
Một khách hàng hỗ trợ một dãy s nếu s đƣợc chứa trong dãy customer-sequence
đối với khách hàng đó. Độ hỗ trợ của một dãy đƣợc định nghĩa là số khách hàng hỗ trợ
dãy đó.
Các dãy tối đa trong số tất cả các dãy phổ biến đáp ứng mức hỗ trợ tối thiểu cụ
thể nào đó đƣợc gọi là luật dãy hay mẫu dãy (sequential patterns). [1]
Ta gọi dãy đáp ứng độ hỗ trợ tối thiểu là dãy phổ biến (large sequence)
 Ví dụ
Cho CSDL mua bán hàng thể hiện trong hình 1.1.
Transaction Time

Customer Id
Items Bought
June 10 '93
June 12 '93
June 15 '93
June 20 '93
June 25 '93
June 25 '93
June 25 '93
June 30 '93
June 30 '93
July 25 '93
2
5
2
2
4
3
1
1
4
4
10, 20
90
30
40, 60, 70
30
30, 50, 70
30
90

40, 70
90
Hình 1.1: CSDL gốc
CSDL trong hình 1.2 đã đƣợc sắp xếp theo mã khách hàng (customer-id) và thời gian
giao dịch.
Customer Id
Transaction Time
Items Bought
1
June 25 '93
30
- 14 -
Khai phá luật dãy Nguyễn Đình Văn

1
June 30 '93
90
2
2
2
June 10 '93
June 15 '93
June 20 '93
10, 20
30
40, 60, 70
3
June 25 '93
30, 50, 70
4

4
4
June 25 '93
June 30 '93
July 25 '93
30
40, 70
90
5
June 12 '93
90
Hình 1.2: CSDL đƣợc sắp xếp theo
Khách hàng ID và thời gian giao dịch
CSDL hình 1.3 thể hiện nhƣ là một tập các dãy khách hàng (customer-sequence).
Customer Id
Customer Sequence
1
2
3
4
5
<(30) (90)>
<(10 20) (30) (40 60 70)>
<(30 50 70)>
<(30) (40 70) (90)>
<(90)>
Hình 1.3: CSDL theo dãy khách hàng
(customer-sequence)
Với mức hỗ trợ tối thiểu là 25%, tức là xuất hiện tối thiểu 2 trong tổng số 5 khách
hàng, hai dãy <(30) (90)> và <(30) (40 70)> là lớn nhất trong số các dãy đáp ứng điều

kiện giàng buộc hỗ trợ, và là các mẫu dãy mong muốn. Mẫu dãy <(30) (90)> xuất hiện
trong các giao dịch của khách hàng 1 và 4. Mẫu dãy <(30) (40 70)> xuất hiện trong
giao dịch của khách hàng 2 và 4.(Vì (40 70) là tập con của (40 60 70) nên cũng đƣợc
tính cho khách hàng 2).
Ví dụ về một dãy mà không có hỗ trợ tối thiểu là dãy <(10 20) (30)>, dãy này chỉ
xuất hiện trong giao dịch của khách hàng 2. Các dãy <(30)>, <(40)>, <(70)>,
<(90)>, <(30) (40)>, <(30) (70)>, <(40 70)> mặc dù thỏa mãn hỗ trợ tối thiểu, nhƣng
chúng không phải dãy tối đa nên không phải là kết quả cần tìm.
Sequential Patterns with support > 25%
<(30) (90)>
<(30) (40 70)>
Hình 1.4: Tập kết quả
1.2.2 Một số ứng dụng
 Khai phá dãy cho các mẫu hành vi ngƣời dùng trong lĩnh vực thƣơng mại điện
thoại di động [7]
Sự phát triển của máy tính và các công nghệ truyền thông gần đây giúp cho các
hệ thống liên lạc cá nhân (Personal Communication Systems - PCSs) ngày càng trở
nên phổ biến, đặt ra vấn đề về quản lý thông tin di động.
- 15 -
Khai phá luật dãy Nguyễn Đình Văn

Mô hình hóa một cách hiệu quả các mẫu hành vi của ngƣời sử dụng trong các hệ
thống điện thoại di động đem lại lợi ích không chỉ cho ngƣời sử dụng trong những truy
cập thông minh, mà còn đem lại lợi nhuận tài chính cho các nhà cung cấp dịch vụ di
động nhƣ quảng cáo. Trong môi trƣờng web, ngƣời sử dụng di động có thể yêu cầu các
loại hình dịch vụ khác nhau và ứng dụng của điện thoại di động, PDA hay máy tính
xách tay từ bất cứ đâu tại bất kỳ thời gian nào thông qua GSM, GPRS hoặc mạng
không dây. Rõ ràng là những hành vi của ngƣời sử dụng điện thoại di động (trong đó
vị trí và dịch vụ vốn đã cùng tồn tại) trở nên phức tạp hơn so với các hệ thống web
truyền thống. Để giúp ngƣời sử dụng thu nhận đƣợc thông tin mong muốn trong một

thời gian ngắn là một trong những ứng dụng nhiều hứa hẹn, đặc biệt khi mà ngƣời
dùng không có nhiều thời gian để lƣớt nhiều trang web.
Hệ thống quản lý thông tin di động lƣu trữ và cập nhật các thông tin vị trí của
ngƣời sử dụng điện thoại di động, những ngƣời đƣợc phục vụ bởi hệ thống. Một chủ
đề nóng trong lĩnh vực nghiên cứu quản lý thông tin di động là dự đoán di động. Dự
đoán di động có thể đƣợc định nghĩa là dự đoán vị trí di chuyển tiếp theo của ngƣời sử
dụng di động giữa các vùng trong hệ thống liên lạc cá nhân PCS hoặc mạng GSM. Dự
đoán đó có thể đƣợc sử dụng để tăng hiệu quả của PCSs. Sử dụng dự đoán di chuyển,
hệ thống có thể phân bổ nguồn tài nguyên một cách hiệu quả khả năng di chuyển đến
các vùng thay vì phân bổ nguồn tài nguyên một cách không có định hƣớng trong các
vùng lân cận của ngƣời sử dụng điện thoại di động. Hiệu quả phân bổ nguồn tài
nguyên cho ngƣời dùng di động sẽ cải thiện việc sử dụng tài nguyên và giảm độ trễ
trong việc tiếp cận các nguồn tài nguyên. Dự báo chính xác thông tin vị trí cũng rất
quan trọng trong xử lý các truy vấn phụ thuộc vào vị trí của ngƣời dùng di động. Khi
ngƣời dùng đƣa ra một truy vấn liên quan đến vị trí, câu trả lời cho truy vấn sẽ phụ
thuộc vào vị trí hiện tại của ngƣời dùng. Nhiều phạm vi ứng dụng bao gồm cả lĩnh vực
chăm sóc sức khỏe, khoa học sinh học, quản lý khách sạn, và lợi ích quân sự từ hiệu
quả xử lý các truy vấn phụ thuộc vào vị trí. Với hiệu quả dự đoán về vị trí, có thể thể
trả lời các truy vấn liên quan đến vị trí di chuyển tiếp theo của ngƣời sử dụng.
So với số lƣợng công việc thực hiện cho việc cập nhật vị trí, một số ít đã đƣợc
thực hiện trong lĩnh vực dự báo di chuyển. Những công việc này có một số hạn chế,
đƣợc giải thích nhƣ sau:
 Một số trong đó là sự không nỗ lực tìm kiếm các mẫu thông tin di động.
Thay vào đó, các mẫu này đƣợc giả định là có sẵn. Những mẫu này sau đó
đƣợc sử dụng để dự báo di chuyển.
 Việc dự đoán đƣợc dựa trên khả năng phân bố của tốc độ và hƣớng của
ngƣời sử dụng điện thoại di động. Để thu thập những thông tin nhƣ vậy,
cần thiết phải có những công cụ rất tinh vi và tốn kém nhƣ hệ thống định
vị toàn cầu (Global Positioning System - GPS).
- 16 -

Khai phá luật dãy Nguyễn Đình Văn

Nhằm khắc phục những hạn chế trên, ngƣời ta đã phát triển một thuật toán dự
đoán di động hiệu quả. Những qui luật này đƣợc gọi là các mẫu di động. Sau đó, các
luật di động này đƣợc trích xuất ra từ các mẫu di động. Các quy tắc di động đƣợc gắn
với quỹ đạo hiện tại của một ngƣời sử dụng điện thoại di động, và đƣợc sử dụng cho
các dự đoán hƣớng di chuyển tiếp theo của ngƣời dùng. Thuật toán dự đoán này là
khai phá các mẫu di động của ngƣời dùng và sinh ra các luật di động, đƣợc thực hiện
offline bởi hệ thống. Tuy nhiên, dự báo di chuyển đƣợc thực hiện online. Điều đó có
nghĩa là bất cứ khi nào ngƣời dùng có ý định thực hiện một di chuyển trong một khu
vực nhất định, một yêu cầu dự đoán sẽ đƣợc gửi đến hệ thống và dự đoán đƣợc thực
hiện bởi hệ thống bằng cách sử dụng các luật di động dựa trên thuật toán dự đoán.

Hình 1.5: Kiến trúc tổng thể của hệ thống quản lý thông tin di động
1.2.3 Luật dãy và luật kết hợp: một số đối sánh
Vấn đề của luật kết hợp là tìm kiếm các mẫu thƣờng xuyên, các liên kết, các mối
tƣơng quan, hoặc các cấu trúc có quan hệ nhân quả giữa tập các phần tử hoặc các đối
tƣợng trong các CSDL giao dịch, CSDL quan hệ, các kho thông tin khác. Lĩnh vực
khai phá luật kết hợp đƣợc phát triển với nhiều mục đích nhƣ thực hiện phân tích thói
quen mua bán hàng, trong đó cần tìm những mặt hàng đƣợc mua với nhau nhiều nhất.
Nhƣ trong khai phá web, khai phá luật kết hợp tìm các trang web liên quan đƣợc truy
cập theo đợt, điều đó sẽ cung cấp những ƣớc tính nhất định về xác suất truy cập web.
Ví dụ nhƣ “Nếu một ngƣời truy cập trang CNN thì có đến 60% khả năng họ sẽ truy
cập trang ABC News trong tháng đó”.
Trong khi đó, vấn đề của luật dãy là tìm kiếm các mẫu có liên quan đến yếu tố
thời gian trên một CSDL dãy (các phần tử đƣợc sắp thứ tự), ví dụ nhƣ CSDL nhật ký
duyệt web. Khai phá luật dãy đƣợc xem là mở rộng của khai phá luật kết hợp, vì luật
kết hợp chỉ khảo sát các mẫu không có liên quan đến yếu tố thời gian. Khai phá luật
dãy có vai trò rất quan trọng trong nhiều ứng dụng thực tế, ví dụ nhƣ việc phát hiện tri
- 17 -

Khai phá luật dãy Nguyễn Đình Văn

thức trong dữ liệu nhật ký web, do nhật ký web đƣợc sắp xếp theo thời gian. Khi đó,
khai phá luật dãy có thể cho kết quả nhƣ “Nếu ngƣời dùng truy cập trang X, sau đó
truy cập trang Y, thì c% khả năng sẽ truy cập trang Z”.
1.2.4 Sơ bộ về các phƣơng pháp khai phá luật dãy
 Phƣơng pháp dựa trên Apriori (Apriori-based method)
Thuật toán GSP dựa trên nguyên tắc duyệt dữ liệu theo chiều rộng (breadth-first),
mở rộng của mô hình A-priori. Thuật toán GSP sử dụng phƣơng pháp “Tạo – Tỉa”
(“Generating-Pruning”) đƣợc định nghĩa trong (Agrawal và cộng sự, 1993.) và thực
hiện theo cách sau đây. Dãy ứng viên có độ dài (k +1) đƣợc tạo ra sử dụng phép nối
hai dãy phổ biến, s
1
và s
2
, có độ dài k, nếu dãy con thu đƣợc bằng cách lƣợc bỏ phần tử
đầu tiên của s
1
trùng với dãy con thu đƣợc bằng cách lƣợc bỏ phần tử cuối cùng của s
2
.
Với ví dụ trong Hình 1.6, và k = 2, ta có s
1
là <(DVD Rec, DVD-R)> và s
2
là <(DVD-
R) (Video Soft)>, khi đó dãy ứng viên sẽ là <“(DVD Rec, DVD-R) (Video Soft)”> bởi
dãy con đƣợc nói đến ở trên là <(DVD-R)> (chung của s
1
và s

2
). Một phƣơng pháp
khác sử dụng nguyên lý "Generating-Pruning" là PSP (Masseglia et al., 1998). Sự
khác biệt chính với GSP là các ứng viên cũng nhƣ các dãy phổ biến đƣợc quản lý
trong một cấu trúc hiệu quả hơn. Các phƣơng pháp trình bày cho đến nay đƣợc thiết kế
để phụ thuộc ít nhất có thể vào bộ nhớ chính. Vì chúng cần phải tải toàn bộ CSDL
(hoặc một ánh xạ của CSDL) trong bộ nhớ chính. Phƣơng pháp này đạt hiệu quả cao
khi CSDL có thể phù hợp với bộ nhớ.
Cust
June 04, 2004
June 05, 2004
June 06, 2004
June 07, 2004
C1
Camcorder, MiniDV
Digital Camera
MemCard
USB Key
C2
Camcorder, MiniDV
DVD Rec, DVD-R

Video Soft
C3
DVD Rec, DVD-R
MemCard
Video Soft
USB Key
C4


Camcorder, MiniDV
Laptop
DVD Rec, DVD-R
Hình 1.6: Các dãy dữ liệu của 4 khách hàng mua trong 4 ngày
 Phƣơng pháp dựa trên định dạng dọc (Vertical format-based method)
Trong (Zaki, 2001), tác giả đề xuất thuật toán SPADE (Sequential PAttern
Discovery using Equivalent Class – Khai phá mẫu dãy sử dụng lớp tƣơng đƣơng). Ý
tƣởng chính của phƣơng pháp này là một phân cụm các dãy phổ biến dựa trên các tiền
tố phổ biến của chúng và tính các dãy ứng viên nhờ một ánh xạ của CSDL (nạp trong
bộ nhớ chính). SPADE chỉ cần quét CSDL ba lần để trích xuất các mẫu dãy. Lần quét
đầu tiên nhằm tìm kiếm các phần tử thƣờng xuyên, lần thứ hai để tìm kiếm các dãy
phổ biến có độ dài 2 (length 2) và lần cuối cùng để kết hợp các dãy phổ biến có độ dài
2, một bảng chứa định danh tƣơng ứng của các dãy và tập các phần tử trong CSDL (ví
dụ nhƣ dữ liệu dãy có chứa các dãy phổ biến và mốc thời gian tƣơng ứng). Dựa trên
những biểu diễn này trong bộ nhớ chính, độ hỗ trợ của các dãy ứng viên có độ dài k là
kết quả của phép nối (join) trên các bảng liên quan đến các dãy phổ biến có độ dài (k -
1) có thể sinh ra ứng viên này (nhƣ vậy, mọi thao tác sau khi khai phá các dãy phổ
- 18 -
Khai phá luật dãy Nguyễn Đình Văn

biến có chiều dài 2 đƣợc thực hiện trong bộ nhớ). SPAM (Ayres et al., 2002) là một
phƣơng pháp khác mà cần phải ánh xạ CSDL trong bộ nhớ chính. Các tác giả đã đề
xuất ánh xạ CSDL theo không gian điểm ảnh định dạng dọc (vertical bitmap) cho việc
thể hiện các ứng viên và tính độ hỗ trợ.
 Các phƣơng pháp dựa trên việc phát triển mẫu (Pattern growth based methods)
Một cách tiếp cận khởi đầu cho khai thác mẫu dãy thực hiện phép chiếu đệ quy
các dữ liệu dãy thành các CSDL nhỏ hơn. Đề xuất trong (Han et al., 2000), FreeSpan
là thuật toán đầu tiên xem xét phƣơng pháp quy chiếu mẫu (pattern-projection) trong
khai phá mẫu dãy. Công trình đƣợc tiếp tục với PrefixSpan, (Pei et al., 2001), dựa trên
nghiên cứu về số lƣợng các ứng viên đƣợc đề xuất bởi phƣơng pháp Generating-

Pruning. Bắt đầu từ các phần tử thƣờng xuyên của CSDL, PrefixSpan sinh ra CSDL
quy chiếu với phần dữ liệu dãy còn lại. Các CSDL quy chiếu nhƣ vậy chứa các hậu tố
của dữ liệu dãy từ CSDL gốc, đƣợc nhóm theo các tiền tố. Quá trình này đƣợc lặp đi
lặp lại một cách đệ quy cho đến khi không có phần tử thƣờng xuyên nào đƣợc tìm thấy
trong các CSDL quy chiếu. Ở mức này, mẫu dãy phổ biến là đƣờng đi của các phần tử
thƣờng xuyên đến CSDL quy chiếu đó.
 Các mẫu dãy đóng (Closed Sequential Patterns)
Mẫu dãy đóng là mẫu dãy mà không đƣợc chứa trong mẫu dãy khác có cùng mức
hỗ trợ. Xét CSDL minh họa trong hình 1.6, mẫu dãy phổ biến <(DVD Rec) (Video
Soft)> không phải là mẫu dãy đóng vì nó đƣợc chứa trong mẫu dãy s
2
và có cùng độ hỗ
trợ (50%). Mặt khác, mẫu dãy <(Camcorder, MiniDV)> là mẫu dãy đóng vì nó đƣợc
chứa trong mẫu dãy s
1
nhƣng có độ hỗ trợ là 75%, khác với độ hỗ trợ của s
1
là 50%.
Thuật toán đầu tiên cho việc trích xuất các mẫu dãy đóng là CloSpan (Yan et al.,
2003) với việc phát hiện các mẫu tuần tự không đóng, tránh đƣợc một số lƣợng lớn các
lần gọi đệ quy. Thuật toán CloSpan dựa trên việc phát hiện các mẫu tuần tự có độ dài
2, ví dụ nhƣ “A luôn xảy ra trƣớc hoặc sau B”. Xét CSDL trong hình 1.6, chúng ta biết
rằng <(DVD Rec) (Video Soft)> là một mẫu thƣờng xuyên. Các tác giả của thuật toán
CloSpan đề xuất các phƣơng pháp liên quan để chứng minh rằng <(DVD-R)> luôn
luôn xảy ra trƣớc <(Video Soft)>. Dựa vào quan sát này, CloSpan có thể chỉ ra rằng
<(Rec DVD, DVD-R) (Video Soft)> là mẫu thƣờng xuyên mà không cần bất kỳ lần
quét CSDL nào nữa.
Thuật toán BIDE (Wang và Han, 2004) là mở rộng của thuật toán CloSpan nhƣ
sau. Đầu tiên, thông qua một phần mở rộng dãy mới, đƣợc gọi là BI-Directional
Extension, thuật toán sử dụng cả hai phƣơng pháp là mẫu tiền tố và kiểm tra thuộc tính

đóng để phát triển. Thứ hai, để lƣợc bớt không gian tìm kiếm sâu hơn so với phƣơng
pháp tiếp cận trƣớc, thuật toán đề nghị một phƣơng pháp lƣợc bớt gọi là BackScan. Ý
tƣởng chính của phƣơng pháp này là để tránh mở rộng dãy bằng cách phát hiện trƣớc
phần mở rộng đã đƣợc chứa trong một dãy rồi.
- 19 -
Khai phá luật dãy Nguyễn Đình Văn

 Khai phá mẫu dãy tăng dần (Incremental Mining of Sequential Patterns)
Khi CSDL phát triển, vấn đề duy trì các mẫu dãy trong một thời gian dài trở nên
rất cần thiết vì một số lƣợng lớn các bản ghi mới có thể đƣợc thêm vào CSDL. Để
phản ánh hiện trạng của CSDL, ở đó các mẫu dãy trƣớc đó sẽ trở nên không thích hợp
và các mẫu dãy mới có thể xuất hiện, các cách tiếp cận hiệu quả mới đã đƣợc đề xuất.
(Masseglia et al, 2003.) đề xuất một giải thuật hiệu quả, đƣợc gọi là ISE, để tính toán
các dãy phổ biến trong CSDL cập nhật. Giải thuật ISE giảm thiểu chi phí tính toán
bằng cách tái sử dụng các thông tin tối thiểu từ các dãy phổ biến cũ, tức là độ hỗ trợ
của các dãy phổ biến. Các tính năng chính mới của ISE là tập các dãy ứng viên cần
kiểm tra đƣợc giảm đáng kể. Các thuật toán SPADE đã đƣợc mở rộng trong thuật toán
ISM (Parthasarathy et al, 1999.). Để cập nhật mức hỗ trợ và liệt kê các dãy phổ biến,
ISM duy trì “các dãy phổ biến tối đa” (“maximally frequent sequences”) và “các dãy
không thƣờng xuyên tối thiểu” (“minimally infrequent sequences”). KISP (Lin và Lee,
2003) cũng đề xuất để tận dụng những kiến thức đã đƣợc tính toán trƣớc và tạo ra một
nền tảng kiến thức cho các truy vấn bổ sung về mẫu dãy và các giá trị hỗ trợ khác
nhau.
 Mở rộng vấn đề dựa trên việc trích xuất các mẫu dãy (Extended Problems Based
on the Sequential Pattern Extraction)
Đƣợc thúc đẩy bởi các ứng dụng tiềm năng cho khai phá mẫu dãy, nhiều mở rộng
của định nghĩa ban đầu đã đƣợc đề xuất có thể liên quan đến việc bổ sung các ràng
buộc hoặc định dạng của các mẫu. Trong (Pei et al., 2002) tác giả đã liệt kê một số
những ràng buộc hữu ích nhất cho việc trích xuất các mẫu dãy. Những ràng buộc này
có thể đƣợc xem nhƣ là những bộ lọc đƣợc áp dụng cho việc trích xuất các mẫu,

nhƣng hầu hết các phƣơng pháp thông thƣờng dùng chúng cho việc liệt kê trong suốt
quá trình xử lý. Các bộ lọc này có thể liên quan tới các phần tử (“trích xuất các mẫu
chỉ chứa các phần tử Camcorder”) hoặc theo độ dài của mẫu. Định nghĩa mẫu dãy
cũng đã đƣợc điều chỉnh bởi một số nghiên cứu. Ví dụ (Kum et al., 2003) đã đề xuất
ApproxMap để khai phá các mẫu dãy gần đúng. ApproxMap đầu tiên đề xuất phân
cụm dữ liệu dãy dựa trên các phần tử của chúng. Sau đó, mỗi cụm ApproxMap cho
phép trích xuất các mẫu dãy gần đúng liên quan tới các cụm này. Ta xét các CSDL
trong hình 1.6 nhƣ một cluster. Bƣớc đầu tiên của quá trình trích xuất là cung cấp các
dữ liệu dãy của cluster với một sự liên kết tƣơng tự nhƣ của tin sinh học.
Camcorder,
MiniDV
DigiCam

MemCard



USB Key

Camcorder,
MiniDV

DVD Rec,
DVD-R

Video Soft



DVD Rec,

DVD-R
MemCard

Video Soft
USB Key

Camcorder,
MiniDV
Laptop
DVD Rec,
DVD-R



- 20 -
Khai phá luật dãy Nguyễn Đình Văn

Camcorder: 3
MiniDV: 3
DigiCam: 1
Laptop: 1

DVD Rec: 3
DVD-R: 3
MemCard: 2
Video Soft: 2
USB Key: 2
Hình 1.7: Các liên đƣợc đề xuất đối với dữ liệu dãy của Hình 1.6
Dãy cuối cùng trong Hình 1.7 thể hiện dãy trọng số thu đƣợc bởi ApproxMap trên dãy
Hình 1.6. Với độ hỗ trợ 50%, dãy trọng số cho các mẫu gần đúng đƣợc đƣa ra nhƣ sau:

<(Camcorder: 3, MiniDV: 3) (DVD Rec: 3, DVD-R: 3) (MemCard: 2) (Video Soft: 2)
(USB Key: 2)>.







- 21 -
Khai phá luật dãy Nguyễn Đình Văn

CHƯƠNG 2 – CÁC PHƯƠNG PHÁP KHAI PHÁ LUẬT DÃY
2.1 Khái quát về khai phá luật dãy
Khai phá luật dãy xử lý dữ liệu điển hình là các dãy [3] (một dãy là một tập hợp
các phần tử đƣợc sắp thứ tự). So với vấn đề luật kết hợp, luật dãy nghiên cứu dữ liệu
đƣa ra các phân tích “liên giao dịch” (inter-transaction) [1]. Có rất nhiều ứng dụng về
khai phá mẫu dãy và vấn đề cũng đƣợc định nghĩa theo những cách khác nhau với mức
độ thay đổi không đáng kể. Kết hợp với các giải pháp hiệu quả, những vấn đề này có
thể phù hợp với dữ liệu thực tế có mốc thời gian (timestamp) (khi mà luật kết hợp đã
không giải quyết đƣợc) và cung cấp những kết quả hữu ích.
Ta sử dụng CSDL giao dịch mua bán hàng làm ví dụ, với các thông tin về: định
danh của dãy hoặc định danh khách hàng (sequence-id or customer-id), thời gian giao
dịch (transaction-time) và mặt hàng liên quan trong giao dịch (item). Một CSDL nhƣ
vậy đƣợc gọi là CSDL dãy. Chính xác hơn, mỗi giao dịch là một tập hợp các mặt hàng
(itemset) và mỗi dãy là một danh sách các giao dịch đƣợc sắp xếp theo thời gian giao
dịch. Đối với hiệu quả của việc trợ giúp ra quyết định, mục đích là để tìm ra những
thói quen tiêu biểu của ngƣời dùng. Để làm đƣợc việc đó, đòi hỏi phải có một CSDL
dãy và đƣa ra giá trị hỗ trợ tức là số lần xuất hiện trong CSDL. Một mẫu dãy phổ biến
là một dãy mà tần xuất xuất hiện trong CSDL vƣợt ngƣỡng quy định. Vấn đề tìm kiếm

tất cả các mẫu thƣờng xuyên từ lƣợng dữ liệu khổng lồ đòi hỏi chi phí về mặt thời gian
là rất lớn. Thông thƣờng, việc kiểm tra của tất cả các kết hợp có thể trong dữ liệu là
vấn đề khó và những thuật toán mới tập trung vào dữ liệu dãy đƣợc coi là quan trọng
đối với một tổ chức.
Khai phá luật dãy có thể đƣợc áp dụng rộng rãi trên các ứng dụng từ nhiều loại
dữ liệu có thời gian liên quan. Ví dụ, từ một CSDL mua bán hàng, một mẫu dãy có thể
đƣợc dùng để phát triển các chiến lƣợc tiếp thị và sản phẩm; Bằng cách phân tích
weblog, các mẫu dãy rất hữu ích cho việc xây dựng website công ty giúp khách hàng
truy cập một cách dễ dàng các liên kết phổ biến nhất (Kosala và Blockeel, 2000); Ta
cũng có thể thấy CSDL báo động mạng viễn thông, phát hiện xâm nhập (Hu và Panda,
2004), các dãy ADN (Zaki, 2003), …
Chúng ta chia vấn đề khai phá luật dãy thành các giai đoạn sau đây:
 Giai đoạn sắp xếp (Sort Phase): CSDL (D) đƣợc sắp xếp, với mã khách hàng
(custorm-id) là khóa chính và thời gian giao dịch (transaction-time) là khóa phụ. Bƣớc
này chuyển đổi ngầm cơ sơ dữ liệu giao dịch gốc thành CSDL dãy khách hàng.
 Giai đoạn Litemset (Litemset Phase): Trong giai đoạn này, chúng ta tìm tập tất cả
litemsets L, đồng thời cũng tìm kiếm tập tất cả các dãy phổ biến 1-sequence, vì tập này
cũng là {<l> | l  L}.
- 22 -
Khai phá luật dãy Nguyễn Đình Văn

Với giao dịch của một khách hàng, độ hỗ trợ đƣợc tính tăng lên chỉ một lần ngay
cả khi khách hàng mua cùng một tập các sản phẩm trong hai hay nhiều giao dịch khác
nhau.
Tập hợp các litemsets đƣợc ánh xạ tới một tập hợp các số nguyên liên tiếp. Sau
bƣớc xử lý litemsets để có đƣợc các thực thể duy nhất, việc ánh xạ này giúp ta có thể
so sánh hai litemsets có bằng nhau hay không trong thời gian cố định, và giảm số lần
cần thiết để kiểm tra nếu một dãy đƣợc chứa trong dãy khách hàng.
 Giai đoạn chuyển đổi (Transformation Phase): Nhƣ chúng ta sẽ thấy trong giai
đoạn dãy (Sequence Phase), cần phải xác định lặp đi lặp lại nhiều lần để đƣa ra một

tập các dãy phổ biến (large sequences) đƣợc chứa trong một dãy khách hàng. Để thực
hiện điều này một cách nhanh chóng, ta chuyển đổi mỗi dãy khách hàng thành một đại
diện thay thế.
Trong một dãy khách hàng đƣợc chuyển đổi, mỗi giao dịch đƣợc thay thế bằng
tập tất cả các litemsets đƣợc chứa trong giao dịch đó. Nếu một giao dịch không chứa
bất kỳ litemset nào, nó không đƣợc giữ lại trong dãy chuyển đổi. Nếu một dãy khách
hàng không chứa bất kỳ litemset nào thì dãy này bị loại bỏ trong CSDL chuyển
đổi. Tuy nhiên, nó vẫn góp phần vào việc tính tổng số lƣợng khách hàng. Một dãy các
khách hàng khi đó đƣợc thể hiện bởi một danh sách tập các litemsets. Mỗi tập
litemsets đƣợc biểu diễn bởi {l
1
, l
2
, , l
n
}, trong đó l
i
là một litemset.
CSDL chuyển đổi này gọi là D
T.
Tiếp tục sử dụng CSDL trong phần 1.2 làm ví
dụ, việc chuyển đổi CSDL Hình 1.3 đƣợc thể hiện trong Hình 2.1. Ví dụ, trong trong
việc chuyển đổi dãy khách hàng với Id 2, giao dịch (10 20) bị loại bỏ vì nó không chứa
bất kỳ litemset nào và giao dịch (40 60 70) đƣợc thay thế bằng tập litemsets {(40),(70),
(40 70)}.
Customer
Id
Original
Customer Sequence
Transformed

Customer Sequence
After Mapping
1
2

3
4

5
< (30) (90)>
< (10 20) (30)
(40 60 70) >
< (30 50 70)>
< (30) (40 70) (90)>

< (90)>
< {(30)} {(90)}>
< {(30)} {(40), (70),
(40 70)}>
< {(30), (70)}>
< {(30)} {(40), (70), (40 70)}
{(90)}>
< {(90)}>
<{1} {5}>
<{1} {2,3,4}>

<{1,3}>
<{1} {2,3,4}
{5}>
<{5}>

Hình 2.1: CSDL đã đƣợc chuyển đổi từ Hình 1.3
 Giai đoạn dãy (Sequence Phase): Ta sử dụng tập các litemsets để tìm các dãy ứng
viên. Cấu trúc chung là thực hiện các quá trình duyệt lặp đi lặp lại trên dữ liệu. Trong
mỗi lần duyệt, ta bắt đầu với một tập khởi tạo các dãy phổ biến. Ta sử dụng tập khởi
tạo này để sinh ra các dãy phổ biến mới, tiềm năng, gọi là các dãy ứng viên (candidate
sequences). Tìm độ hỗ trợ cho các dãy ứng viên này trong suốt quá trình duyệt dữ liệu.
- 23 -
Khai phá luật dãy Nguyễn Đình Văn

Tại lần duyệt cuối cùng của mỗi bƣớc, xác định dãy nào trong các dãy ứng viên là dãy
phổ biến thực sự. Các dãy ứng viên phổ biến trở thành khởi tạo cho lần duyệt tiếp
theo. Trong lần duyệt đầu tiên, tất cả các 1-sequences với độ hỗ trợ tối thiểu, đƣợc
chứa trong giai đoạn litemset, tạo nên tập khởi tạo.
 Giai đoạn tìm dãy tối đa (Maximal Phase): Tìm các dãy tối đa trong tập các dãy
phổ biến (large sequences). Giai đoạn này đƣợc kết hợp với giai đoạn dãy (Sequence
Phase) để giảm chi phí thời gian trong việc tính các dãy không tối đa.
Tập tất cả các dãy phổ biến S đƣợc tìm thấy trong giai đoạn dãy, thuật toán tiếp
theo đây có thể đƣợc sử dụng để tìm các dãy tối đa. Với n là độ dài của dãy dài nhất.
for ( k = n; k > 1; k – – ) do
foreach k-sequence s
k
do
Delete from S all subsequences of s
k

2.2 Các thuật toán khởi thủy
Phần này giới thiệu ba thuật toán cơ bản khai phá luật dãy bao gồm: AprioriAll,
AprioriSome, GSP. Đây là những thuật toán rất phổ biến trong khai phá luật dãy.
2.2.1 Thuật toán AprioriAll
 Thuật toán AprioriAll

L
1
= {large 1-sequences}; // Result of the litemset phase
for ( k = 2; L
k-1
≠Ø; k++ ) do
begin
C
k
New candidates generated from L
k-1
(see Apriori Candidate Generation).
foreach customer-sequence c in the database do
Increment the count of all candidates in C
k
that are contained in c.
L
k
= Candidates in C
k
with minimum support.
end
Answer = Maximal Sequences in 
k
L
k
;
Hình 2.2: Thuật toán AprioriAll
Trong mỗi lần duyệt, ta sử dụng các dãy phổ biến từ lần duyệt trƣớc đó để tạo ra
các dãy ứng viên, sau đó tính độ hỗ trợ của chúng bằng cách duyệt toàn bộ CSDL. Tại

lần duyệt cuối cùng tại mỗi bƣớc, độ hỗ trợ của các ứng viên đƣợc sử dụng để xác định
các dãy phổ biến cho bƣớc tiếp theo. Trong lần duyệt đầu tiên, đầu ra của giai đoạn
litemset đƣợc sử dụng để khởi tạo tập các dãy phổ biến 1-sequences.
- 24 -
Khai phá luật dãy Nguyễn Đình Văn

 Sinh các dãy ứng viên (Apriori Candidate Generation): Hàm apriori-generate có
dữ liệu đầu vào là L
k-1
: tập tất cả các dãy phổ biến (k-1)-sequences. Hàm thực hiện nhƣ
sau:
insert into C
k

select p.litemset
1
, p.litemset
2
, , p.litemset
k-1
, q.litemset
k-1

from L
k-1
p, L
k-1
q
where p.litemset
1

= q.litemset
1
, . . ., p.litemset
k-2
= q.litemset
k-2
;
Next, delete all sequences c  C
k
such that some (k-1)-subsequence of c is not
in L
k-1
:
forall sequences c  C
k
do
forall (k-1)-subsequences s of c do
if (s  L
k-1
) then
delete c from C
k
;
Hình 2.3: Hàm apriori-generate
Tiếp tục với CSDL trong phần 1.2, xét tập các dãy 3-sequences L
3
trong Hình
2.4. Nếu L
3
đƣợc lấy làm đầu vào cho hàm apriori-generate, ta sẽ nhận đƣợc các dãy

nhƣ trong hình 2.5 sau khi thực hiện phép nối. Sau khi lƣợc bớt các dãy có dãy con
không thuộc L
3
ta đƣợc kết quả là các dãy trong hình 2.6. Ví dụ, dãy <1 2 4 3> bị lƣợc
bỏ đi vì có dãy con <2 4 3> không thuộc L
3
.
Sequence
Support
<1 2 3>
<1 2 4>
<1 3 4>
<1 3 5>
<2 3 4>
2
2
3
2
2
Hình 2.4: Large 3-Sequences

<1 2 3 4>
<1 2 4 3>
<1 3 4 5>
<1 3 5 4>
Hình 2.5: Candidate 4-Sequences (after join)

<1 2 3 4>
Hình 2.6: Candidate 4-Sequences (after pruning)
Ta cần chứng minh rằng C

k
 L
k
. Rõ ràng là bất kỳ dãy con nào của một dãy phổ
biến cũng cần có độ hỗ trợ tối thiểu. Do đó, nếu ta mở rộng mỗi dãy trong L
k-1
với tất
cả tập các phần tử phổ biến có thể, sau đó xóa tất cả những dãy mà có dãy con (k-1)-
- 25 -
Khai phá luật dãy Nguyễn Đình Văn

subsequences của chúng mà không nằm trong L
k-1
, điều này có thể không đúng với
một superset của các dãy trong L
k
.
Phép nối này tƣơng đƣơng với việc mở rộng L
k-1
với mỗi tập phần tử phổ biến và
sau đó lƣợc bỏ các dãy mà có dãy con (k-1)-subsequences không nằm trong L
k-1
. Vì
vậy, sau bƣớc thực hiện phép nối, C
k
 L
k
. Cũng với lập luận tƣơng tự, tại bƣớc lƣợc
bỏ, ta cũng xóa từ C
k

tất cả các dãy mà có các dãy con (k-1)-subsequences không nằm
trong L
k-1
, và không xóa bất kỳ dãy nào có thể nằm trong L
k.

Ví dụ: Xét CSDL với các dãy khách hàng trong hình 2.7. Các dãy khách hàng
đƣợc chuyển đổi, ở đó mỗi giao dịch đƣợc thay thế bởi tập các litemsets chứa trong
giao dịch và các litemsets đƣợc thay thế bởi các số nguyên. Độ hỗ trợ tối thiểu đƣợc
đƣa ra cụ thể là 40%. Lần duyệt đầu tiên trên CSDL đƣợc thực hiện trong giai đoạn
litemset, và ta xác định đƣợc dãy phổ biến 1-sequences thể hiện trong hình 2.8. Sau
khi kết thúc các lần duyệt thứ 2, 3, 4, các dãy phổ biến cùng với độ hỗ trợ của chúng
đƣợc thể hiện trong các hình 2.9, hình 2.10, và hình 2.11 tƣơng ứng. Không có ứng
viên nào đƣợc tạo trong lần duyệt thứ 5. Các dãy phổ biến tối đa là ba dãy nhƣ hình
2.12.
<{1 5} {2} {3} {4}>
<{1} {3} {4} {3 5}>
<{1} {2} {3} {4}>
<{1} {3} {5}>
<{4} {5}>
Hình 2.7: Dãy khách hàng

Sequence
Support
<1>
<2>
<3>
<4>
<5>
4

2
4
4
2
Hình 2.8: Dãy phổ biến 1-sequences

Sequence
Support
<1 2>
<1 3>
<1 4>
<1 5>
<2 3>
<2 4>
<3 4>
<3 5>
<4 5>
2
4
3
3
2
2
3
2
2
Hình 2.9: Dãy phổ biến 2-sequences

×