Tính thời gian cho phương án tách chuỗi

Một phần của tài liệu Ứng dụng phân tích mẫu chuỗi tuần tự vào việc phát hiện thói quen sử dụng các ứng dụng trên thiết bị di động (Trang 26)

Chọn khoảng thời gian trong phương án 3 (trong mục 3.2) như thế nào để có thể cho việc phân tách đạt kết quả tối ưu. Để giải quyết được bài toán này, chúng tôi thử xác định một khoảng [tngưỡng_mintngưỡng_max] để phân tách một chuỗi dài thành các chuỗi ngắn, sau đó đi tìm khoảng thời gian phù hợp cho việc phân tách. Ví dụ, xác định tngưỡng_min = 8h, tngưỡng_max = 48h, ứng với tngưỡng_max đó sẽ phân tách được n1 chuỗi con đưa vào khai phá ra tập kết quả sp1. Bước tiếp theo là tngưỡng = tngưỡng_maxdelta (delta > 0 được gọi là bước giảm) và tính số

chuỗi con được phân tách n2 chuỗi con đưa vào khai phá ra tập kết quả sp2 sau đó so sánh sp1 với sp2 để lấy kết quả tốt hơn, vòng lặp được tiến hành cho đến khi có kết quả tốt nhất hoặc khi tngưỡng <= tngưỡng_min . Với phương án phân tách này sẽ không hiệu quả vì: nếu xác định delta quá nhỏ (1s) thì mất rất nhiều vòng lặp. Nếu delta lớn thì có thể bỏ sót kết quả tốt nhất (tức là giá trị thời gian nhỏ nhất nhưng khai phá ra tập thói quen nhiều nhất). Tuy nhiên, chúng ta đều biết rằng nếu chọn giá trị tngưỡng = tngưỡng_max thì ta sẽ có kết quả khai phá ra tập thói quen lớn nhất nhưng giá trị tngưỡng không phải là nhỏ nhất. Ví dụ, giả sử tại giá trị

tngưỡng = tngưỡng_max = 23h thì ta thu được tập thói quen sử dụng 2 phần mềm trở

lên là 50 thỏa mãn độ hỗ trợ tối thiểu, người ta tìm thấy rằng giá trị tngưỡng từ 20h đến 23h đều cho kết quả khi khai phá tập dữ liệu phân tách như trên thì rõ ràng tại kết quả tngương=20h sẽ cho kết quả tốt nhất.

time Itemseti appj j app i, startTime appx

Trong đa số các trường hợp tngưỡng < tngưỡng_max thì số lượng các thói quen được phát hiện đều nằm trong trường hợp tngưỡng_max và số lượng các chuỗi con được sinh ra (trường hợp tngưỡng) lớn hơn số lượng chuỗi con được sinh ra ở trường hợp tngưỡng_max. Do đó, nếu áp dụng giá trị [tngưỡng_mintngưỡng_max] thì ta chỉ cần lấy trường hợp tngưỡng_max để phân tách dữ liệu.

Để xác định khoảng thời gian cho việc phân tách chuỗi gốc ban đầu thành nhiều chuỗi con chứa mẫu tuần tự nhất. Chúng tôi đề xuất giải pháp gồm hai bước như sau:

-Khai phá toàn bộ tập chuỗi ban đầu chưa phân tách để tìm ra tập mẫu chuỗi tuần tự thoản mãn độ hỗ trợ tối thiểu và có độ dài lớn hơn 1.

-Từ các mẫu chuỗi tuần tự kết quả đó, ta sẽ tiến hành tính ngược lại thời gian để cắt các chỗi dài thành các tập các chuỗi ngắn.

Để cho rõ hơn về giải pháp trên, giả sử chúng ta có tập chuỗi ban đầu chưa phân tách là PS1, PS2, …, PSn. Qua việc khai phá tập dữ liệu trên, ta thu được tập mẫu chuỗi tuần tự thỏa mãn độ hỗ trợ tối thiểu có độ dài ≥ 2 như sau: FSP1, FSP2, …, FSPk.

Với mỗi FSPi ta tính khoảng thời gian để phân tách tập chuỗi gốc PS1, PS2, …, PSn được nhiều chuỗi con chứa FSPi nhất. Chi tiết việc tính các khoảng thời gian xin tham khảo Phục lục A của Luận văn này.

Để minh họa cho cách tiếp cận trên, chúng tôi thực hiện trên ví dụ 3.1 dưới đây.

Ví dụ 3.1. Giả sử chúng ta có 4 chuỗi dài và các khoảng cách thời gian (các đơn vị thời gian như nhau) tương ứng như sau:

S1 = 9abcdef / 10,12,9,120,40,35

S2 = 12a3cjdef / 5,15,8,90,30,7,12,39,20 S3 = 4dfxt5d6f / 9,74,20,50,21,33,14 S4 = 0acaoc / 32,12,80,23,44

