bao cao clos pan
DESCRIPTION
ClospanTRANSCRIPT
M c l cụ ụ1. Tổng quan............................................................................................................................................2
2. Một số khái niệm.................................................................................................................................3
2.1 Item, Itemset, Sequence:.............................................................................................................3
2.2 Size và Length:.............................................................................................................................3
2.3 Sub-sequence và super-sequence:..............................................................................................3
2.4 Độ hỗ trợ:....................................................................................................................................4
2.5 Chuỗi tuần tự phổ biến và chuỗi tuần tự đóng:...........................................................................4
2.6 Itemset-extension và sequence-extension..................................................................................4
2.7 S-projected database:..................................................................................................................5
3. Cây thứ tự từ điển(Lexicographic Sequence Tree)...............................................................................6
3.1 Thứ tự từ điển.............................................................................................................................6
3.2 Cây...............................................................................................................................................6
3.3 PrefixSpan....................................................................................................................................8
4. Giảm bớt không gian tìm kiếm và Prefix Sequence Lattice..................................................................9
4.1 Bổ đề 1(Common prefix)..............................................................................................................9
4.2 Bổ đề 2(Parial prefix).................................................................................................................10
4.3 Định lý 1:....................................................................................................................................10
4.4 Bổ đề 3:......................................................................................................................................11
4.5 Hệ quả 1(Backward Sub-Pattern)...............................................................................................12
4.6 Hệ quả 2: (Backward Sup-Pattern).............................................................................................13
4.7 Prefix Sequence Lattice Tree......................................................................................................13
5. CloSpan: Thiết kế và cài đặt...............................................................................................................14
6. Đánh giá hiệu năng............................................................................................................................17
7. Kết luận..............................................................................................................................................19
1
1. Tổng quan
Khai thác chuỗi tuần tự phổ biến là một đề tài nghiên cứu quan trọng được áp
dụng cho nhiều ứng dụng, chẳng hạn như việc tìm hiểu về các chuỗi DNA, khai thác dữ
liệu mua sắm của khách hàng,… Tuy nhiên đây là công việc không dễ dàng, đặc biệt trên
các tập dữ liệu lớn. Các thuật toán phần lớn đều có hiệu năng tốt khi khai thác tập dữ liệu
nhỏ và các chuỗi tuần tự ngắn. Tuy nhiên khi khai thác các chuỗi tuần tự dài hoặc khi độ
hỗ trợ nhỏ, hiệu năng của các thuật toán khai thác thường không được như mong muốn.
Ví dụ ta có chuỗi sau :s = <(a1), (a2),…,(a100)>, nó sẽ có tới 2100 – 1 chuỗi phổ biến khi
chọn độ hổ trợ nhỏ nhất bằng 1.
Vấn đề tương tự cũng xuất hiện đối với dữ liệu là các itemset( tập hợp các item).
Có một hướng giải quyết hay gọi là tập phổ biến đóng(frequent closed itemset). Một tập
đóng khi không tồn tại tập khác chứa nó cùng độ hỗ trợ. Một số thuật toán hiệu quả có
cách tiếp cận này là CLOSET, CHARM, CLOSET+.
Khai thác chuỗi tuần tự cũng có chung vấn đề như khai thác itemset. Câu hỏi đặt
ra liệu có thể áp dụng các thuật toán trên itemset cho chuỗi tuần tự hay không. Bời vì các
tuần tự yêu cầu thêm thứ tự của các item bên trong nó nên câu trả lời là không. Có hai
hướng tiếp cận để khai thác các mẫu đóng hay tối đại: vét cạn tìm chuỗi cần tìm hoặc tìm
ta một tập các ứng viên và loại bỏ dần các mẫu không thích hợp trên nó. Thoạt nhìn
hướng tiếp cận thứ nhất có vẻ đơn giản hơn, tuy nhiên chi phí cho việc quét cạn là khổng
lồ.Do đó chúng ta sẽ đi theo hướng tiếp cận thứ hai.
Ba tác giả : Xifeng Yan, Jiawei Han và Ramin Afshar đã đưa ra thuật toán gọi là
CloSpan(Closed Squential pattern mining). CloSpan có thể được áp dụng cho các tập dữ
liệu nhỏ và lớn khác nhau. Nó không tiết kiệm bộ nhớ( vấn đề này không khó giải quyết
đối với phần cứng hiện tại).
2
2. M t s khái ni mộ ố ệ
Giả sử ta có tập dữ liệu sau:
2.1 Item, Itemset, Sequence:
Đặt I = {i1, i2, …, in} là tập hợp tất cả các item. Ví dụ ở trên ta có I = {a, b, d, e, f}.
Một itemset là một tập hợp con của I.
Một sequence s = <t1 , t2 ,… , tm> là một danh sách có thứ tự các ti, ti ⊆ I. Chẳng
hạn s = <(af)> hay s’ = <(af)(d)(e)(a)> là các sequence.
2.2 Size và Length:
Kích thước của một sequence s, ký hiệu |s| là số lượng các itemset trong s.
Chiều dài của sequence s, ký hiệu l(s) là số lượng các item trong s.
Chẳng hạn : cho s = <(af)(d)(e)(a)>, |s| = 4 và l(s) = 5.
2.3 Sub-sequence và super-sequence:
Cho hai chuỗi a, b như sau: a = <a1 , a2 , … , am > và b = < b1 , b2 , … , bn >.
Chuỗi a được gọi là con của b khi: ∃ i1 , i2 , … , im sao cho 1 ≤ i1 < i2 < … < im ≤ n
và a1 ⊆ bi1 , a2 ⊆ bi2 , am ⊆ bim
Ta ký hiêu : a ⊑ b và a ⊏ b(khi a #b).
Khi đó b gọi là chuỗi cha của a(super-sequence).
3
2.4 Đ h tr :ộ ỗ ợ
Xét D = { s1 , s2 , … , sn } với mỗi chuỗi si được gắn với một id.
Độ hỗ trợ của một chuỗi α trong tập dữ liệu D là số các chuỗi s trong D chứa α.
support(α) = |{ s|s ∈ D, α ⊆ s }|
Nếu a ⊑ b & support(a) = support(b), ta gọi là b hấp thụ a( b absorbs a).
2.5 Chu i tu n t ph bi n và chu i tu n t đóng:ỗ ầ ự ổ ế ỗ ầ ự
Khi khai thác tập dữ liệu cần đặt ra một giới hạn nhỏ nhất cho độ hỗ trợ, ký hiệu
min_sup. Một chuỗi tuần tự gọi là phổ biến( frequent sequential pattern) khi nó có độ hỗ
trợ lớn hơn min_sup.Tập các chuỗi tuần tự phổ biến được ký hiệu là FS.
FS = {α | support(α) ≥ min_sup }
Một chuỗi tuần tự gọi là đóng(closed frequent sequential pattern) khi không tồn tại
chuỗi phổ biến khác chứa nó và cùng độ hỗ trợ với nó. Tập các chuỗi tuần tự đóng ký
hiệu là CS.
CS = {α | α ∈ FS và ∄ β sao cho α ⊑ β, support(α) = support(β)
Ta có CS ⊆ FS
Ví dụ với D và min_sup = 2 đã cho ta có CS = { <(af)(d):2>, <(af)(e):2>, <(e)
(a):3>, <(e)(a)(b):2>}
2.6 Itemset-extension và sequence-extension.
Một chuỗi có thể được mở rộng theo hai cách: itemset-extension(viết tắt là I-Step)
và sequence-extension(S-Step).
Trước tiên ta xét việc mở rộng một chuỗi bằng một item. Cho s = <t1 , t2 ,… , tm>
và item α. Định nghĩa I-Step và S-Step của s với α như sau:
▫ I-Step : s <>i α = <t1 , t2 ,… , tm ∪ {α}>
4
▫ S-Step: s <>s α = <t1 , t2 ,… , tm , {α}>
Ví dụ <(ae)> là I-Step của <(a)>, còn <(a)(e)> là S-Step của <(a)>
Tiếp theo ta xét việc mở rộng một chuỗi s với một chuỗi khác, chẳng hạn chuỗi p
= <t’1 , t’2 ,… , t’n>.
▫ I-Step : s <>i p = <t1 , t2 ,… , tm ∪ t’1 , t’2 ,… , t’n>
▫ S-Step: s <>s p = <t1 , t2 ,… , tm , t’1 , t’2 ,… , t’n>
Nếu s’ = s <> p thì s gọi là prefix của s’ còn p là suffix
Ví dụ: <(e)(abf)> là I_Step của <(e)(a)> và là S-Step của <(abf)>.
2.7 S-projected database:
Cho một chuỗi s, s-projected database( ký hiệu Ds) được định nghĩa như sau:
Ds = { p|s’ ∈ D, s’ = r <> p, trong đó r là prefix ngắn nhất của s’ và s ⊑ s’ }
Ví dụ: Cho D như sau:
D<(af)> = {<(d)(e)(a)>, <(bde)>}
D<(e),(a)>= { $, <(b)>, <(_bf)(bde)>}
Khi kèm theo điều kiệu min_sup = 2, ta có thể loại bỏ đi các item có độ hổ trợ
trong Ds nhỏ hơn min_sup. Ví dụ ở trên ta có thể rút gọn D<(af)> khi loại bỏ b vì độ trợ của
b trong D<(af)> nhỏ hơn min_sup
5
D<(af)> = {<(d)(e) >, <(de)>}
3. Cây th t t đi n(Lexicographic Sequence Tree)ứ ự ừ ể
3.1 Th t t đi nứ ự ừ ể
Khác với itemset , sequence yêu cầu thứ tự khi xét. Ví dụ <(a)(e)> # <(e)(a)>.
Cho hai itemset t và t’ như sau:
t = { i1 , i2 , … , ik } và t’ = { j1 , j2 , … , jl }
t < t’ khi:
▫ ∃ h , 0 ≤ h ≤ min(k, l) ta có ir = jr với r < h và ih = jh hoặc
▫ k < l và i1 = j1 , i2 = j2 , … , ik = jk .
Ví dụ : (a, f) < (b, f) ; (a, b) < (a, b, c); (a, b, c) < (b, c)
Mở rộng khi xét thứ tự giữa các sequence s và s’ ta có các quy tắc sau:
▫ s’ = s <> p
▫ s = α <>i p , s’ = α <>s p’ thì s < s’
▫ s = α <>i p , s’ = α <>i p’, p < p’ thì s <s’
▫ s = α <>s p , s’ = α <>s p’, p < p’ thì s <s’
Ví dụ : <(ab)> < <(ab)(a)> ; <(ab)> < <(a)(a)>
3.2 Cây
Một lexicographic sequence tree là một cấu trúc có:
Mỗi node biểu diễn một sequence. Node root bằng null.
Node con sẽ một dạng mở rộng I-Step hoặc S-Step từ node cha.
Node bên trái luôn nhỏ hơn bên phải
6
Hình trên là một ví dụ về cây chuỗi thứ tự từ điển. Ta xét node <(a)>. Ba
node con của <(a)> là mở rộng của <(a)>. <(aa)> là mở rộng theo I-Step, <(a)
(a)> và <(a)(b)> là S-Step. Ta có thể đơn giản hóa cây bằng một loại cây khác
mà không làm mất ý nghĩa, ta gọi đó là cây prefix search tree.
Không ghi rõ ràng sequence tại mỗi node. Sequence đó được định nghĩa
dựa trên node cha và thành phần mở rộng. Ví dụ hình trên các thành phần mở rộng
7
là ai, as, bi, bs, ci. Trong đó a,b,c là các item mở rộng khi qua một nhánh, i, s là kiểu
mở rộng, itemset-extension hay sequence-extension.
3.3 PrefixSpan
PrefixSpan là thuật toán tìm kiếm theo chiều sâu dùng để phát sinh ra prefix search
tree. Thuật toán được trình bày như sau:
PrefixSpan sẽ tìm kiếm tất cả các chuỗi phổ biến, đóng lẫn không đóng. Tham số
đầu vào của nó là chuỗi s và Ds( s-projected database) của nó. Thuật toán sẽ đệ quy bằng
các mở rộng chuỗi s theo itemset-sequence và sequence-extension dựa vào Ds cho đến khi
tất các chuỗi phổ biến đều được tìm thấy. Về cơ bản Clospan được xây dựng dựa trên
8
PrefixSpan, tuy nhiên nó xây dựng các điều kiện dừng đệ quy khác để kết thúc quá trình
đệ quy sớm hơn do đó hiệu quả và hiệu năng của Clospan sẽ khác.
4. Gi m b t không gian tìm ki m và Prefix Sequence Latticeả ớ ế
Rõ ràng nếu xây dựng lexicographic sequence tree hay prefix search tree thì không
gian tìm kiếm sẽ rất lớn với nhiều node và nhiều nhánh tùy vào dữ liệu đầu vào. Về cơ
bản CloSpan trước khi cho ra tập chuỗi tuần tự đóng sẽ phải trải qua hai giai đoạn: Một là
phát sinh ra các tập ứng viên, tập ứng viên này phải thỏa một số điều kiện nhất định nhờ
đó chúng ta thu hẹp không gian tìm kiếm. Giai đoạn thứ hai là từ tập ứng viên đó loại bỏ
các sequence không đóng để cho ra kết quả cuối cùng.
Trong mục này chúng ta sẽ đi qua giai đoạn đầu tiên: phát sinh tập ứng viên. Cũng
có thể phát sinh tập ứng viên sao cho nó cũng chính là tập chuỗi đóng cần tìm. Tuy nhiên
chi phí để tính toán là rất lớn, cần cân bằng giữa kích thước tập ứng viên với chi phí tính
toán.
4.1 B đ 1(Common prefix)ổ ề
Nếu tồn tại một chuỗi α là prefix của mọi chuỗi trong Ds theo cùng một loại mở
rộng ( itemset-extension hoặc sequence-extension). α là common prefix.
∀β, β ⊏ α. Không cần xét chuỗi s <> β chỉ cần xét chuỗi s <> α
Ví dụ:
Ds = {<(d)(e)(af)>, <(d)(e)(fg)>}
Chuỗi <(d)(e)> là common prefix. Do đó không cần xét s <> <(d)> và s <>
<(e)>
4.2 B đ 2(Parial prefix)ổ ề
Trong Ds item α luôn xuất hiện trước β ( nếu có β thì α luôn đứng trước nó, kiểu
mở rộng hoặc I-Step hoặc S-Step) thì ∀γ không cần xét S <> β <> γ.
9
Ví dụ
Ta thấy khi <(f)> xuất hiện tại sequence có ID là 0 và 2 thì <(a)> luôn đứng
trước nó trong chuỗi, <(a)> là partial prefix. Do đó không cần xét nhánh xuất phát từ
<(f)>.
Dễ dàng thấy được là bổ đề 1 là trường hợp đặc biệt của bổ đề hai có nghĩa là một
common prefix cũng là partial prefix của tất cả các chuỗi khác trong Ds.
4.3 Đ nh lý 1:ị
Trước khi đi vào định lý ta có khái niệm mới là kích thước của database.
ℶ (D)=∑i=1
n
l(s i)
Kích thước của D là tổng chiều dài các sequence bên trong nó.
Định lý 1 được phát biểu như sau:
Cho s ⊑ s’ ta có
10
Ds = Ds’ ℶ(Ds) = ℶ(Ds’)Chứng minh định lý 1:
- Hiển nhiên Ds = Ds’ ⇒ ℶ(Ds) = ℶ(Ds’)- Cần chứng minh: ℶ(Ds) = ℶ(Ds’) ⇐ Ds = Ds’
- s ⊑ s’ ta có: Ds’ ⊑ Ds và ℶ(Ds’) ≤ ℶ(Ds) do đó dấu bằng chỉ xảy ra khi Ds
= Ds’
4.4 B đ 3:ổ ề
Cho hai chuỗi s ⊑ s’, nếu : ℶ(Ds) = ℶ(Ds’) thì ∀ γ ta có support(s <> γ) = support(s’<> γ).Quay lại bản dữ liệu
Ta thấy ℶ(D<(af)>) = ℶ(D<(f)>) , cả hai chuỗi <(af)(d)> và <(af)(e)> đều phổ biến. Trường hợp này ta có thể kết luận độ hỗ trợ của <(af)(d)> = <(f)(d)> và <(af)(e)> = <(f)(e)> mà không cần tính toán độ hỗ trợ của <(f)(d)> hay <(f)(e)>.
Một khái niệm mới được đề cập ở đây thay vì định nghĩa các chuỗi đóng dựa trên độ hỗ trợ, ta định nghĩa projected database closed dựa vào ℶ. Tập các projected database closed, ký hiệu là LS được định nghĩa như sau:
LS = {s| support(s)>min_sup và ∄ s’ sao cho s ⊑ s’ và ℶ(Ds) = ℶ(Ds’)Ta có CS ⊆ LS ⊆ FS. Giải thuật CloSpan sẽ đi tìm tập LS trước, từ đó loại bỏ các
chuỗi không đóng để được tập CS.
4.5 H qu 1(Backward Sub-Pattern)ệ ả
Nếu s < s’ và s ⊐ s’ thì điều kiện ℶ(Ds) = ℶ(Ds’) là đủ để dừng việc tìm kiếm tại
node s’.
11
Ví dụ:
▫ <(af)> < <(f)>.
▫ <(f)> ⊏ <(af)>
▫ ℶ(D<(af)>) = ℶ(D<(f)>) ▫ Do đó không cần xem xét nhánh <(f)>
4.6 H qu 2: (Backward Sup-Pattern)ệ ả
Nếu s < s’ và s ⊏ s’ thì điều kiện ℶ(Ds) = ℶ(Ds’) là đủ để dừng việc tìm kiếm tại
node s’.
12
Ví dụ:
▫ <(b)> < <(eb)>.
▫ <(b)> ⊏ <(eb)>
▫ ℶ(D<(b)>) = ℶ(D<(eb)>) ▫ Do đó không cần xem xét nhánh <(eb)>
4.7 Prefix Sequence Lattice Tree
Chúng ta thay thế Prefix Search Tree bằng Prefix Sequence Lattice Tree.
Ví dụ đối với dữ liệu sau
Prefix Sequence Lattice Tree là
13
5. CloSpan: Thi t k và cài đ tế ế ặ
Cơ bản CloSpan có gồm hai bước quan trọng:
(1) Sinh ra tập LS, tập cha của tập CS
(2) Từ LS loại bỏ các chuỗi không đóng để được kết quả là tập CS cần tìm.
14
Hàm ClosedMining bao gồm các bước tiền xử lý cần thiết. Đầu tiên duyệt qua các
itemset và loại bỏ các itemset không phổ biến, sau đó hám CloSpan sẽ được gọi để phát
sinh ra Prefix Sequence Lattice Tree.
Thuật toán 3, CloSpan cũng tìm kiếm theo chiều sâu tương tự như PrefixSpan, tuy
nhiên nó hiệu quả hơn nhờ dòng lệnh ‘1’. Thuật toán luôn luôn kiểm tra s ⊑ s’ hoặc s’ ⊑ s, nếu : ℶ(Ds) = ℶ(Ds’) nó kết thúc quá trình tìm kiếm tại nhánh này. Có hai cách tiếp
cận ở bước này: Đầu tiên là tìm kiếm tất cả các chuỗi con và cha của chuỗi hiện tại, tuy
nhiên chi phí cho việc này rất lớn. Vì vậy chúng ta sẽ đi theo hướng tiếp cận thứ hai
thông qua một hash table có key là ℶ(Ds). Khi xét tới một chuỗi s thuật toán lấy ra các
chuỗi đã xét có kích thước projected database bằng nó sau đó mới kiểm tra điều kiện cha
con.
15
Thuật toán 4 được phát biểu như sau:
16
Kết thúc quá trình đệ quy ta được Prefix Sequence Lattice Tree chưa tập LS.
Không gian tìm kiếm được thu gọn đáng kể. Từ tập FS để duyệt để loại bỏ các chuỗi
không đóng. Việc duyệt trên tập FS sẽ nhanh và ít chi phí hơn rất nhiều.
Khuyết điểm
Cho ví dụ sau:
D<(a)(b)(c)> = D<(b)(c)> = D<(f)(b)(c)>
Khi xét đến chuỗi D<(f)(b)(c)> thì node <(b)(c)> đã bị xóa và link tới chuỗi
trước đó là <(a)(b)(c)>. Do đó thuật toán phải tốn thêm chi phí đệ quy duyệt tại node
<(f)(b)(c)>.
CloSpan vẫn chưa loại bỏ hoàn toàn các thao tác đệ quy dư thừa.
Một vấn đề khác đó là sự phân bố của các ℶ(Ds) khi chúng phân bố không đều, ví
dụ ℶ(Ds) chỉ nằm trong khoảng (2;3), lúc đó các chuỗi có cùng kích thước projected
database sẽ gom cục và thuật toán sẽ duyệt qua tất cả chúng.
Hướng tiếp cận để giải quyết vấn đề này là thay đổi key của Hash Table. Có thể
kết hợp ℶ(Ds) với các yếu tố khác như id, kích thước của chuỗi,… Mục tiêu là phân bố
các key trở nên đồng đều.
6. Đánh giá hi u năngệ
Thí nghiệm được thực hiện trên máy tính 1.7 GHZ Intel Pentium-4 PC, ram 1G,
chạy Window XP. Ngôn ngữ lập trình được sử dụng là C++. Dataset được sử dụng là
D10C10T2.5N10S6I2.5.
Dưới đây là các biểu đồ thể hiện khả năng thực thi của CloSpan.
17
18
Biểu đồ a là kết quả so sánh thời gian thực thi giữa ba thuật toán CloSpan,
PrefiSpan và CommonSpan.
Biểu đồ b cho biết số lượng các chuỗi cần duyệt tùy theo chiều dài của chuỗi và
min_sup.
Biểu đồ c là so sánh số lượng các chuỗi phải duyệt khi min_sup thay đổi giữa ba
thuật toán CloSpan, PrefiSpan và CommonSpan
7. K t lu nế ậ
Mặc dù không hoàn hảo nhưng Clospan vẫn là một giải thuật nhiều ưu điểm
Có thể cải tiến Clospan bằng cách thay đổi key trong Hash Table
19
Tài liệu tham khảoo Xifeng Yan, Jiawei Han, R. Afshar. CloSpan: Mining Closed Sequential Pattern in
Large Datasets, 2003
o R. Afshar. Mining frequent max, and closed sequential patterns. M.Sc. Thesis,
School of Computing Science, Simon Fraser University, Aug. 2002
o R. Agarwal, C. Aggarwal, anhd V.V.V. Prasad. Depth-first generation of large
itemsets for association rules. In IBM Technical Report RC21538, July 1999.
o R. Agarwal and R. Srikant. Fast algorithms for mining association rules. In Proc.
1994 Int.Conf.Very Large Data Bases (VLDB’94), pages 487-499, Santiago,
Chile, Sept.1994.
o R. Agarwal and R. Srikant. Mining sequential patterns. In Proc. 1995 Int. Conf.
Data Engineering (ICDE’95), pages 3-14, Taipei, Taiwan, Mar. 1995
o J. Ayres, J. E. Gehrke, T. Yiu, and J. Flannick. Sequential pattern mining using
bitmaps. In Proc. 2002 ACM SIGKDD Int. Conf. Knowledge. Discovery in
Databases ( KDD’02), Edmonton, Canada, July 2002.
20