Để áp dụng Roaring bitmap vào thuật toán TKS thay thế cho bit vector tĩnh chúng ta cần thay đổi cấu trúc dữ liệu để lưu bitmap và thay thế các phương thức sử dụng cho bit vector tĩnh bằng các phương thức dùng cho Roaring bitmap trong các thủ tục có liên quan như thủ tục thiết lập bit 1 cho bitmap, thủ tục tạo bitmap mới cho bướcs-extension và i-extension.
Cấu trúc dữliệu lưu bitmap:
Khai báo cấu trúc dữ liệu để lưu đối tượng bitmap bao gồm: Khai báo bitmap sử dụng Roaring bitmap
Để tính độ hỗ trợ hiệu quả hơn, chúng ta cần lưuthêm các thông tin sau:
Khai báo số nguyên lastSID lưu sid của chuỗi cuối cùng chứa bit 1 được
thêm vào bitmap với giá trị khởi đầu là -1
Khai báo số nguyên supportlưu độ hỗ trợ của bitmapvới giá trị khởi đầu là 0
Chúng ta lưu sid của chuỗi cuối cùng chứa bit 1 được thêm vào bitmap nhằm
giúp tính độ hỗ trợ của bitmap, bởi vì nếu có nhiều hơn một bit 1 trong cùng 1 chuỗi
(cùng lastSID) thì độ hỗ trợ cũng chỉ tính là 1. Ngoài ra, việc lưu độ hỗ trợ của bitmap giúp chúng ta truy cập nó nhanh hơn và có thể tính tốn nó trong lúc tạo hay cập nhật bitmap.
Thủtục thiết lập bit 1 cho bitmap:
Đầu vào: sid, tid tương ứng với bit cần thiết lậpvà danh sách sequenceSize cho
biết vị trí bắt đầu của mỗi chuỗi trong bitmap. Vớitid là vị trí của itemset chứa item
tương ứng với bit cần thiết lập trong chuỗi sid.
Thủ tục này tính tốn vị trí của bit cần thiết lập trong bitmap bằng cách lấy giá trị tương ứng với sid trong sequenceSize cộng với tid và gọi phương thức thiết lập bit 1 củaRoaring bimap tại vị trí này. Sau đó,cập nhậthỗ trợ của bitmap và lưu sid
Thủtục tạo bitmap mới cho bước i-extension:
Đầu vào:
bitmapItem: bitmap của item được thêm vào mẫu bằngi-extension sequenceSize: danh sách chứavị trí bắt đầu của mỗi chuỗi trong bitmap.
Đầura:
newBitmap là kết quảcủa bướci-extension giữathis.bitmap và bitmapItem
Thủ tục này thực hiện vịng lặp qua tất cả các vị trí của bit 1 trên this.bitmap và kiểm tra sự hiện diện của bit 1 trong bitmapItem tại các vị trí này. Nếu cả hai có vị trí bit 1 giống nhau thì newBitmap cũng sẽ được thiết lập bit 1 ở vị trí đó đồng thời cập nhật lại độ hỗ trợ của nó và lưu sid của chuỗi cuối cùng chứa bit 1 vừa được
thêm vào bitmap.Cách làm này có ưu điểm là chỉ cần một vịng lặp, chúng ta có thể tạo ra newBitmap cùng với độ hỗ trợ của nó trong khi dùng phép toán AND thì chúng ta phải duyệt lạinewBitmap để tính độ hỗ trợ của nó.
Thủtục tạo bitmap mới cho bước s-extension:
Đầu vào:
bitmapItem: bitmap của item được thêm vào mẫu bằngs-extension sequenceSize: danh sách chứavị trí bắt đầu của mỗi chuỗi trong bitmap.
lastBitIndex: bit cuối cùng của bitmap
Đầura:
newBitmap là kết quả của bướcs-extension giữathis.bitmap và bitmapItem
Thủ tục này thực hiện bước s-extension ngắn gọn hơn những gì mơ tả trong
hình 3.3 nhằm tăng tốc độ xử lý của thuật tốn. Cách thực hiện này được mơ tả như sau: dùng 2 vòng lặp chothis.bitmap và bitmapItem.Ở vòng lặp thứ nhất,bắt đầu từ vị trí 0,ta tìm vị trí x của bit 1 đầu tiên trong this.bitmap và lấy vị trí bit cuối cùng
của chuỗi chứabit này, giả sử là a–1.Ở vòng lặp thứ 2, ta sẽ bắt đầu tìm các bit 1
trong bitmapItem từ vị tríx + 1đếna–1. Nếu tìm thấy các bit 1 trong vùng này của bitmapItem, ta sẽ thiết lập các bit 1 ở vị trí tương ứng cho newbitmap. Sau đó, cập nhật độ hỗ trợ cho newBitmap và lưu sid của chuỗi cuối cùng chứa bit 1 vừa được
thêm vào bitmap. Quay về vòng lặp thứ nhất, ta bắt đầu lại q trình này từ vị trí a
và cứ tiếp tục như vậy cho đến khi đến cuối một trong hai bitmap thì dừng.Ưu điểm của cách làm này là không phải biến đổi this.bitmaptrước khi thực hiện phép AND. Tuy sử dụng 2 vịng lặp nhưng khơng duyệt hết tất cả các giá trị mà mỗi vòng lặp chỉ duyệtmột số đoạn khơng trùng lắp với vịng lặp kia. Do đó, giảm được thời gian xử lý.
CHƯƠNG 4
THỰC NGHIỆM – ĐÁNH GIÁ KẾT QUẢ
Để đo tính hiệu quả của các thuật toán TKS và TKS đã được cải tiến, thí nghiệm được thực hiện trên các bộ dữ liệu chuẩn lấy về từ địa chỉ http:// http://www.philippe-fournier-viger.com/spmf/index.php?link=datasets.php. Máy tính: Dell XPS L321X bộ xử lý Core i5-2467M 1.6 GHz và 4 GB bộ nhớ chính, chạy trên hệ điều hành Windows 7 Ultimate 64 bit, ngơn ngữ lập trình Java.
Hình4.1 Giao diện chương trình
Choose an algorithm: chọn thuật tốnTKS gốc hay thuật toán TKS cải tiến
Choose input file: Chọnfile CSDL được chuyển về dạng *.txt
Set output file: Chọnfile lưu kết quả của thuật toán
Choose k: Chọn số mẫu sẽ được trả về trong kết quả của thuật toán
Open output file when the algorithm terminates: Mở file chứa kết quả khi thuật
toán thực hiện xong.
Khi thực hiện xong, thuật tốn sẽ hiển thị các thơng số đo được như số mẫu tìm được, thời gian tiền xử lý, tổng bộ nhớ đã sử dụng, tổng thời gian thực hiện,… ở textbox dưới nútRun algorithm.