Với, dữ liệu tại hàng 1 là chuỗi dài có 7 sự kiện <9,a,b,c,d,e,f > và khoảng cách thời gian tương ứng với các sự kiện như sau:

Bảng 3.1 Khoảng cách thời gian giữa các sự kiện

Chuỗi sự kiện Sự kiện Khoảng cách

thời gian

Trước Sau

a,b a b 12 b,c b c 9 c,d c d 120 d,e d e 40 e,f e f 35 Các hàng dữ liệu khác cũng tương tự

Ta có tập chuỗi dữ liệu chưa phân tách PS = {PS1 = <9abcdef>, PS2 = <12a3cjkef>, PS3 = <4dfxt5d6f>, PS4 = <0acaoc>}

Nếu khai phá tập chuỗi dữ liệu trên với độ hỗ trợ tối thiếu là 0.75 thì ta có 2 tập mẫu tuần tự FSP1 = <ac>, FSP2 = <df>.

Đối với FSP1 ta sẽ có các tập chuỗi con tối thiểu phủ <ac> hoặc nằm giữa 2 chuỗi con tối thiểu phủ <ac> như sau:

SS1={<abc>PS_1, <a3c>PS_2, <ac>PS_4, <aoc>PS_4, <ca>PS_4} với <ca> là

không phủ <ac> nhưng nằm giữa 2 chuỗi con tối thiểu phủ <ac>.

Từ các chuỗi con tối thiểu phủ <ac> đó, ta tính các khoảng thời gian để

phân tách chuỗi ban đầu ra nhiều chuỗi con chứa <ac> nhất như sau:

Bảng 3.2 chuỗi con chứa <ac> và khoảng thời gian phân tách

Chuỗi gốc Chuỗi con Max slotTime Thời gian

phân tách

Số lượng chuỗi chứa

<ac>

9abcdef <abc> (timeab=12, timecb=9) = 12 t > 12 1

12a3cjdef <a3c> (timea3=8, time3c=90) = 90 t >90 1

0acaoc <ac> (timeac)=12 12 < t <= 44 1

<ca> (timeac=80) = 80 t > 80 1

<aoc> (timeao=23, timeoc=44) = 44

44 < t <= 80 2

Như vậy, với thời gian phân tách 44 < t ≤ 80 sẽ phân tách được 3 chuỗi con chứa <ac>. Hoặc t > 90 sẽ có 3 chuỗi chứa <ac>

Đối với SP2 ta sẽ có các tập chuỗi con phủ <df> hoặc nằm giữa 2 chuỗi

Bảng 3.3 chuỗi con chứa <df> và khoảng thời gian phân tách

Chuỗi gốc Chuỗi con Max slotTime

Thời gian phân tách Số lượng chuỗi chứa <df>

9abcdef <def> (timede=40, timeef=35) = 40 40 < t 1

12a3cjdef <def> (timede=39, timeef=20) = 39 39 < t 1

4dfxt5d6f <df> (timedf)=74 74 < t 1

<fxt5d> (20,50,21,33) = 50

<d6f> (33,14) = 33 33 < t 1

Như vậy, với thời gian phân tách t > 40 sẽ phân tách được 3 chuỗi con chứa <df>.

Đối với dữ liệu ở ví dụ trên thì chúng ta có thể nhận thấy việc phân tách chuỗi dữ liệu dài thành các chuỗi dữ liệu ngắn theo đề xuất của chúng tôi là tương đối hiệu quả. Tuy nhiên, có một số vấn đề cần phải giải quyết trước khi đi vào áp dụng phương án đó. Đầu tiên là tại sao chúng tôi lại đề xuất ra phương pháp đó, tại sao phải tìm các mẫu chuỗi tuần tự có độ hỗ trợ lớn thoản mãn độ hỗ trợ tối thiểu? vấn đề cuối cùng là giải pháp đó có tối ưu không ?.

Chúng ta đều biết rằng mỗi một người sử dụng đều dùng một số lượng phần mềm nhất định trên TBDĐ và hành vi đó thường được lặp đi lặp lại nhiều lần trong một khoảng thời gian vài ngày, vài tuần, thậm chí cả vài tháng. Tuy nhiên, trong xã hội đa dạng người dùng, thì mỗi người lại sử dụng các phần mềm có thể không giống nhau, nếu sử dụng các phần mềm giống nhau thì có thể ở những thời điểm khác nhau nên xuất phát từ yêu cầu của bài toán nên chúng tôi muốn đưa ra được các thói quen mang tính phổ biến (qua việc khai phá toàn bộ chuỗi ban đầu) và có sự ràng buộc về thời gian (slotTime dùng để phân tách chuỗi không quá lớn) – đó chính là phương án đề xuất của chúng tôi.

