3.2 THUẬT TOÁN TKS (Top-K Sequential pattern mining)
3.2.3 Các chiến lược tăng hiệu quả khai thác dữ liệu
Chiến lược 1:Tăng ngưỡng hỗtrợ đểcắt tỉa khơng gian tìm kiếm
Đây cũng là ý tưởng chính của thuật tốn TKS:
Đặtminsup = 0.
Tìm kiếm các mẫu tuần tự phổ biến bằng cách áp dụng thủ tục SPAM Search.
Dùng danh sách Lđể chứa các mẫu phổ biến đã tìm được cho tới hiện nay
(Lđược sắp xếp theo độ hỗ trợ).
Khi có đúngk mẫu được tìm thấy, tăng minsup lên bằng độ hỗ trợ của mẫu
phổ biến có độ hỗ trợ thấp nhất trongL.
Sau đó, mỗi khi một mẫu phổ biến được tìm thấy và thêm vào L thì loại bỏ các mẫu có độ hỗ trợ thấp nhấttrong L cho tới khi L chỉ chứa đúng k mẫu,
đồng thời tăng minsup lên bằng độ hỗ trợ của mẫu có độ hỗ trợ thấp nhất trong L.
Dừng khi không thể tạo được thêm một mẫu nào nữa.
Nhận xét: Có thể dễ dàng thấy rằng thuật tốn này là đúng đắn và đầy đủ. Tuy nhiên, thuật tốn có hiệu quả kém về thời gian thực thi bởi vì khơng gian tìm kiếm quá lớn, cần phải sử dụng thêm các chiến lược bổ sung để nâng cao hiệu quả của thuật toán.
Chiếnlược 2: Mởrộng các mẫu triển vọng nhất
Ý tưởng: Nếu các mẫu có độ hỗ trợ cao được tìm thấy sớm hơn thì nó cho phép
thuật tốn tăng minsup nhanh hơn. Vì vậy, cắt tỉa được phần khơng gian tìm kiếm lớn hơn.
Chiến lược: Thêm vào biến R chứa k mẫu có độ hỗ trợ cao nhất và có thể được
sử dụng để tạo ra nhiều mẫu khác.Mẫu có độ hỗ trợ cao nhất luôn ở trongR và luôn
được mở rộng đầu tiên.
Mã giả của thuật toán TKS phiên bản kếthợp chiến lược 1 và 2 được trình bày ở hình 3.5
Hình3.5 Thuật toán TKS
TKS(CSDL chuỗi D, k)
1. R := Ø. L := Ø. minsup := 0.
2. Quét CSDLđểtạo V(D).
3. Cho Sinitlà danh sách các items trong V(D).
4. FOR each item s∈Sinit, IF s là phổbiến tương ứng với bv(s) THEN 5. SAVE(s, L, k, minsup).
6. R := R U {<s, Sinit, các items từSinitlớn hơns theo thứtựtừ điển>}. 7. WHILE∃<r, S1, S2>∈R AND sup(r) ≥minsup DO
8. Chọn bộba <r, S1, S2> với mẫu rcó độhỗtrợcao nhất trong R. 9. SEARCH(r, S1, S2, L, R, k, minsup).
10. Loại bỏ<r, S1, S2> từR.
11. Loại bỏtừR tất cảcác bộ<r, S1, S2>∈R | sup(r) < minsup.
12. END WHILE
Hình3.6 Thủ tục tạo ứng viên đãđược sửa đổi
Hình3.7 Thủ tục SAVE
Thực hiện: Đầu tiên, thuật toán TKS khởi tạo các biến R, L là các tập rỗng và
đặtminsup = 0 (dòng 1). Sau đó, qt CSDL chuỗiDđể tạo raV(D) (dịng 2), đồng thời một danh sách của tất cả các items trong D được tạo ra (Sinit) (dòng 3). Với mỗi item s, độ hỗ trợ của nó được tính tốn dựa trên bit vector bv(s) của nó trong V(D). Nếu item là phổ biến thì thủ tục SAVE được gọi để lưu〈s〉vào L, với〈s〉và L
SAVE(r, L, k, minsup)
1. L := L U {r}.
2. IF |L| > k THEN
3. IF sup(r) > minsup THEN
4. WHILE |L| > k AND∃s∈L | sup(s) = minsup, Loại bỏs từL.
5. END IF
6. Đặt minsup bằng độhỗtrợthấp nhất của các mẫu trong L. 7. END IF
SEARCH(pat, Sn, In, L, R, k, minsup)
1. Stemp:= Itemp:= Ø 2. FOR each item i∈Sn,
3. IF mởrộng s-extension của pat là phổbiến THEN Stemp := StempU {i}.
4. FOR each item j∈Stemp,
5. SAVE(s-extension của pat với j, L, k, minsup).
6. R := R U {<s-extension của pat với j, Stemp, tất cảcác phần tửtrong Stemp lớn
hơnj>}.
7. FOR each item i∈In,
8. IF mởrộng i-extension của pat là phổbiến THEN Itemp := ItempU {i}.
9. FOR each item j∈Itemp,
10. SAVE(i-extension của pat với j, L, k, minsup).
11. R := R U {<s-extension của pat với j, Stemp , tất cảcác phần tửtrong Itemplớn
là các đối số đầu vào (dịng 4 và 5). Ngồi ra, bộ ba <s, Sinit, các items từ Sinit lớn hơns theo thứ tự từ điển> được lưu vàoRđể chỉ định rằng〈s〉có thể được mở rộng đểtạo các ứng viên (dịng 6). Sau đó, một vịng lặp WHILE được thực thi. Nó chọn đệ quybộ ba (tuple) đại điện cho mẫurcó độ hỗ trợ cao nhất trongR sao cho sup(r)
≥ minsup (dịng 7 và 8). Tiếp đó, thuật tốn sử dụng bộ ba để tạo ra các mẫu bằng
cách gọi thủ tục SEARCH trong hình 3.6 (dịng 9) và loại bỏ bộ ba khỏi R ngay khi
tất cả các bộ ba cho các mẫu đã trở nên không phổ biến (dòng 11). Ý tưởng của vịng lặp WHILE là ln mở rộng các mẫu có độ hỗ trợ cao nhất đầu tiên bởi vì nó hầu như luôn tạo ra các mẫu có độ hỗ trợ cao và vì vậy, cho phép tăng minsup
nhanh hơn để cắt tỉa nhiều khơng gian tìm kiếm hơn. Vịng lặp kết thúc khi khơng có mẫu nào trong R có độ hỗ trợ cao hơn minsup. Lúc này, L chứa k mẫu tuần tự
phổ biến (dịng 13).
Thủ tục SAVE được trình bày trong hình 3.7. Nhiệm vụ của nó là tăng minsup
và cập nhật danh sáchL khi có một mẫu phổ biến mớirđược tìm thấy. Đầu tiên, thủ tục SAVE thêm mẫu r vào L (dịng 1). Sau đó, nếu L chứa nhiều hơn k mẫu và độ
hỗ trợ cao hơn minsup thì các mẫu trong L có độ hỗ trợ bằng với minsup có thể
được loại bỏ cho đến khi chỉ cònđúngk mẫu được giữ lại (dòng 3, 4, 5). Cuối cùng, minsup được tăng lên bằng độ hỗ trợ nhỏ nhất của các mẫu trong L (dòng 6). Bằng cách này, k mẫu tuần tự phổ biến tìm thấy được lưu giữ trongL.
Nhận xét:Chọn cấu trúc dữ liệu cho L và R cũng rất quan trọng, nó ảnh hưởng
đến hiệu suất của thuật toán.Để nâng cao hiệu quả của thuật toán TKS, các tậpR và L nên được thực hiện bằng các cấu trúc dữ liệu hỗ trợ thêm, xóa và tìm kiếm phần tử lớn nhất/nhỏ nhất một cách hiệu quả. Trong phần thi cơng của mình, tác giả sử dụng Fibonacci heap choL và R với chi phí cho việc thêm và tìm kiếm phần tử lớn
nhất/nhỏ nhất là O(1), xóa là O(log(n)).
Chiến lược 3: Loại bỏcác items không phổbiến trong khi tạoứng viên
Ý tưởng: Chúng ta thấy rằng một chi phí lớn cho việc tạo ứng viên là thực thi các phép giao (AND) bit vector bởi vì các bit vector có thể rất dài đối với các bộ dữ liệu lớn. Chiến lược này cải thiện thời gian thi hành của thuật toán bằng cách giảm
số phép giao giữa các bit vector được thực thibởi thủ tục SEARCH.
Thực hiện:
Dùng một bảng băm để lưu các itemsđã trở nên không phổ biến khi minsup
được tăng lên bởi thuật toán. Điều này được thực hiện trong dòng 4 của thủ tục SAVE bằng cách thay thế “Loại bỏ s từL” bằng “Loại bỏ s từL và IF s
chứa một item đơnTHENđặtnó vào bảng bămchứacác items bị loại bỏ”. Mỗi khi thủ tục SEARCH xem xét mở rộng (s-extension và i-extension) một
mẫu tuần tự với một item, item đó sẽ được kiểm tra trong bảng băm. Nếu bảng băm chứa item đó thì item đó sẽ bị bỏ qua (mẫu mở rộng sẽ không được tạo ra). Điều này cho phép tránh thực hiện các phép giao bit vector tốn kém trên các item này.
Tích hợp chiến lược này không làm ảnh hưởng đến kết quả của thuật tốn bởi vì nối thêm một item khơng phổ biến vào một mẫu tuầntự không thể tạo ra một mẫu tuần tự phổ biến.
Chiến lược 4: Cắt tỉaứng viên với Precedence Map (bản đồthứtự ưu tiên)
Ý tưởng: Đưa ra một cấu trúc dữ liệu mới gọi là Precedence Map (PMAP) cho biết số lần mà mỗi item xuất hiện sau mỗi item khác bởi s-extension và i-extension.
Mỗi lần mở rộng một mẫu với một item, thuật toán sẽ tra vào PMAP để phát hiện sớm mẫu mở rộng là không phổ biến nhằm tránh thực hiện phép giao bit vector không cần thiết và tốn nhiều chi phí. Từ đó cải thiện được thời gian thực thi của thuật tốn.
Cấu trúcPMAP:
Item iđược trình bày bằng 1 danh sách các bộ ba theo mẫu<j, m, x> với m
là số chuỗi chứa cả i, j và j xuất hiện sau i trong CSDL bởix-extension (x {i, s})
Item i xuất hiện sau item j trong chuỗi〈A1, A2, …, An〉bởis-extension nếu j Axvà iAyvớix, y là số nguyên và 1≤x < y≤n.
Item i xuất hiện sau item j trong chuỗi 〈A1, A2, …, An〉bởi i-extension nếu i, jAxvớix là số nguyên, 1≤x≤n và i lớn hơnj theo thứ tự từ điển.
Ví dụ:Cấu trúc dữ liệuPMAPđược xây dựng cho CSDLD4 ở bảng3.1
Bảng3.3 Cấu trúc dữ liệu PMAP được xây dựng từ CSDL chuỗi D4
Item Pair of type <item, support>
a <a,1,s> <b,2,s>, <b,2,i>, <c,2,s>, <d,1,i>, <e,2,s>, <e,1,i>, <f,2,s>, <f,1,i>, <g,1,s>
b <a,1,s>, <b,1,s>,<c,1,s>, <e,2,s>, <e,1,i>, <f, 4,s>, <f,1,i>, <g,2,s> c <a,1,s>, <b,1,s>, <e,2,s>, <f,2,s>, <g,1,s> d <a,1,s>, <b,1,s>,<c,1,s>, <e,1,s>, <f,1,s> e <f,1,i> f <e,2,s>, <g,2,i> g <e,1,s>
Trong ví dụ này, item f liên kết với bộ ba <e, 2, s> vì e xuất hiện sau f bởi s-extension trong 2 chuỗi, item f liên kết vớibộ ba<g, 2, i> vì g xuất hiện sau f bởi i-extension trong 2 chuỗi.
Thực hiện:
PMAP được xây dựng chỉ với 1 lần quét CSDL và được xây dựng trong lần quét cơ sở dữ liệu thứ hai để các item khơng phổ biến có thể được loại trừ khỏiPMAP nhằm làm giảm kích thước củanó.
Thực hiện PMAP bằng một bảng băm (hash table) chứa các tập băm (hash set) để tránh lãng phí bộ nhớ khi làm việc với các tập dữ liệu thưa (sparse datasets).
Cấu trúc PMAP được sử dụng trong thủ tục SEARCH. Trước khi tạo ra một ứng viên bằng cách thêm mộtitem x vào mộtmẫupat, kiểm tra trongPMAP.
Nếu ∃a∈pat mà a liên kết vớimộtbộ<x, m, s> (s-extension) hoặc<x, m, i> (i-extension) và m < minsup thì mẫu mở rộng sẽ là mẫu không phổ biến
và sẽ không được tạo ra.
Điều này giúp tránh được việc thực thi phép giao bit vector của x và pat. Item x có thể được loại bỏ khỏiStemp(Itemp).
Ví dụ: Cho cấu trúc dữ liệu PMAP ở bảng 3.3, xét mẫu 〈{a}, {b}〉 và item c.
Vớiminsup = 2,〈{a}, {b}, {c}〉là mẫu không phổ biến do itemb liên kết với bộ ba <c, 1, s>