Item Bit vector
a 100001001100000 b 100000011010010 c 010000100000000 d 000001000000000 e 000010001000100 f 001000001001001 g 001100000000001
3.2.2 Thủ tục tạo ứng viên SPAM Search
Thủ tục tạo ứng viên [4] được trình bày trong hình 3.1 bên dưới. Thủ tục này nhận hai tham số đầu vào là CSDL chuỗi và ngưỡng minsup. Các bước thực hiện
Hình3.1 Thuật tốn SPAM
Hình3.2 Thủtục tạo ứng viên
Quét CSDL một lần để xây dựng CSDL bitmap dọc (xem bảng 3.2), đồng thời đếm độ hỗ trợ của các item đơn.
Với mỗi item phổ biến s, nó gọi thủ tục “SEARCH”. Thủ tục này xuất ra
mẫu〈{s}〉và đệ quy dị tìm các mẫu ứng viên bắt đầu bằng tiền tố〈{s}〉.
Thủ tục SEARCH(hình 3.2) nhận bốn tham số đầu vào là: một mẫu tuần tự
pat, hai tập các items Sn, In được dùng để nối thêm vào mẫu pat nhằm tạo cácứng viên và ngưỡngminsup. Sn là tập các items được nối thêm vào mẫu
pat bởi việc mở rộng chuỗi s-extension. Kết quả của việc mở rộng s-extension giữa một mẫu 〈i1, i2,…, in〉với itemx là 〈i1, i2,…, in,{x}〉 [4]. In
SPAM(CSDL chuỗi D, minsup)
1. Quét CSDL đểtạo V(D)và xác định Sinit(danh sách các items phổbiến). 2. FOR each item s∈Sinit,
3. SEARCH(〈s〉, Sinit, tập các items từSinitcó thứtựtừ điển lớn hơns, minsup).
SEARCH(pat, Sn, In, minsup)
1. Đầu ra: mẫu pat.
2. Stemp:= Itemp:=
3. FOR each item i∈Sn,
4. IF mởrộng s-extension của pat là phổbiến THEN Stemp:= StempU {i}.
5. FOR each item j∈Stemp,
6. SEARCH(mởrộng s-extension của pat với j, Stemp, các phần tửtrong Stemp
lớn hơnj, minsup).
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. SEARCH(mởrộng i-extension của pat với j, Stemp , tất cảcác phần tửtrong
là tập các items được nối thêm vào mẫu pat bởi việc mở rộng itemset i-extension. Kết quả của việc mở rộng i-extension giữa một mẫu 〈i1, i2,…, in〉với itemx là〈i1, i2,…, inU {x}〉 [4].
Hình3.3 Mở rộng s-extension
Hình3.4 Mở rộng i-extension
Với mỗi ứng viên pat’ được tạo ra bởi mở rộng s-extension và i-extension,
& result S-step process & result
thủ tục SEARCH tính tốn bit vector bv(pat’) bằng cách thực thi một phép
logic AND [4] giữa các bit vector của pat và của item được nối thêm vào. Độ hỗ trợ của ứng viên được tính mà không cần phải quét lại CSDL bằng cách đếm số bit 1 đại diện cho các chuỗi phân biệt trong bit vectorbv(pat’).
Ví dụ trong hình 3.3,〈{a}, {b}〉có độ hỗ trợ là 2 (do có hai bit 1 cùng nằm trên một chuỗi nên chỉ tính là 1).
Nếu mẫu pat’ là phổ biến thì nó được sử dụng trong lời gọi đệ quy tới thủ tục SEARCH để tạo ra các mẫu bắt đầu bằng tiền tố pat’. Chú ý rằng trong lời gọi đệ quy, chỉ những items có thể dẫn đến một mẫu phổ biến bởi việc mở rộng (s-extension và i-extension) mẫu pat thì mới được xem xét cho
việc mở rộngpat’ [4]. Những mẫu không phổ biến thì khơng được mở rộng bởi thủ tục SEARCH bởi vì tính chất Apriori (bất kỳ mẫu tuần tự không phổ biến nào đều không thể được mở rộng để trở thành một mẫu tuần tự phổ biến).
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 toá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 tố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ư ln 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 tố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 toá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