Việc tìm các mẫu chuỗi tuần tự vượt qua độ hỗ trợ tối thiểu vì:

- Chúng tôi dự đoán rằng nếu mẫu tuần tự A có độ hỗ trợ lớn hơn mẫu chuỗi tuần tự B thì việc phân tách chuỗi dài ban đầu thành các chuỗi con ngắn hơn theo thời gian có sự định hướng theo mẫu chuỗi tuần tự A đó sẽ được nhiều hơn các mẫu tuần tự B qua bước phân tách trên. Vì, số lượng các chuỗi gốc có chứa mẫu tuần tự A lớn hơn số lượng chuỗi gốc có chứa mẫu chuỗi tuần tự B trong tập dữ liệu ban đầu.

- Do việc tìm ra số lượng mẫu chuỗi tuần tự của việc khai phá dữ liệu ban đầu là ít nên giảm số lượng tính toán thời gian phân tách vì vậy sẽ làm giảm thời gian cho việc tính toán cho thuật toán.

Do vậy, khi dự đoán của chúng tôi là chính xác thì công việc tính thời gian như trên sẽ là tối ưu vì ta chỉ việc tính thời gian dựa trên một số lượng mẫu nhất định và những mẫu đó có xác suất phân tách được nhiều mẫu con hơn.

Chương 4 - THỰC NGHIỆM

Trong khóa luận này, chúng tôi sử dụng Sequential Pattern Mining Framework của các tác giả Philippe Fournier-Viger [14]. Đây là công cụ mã nguồn mở được viết bằng java, công cụ đã cài đặt 51 thuật toán cho các mục sau:

sequential pattern mining,association rule mining,frequent itemset mining,

sequential rule mining,

clustering

Trong phần thực nghiệm này, chúng tôi tạo 2 bộ dữ liệu và lần lượt đưa vào thử nghiệm để so sánh giữa 2 phương pháp phân tách theo hành vi và phương pháp phân tách theo thời gian mà cụ thể là n ngày. Giao diện của

chương trình như Hình 4.1 sau:

Hình 4.1 Giao diện của chương trình

Trong việc so sánh giữa các phương pháp, chúng tôi giữ cố định một giá trị khoảng thời gian phân tách các ứng dụng trong cùng một phần tử (Element), trên giao diện Hình 4.1 là ô Slot time cut off Element với giá trị mặc định là 60s. Tức là ứng dụng thứ i và ứng dụng thứ i+1 được coi là sử dụng đồng thời nếu: startTime của ứng dụng thứ i+1 - stopTime của ứng dụng thứ i ≤ 60s. Nếu khoảng cách trên > 60s thì 2 ứng dụng thứ i và thứ i+1 là 2 phần tử riêng biệt

So sánh giữa các phương pháp phân tách là việc so sánh dựa trên kết quả khai phá dữ liệu của phương pháp khi cùng sử dụng giải thuật khai phá. Kết quả của giải pháp nào chỉ ra được nhiều mẫu chuỗi tuần tự, đặc biệt là các mẫu chuỗi tuần tự có số lượng phần tử ≥ 2 thì giải pháp đó là tốt hơn. Vì giải pháp chỉ ra được nhiều mẫu chuỗi tuần tự hơn chính là giải pháp giúp chúng ta phát hiện ra các thói quen sử dụng phần mềm tốt hơn.

Trong ô lựa chọn Choice mining type có loại khai phá dữ liệu sau:

- Mining to get SlotTime dùng để khai phá tập dữ liệu gốc ra các mẫu chuỗi tuần tự thỏa mãn điều kiện độ hỗ trợ tối thiểu minSup, sau đó từ các mẫu chuỗi tuần tự có số lượng phần tử lớn hơn hoặc bằng 2 ta sẽ tính ngược lại các khoảng thời gian tương ứng cho việc phân tách toàn bộ tập dữ liệu gốc thành tập dữ liệu con sao cho sinh ra được nhiều chuỗi con chứa mẫu chuỗi tuần tự nhất.

- Mining all primary sequences: khai phá toàn bộ dữ liệu gốc và đưa ra tập mẫu chuỗi tuần tự thỏa mãn điều kiện minSup

- MSS in N days (Mining Short Sequences in N Days): Khai phá dữ liệu cho tập dữ liệu mới được phân tách từ tập dữ liệu gốc ban đầy theo N ngày.

- Mining all short sequences: Khai phá tập dữ liệu mới được phân tách từ tập dữ liệu gốc theo khoảng cách thời gian tại ô slotTime cut off sequences trên

Hình 4.1.

Một phần của tài liệu Ứng dụng phân tích mẫu chuỗi tuần tự vào việc phát hiện thói quen sử dụng các ứng dụng trên thiết bị di động (Trang 26)

Tải bản đầy đủ (PDF)

(73 trang)