CHƯƠNG 3 : CÁC CÔNG TRÌNH CÓ LIÊN QUAN
3.4. Phát hiện motif cho dữ liệu chuỗi thời gian
3.4.3. Giải thuật MKcải tiến
Một trong những phương pháp nhận diện motif chính xác được Mueen và các cộng sự đưa ra năm 2009 [14] được cải tiến từ phương pháp Brute-Force là giải thuật
tham chiếu để tăng tốc độ của giải thuật Brute-Force. Tuy nhiên, giải thuật MK này thực hiện được dựa trên định nghĩa khác về motif:
Motif của dữ liệu chuỗi thời gian là một cặp chuỗi con giống nhau nhất xuất hiện trong dữ liệu chuỗi thời gian ban đầu. [14]
Ý tưởng của giải thuật này có thể được mô tả tóm tắt như sau: Giả sử ta có một chuỗi con tham chiếu ref (có thể chọn là chuỗi con của chuỗi dữ liệu ban đầu), Di và
Dj là hai chuỗi con. Khi đó, ta có bất đẳng thức tam giác dis(Di,ref) – dis(Dj,ref) ≤ dis(Di, Dj). Do đó ta có thể xem dis(Di,ref) – dis(Dj,ref) như là chặn dưới của
dis(Di,Dj). Nếu chặn dưới này vẫn lớn hơn best-so-far thì rõ ràng dis(Di,Dj) > best-so- far, do đó ta sẽ không cần tính dis(Di,Dj). Ngược lại, khoảng cách dis(Di,Dj) sẽ được quan tâm.
Để giải quyết bài toán tìm motif-bậc-1 được trình bày trong phần đầu mục 3.4. tác giả Le Phu và Duong Tuan Anh đã cải tiến giải thuật MK nguyên bản của Mueen và Keogh thành giải thuật MK-cải tiến [15].
Dựa vào giải thuật Find-1-Motif-Brute-Force như Hình 3-13, nếu ta xem quá trình kiểm tra tính khớp không tầm thường giữa hai chuỗi con ở hai vị trí i và j ở dòng
7 là một đơn vị tính toán thì độ phức tạp của thuật toán là O(m2) với m là chiều dài chuỗi thời gian. Tuy nhiên trên thực tế chi phí tính toán để kiểm tra tính khớp không tầm thường giữa hai chuỗi con này chiếm một thời gian đáng kể. Lý do là ngoài việc kiểm tra được D(C [i : i+n-1], C [j: j+n-1]) có lớn hơn R hay không chúng ta phải quét qua tất cả các motif bắt đầu vị trí k với k i1, j1 đề kiểm tra D(C[i:i+n-1], C[k:k+n-1]) có lớn hơn khoảng cách R hay không. Có hai thông tin này chúng ta mới kết luận là C [i: i+n-1] và C [j: j+n-1] có khớp tầm thường với nhau hay không.
Một nhược điểm của giải thuật này là không tận dụng phương pháp tính khoảng cách đối xứng của Euclid, tức là D(A, B) =D(B, A). Như vậy độ phức tạp của
của hai chuỗi con tại hai vị trí i và j trong chuỗi thời gian là O(m) và điều này sẽ làm cho thời gian chạy của thuật toán nhận diện motif trở nên lâu hơn. Ngoài ra, do đặc trưng của giải thuật là kiểm tra khoảng cách giữa các motif có lớn hơn một khoảng R
cho trước hay không chứ không cần thiết phải tính cụ thể những khoảng cách này. Từ những nhược điểm của giải thuật như trên, chúng ta thực hiện một số cải tiến như sau:
Áp dụng tính chất đối xứng
Dựa vào thuật toán nêu trên, giải thuật yêu cầu O(m2) gọi hàm tính khoảng cách, tuy nhiên khi chúng ta áp dụng tính chất đối xứng của phương pháp tính khoảng cách của Euclid thì số lần tính khoảng cách giảm đi một nữa do khoảng cách D(A, B) =D(B, A). Do vậy thuật toán chỉ tính lưu m(m-1)/2 giá trị khoảng cách.
Áp dụng bất đẳng thức tam giác
Để kiểm tra hai chuỗi con Ca và Cb có khớp tầm thường hay không trong giải thuật Brute-Force chúng ta chỉ cần kiểm tra khoảng cách giữa D(Ca, Cb) có lơn hơn một khoảng cách R (R > 0) cho trước hay không chứ không cần thiết phải tính cụ thể giá trị khoảng cách này. Áp dụng tính chất này, bất đẳng thức tam giác được áp dụng để kiểm tra. Cụ thể như sau:
Cho một chuỗi con tham chiếu Q và tính khoảng cách từ Q đến tất cả các chuỗi con trong chuỗi thời gian Ti tức là khoảng cách D(Q, ti) trong đó ti là chuỗi con bất kỳ trong chuỗi thời gian Ti.
Ta nhận thấy rằng, với hai chuỗi con Ca và Cb. Ta có bất đẳng thức tam giác như sau:
D(Q, Ca) ≤ D(Q, Cb) + D(Ca, Cb) (3.5) Ta suy ra: D(Ca, Cb) ≥ D(Q, Ca) – D(Q, Cb) (3.6)
Dựa vào công thức (3.6) ta thấy rằng để kiểm tra D(Ca, Cb) ≥ R hay không ta chỉ kiểm tra D(Q, Ca) – D(Q, Cb). Nếu D(Q, Ca) – D(Q, Cb) ≥ R, ta suy ra D(Ca, Cb) ≥ R. vì D(Ca, Cb) ≥ D(Q, Ca) – D(Q, Cb).
Chọn motif tham chiếu Q:
Để bất đẳng thức tam giác kiểm tra chặt hơn, tức là ta phải chọn chuỗi con tham chiếu Q sao cho D(Q, Ca) – D(Q, Cb) đạt giá trị lớn nhất.
Hình 3-17 Khoảng cách chuỗi con tham chiếu Q nằm giữa Cavà Cb Dựa vào Hình 3-17 ta thấy rằng chuỗi con Q nằm giữa hai chuỗi con Cavà Cb. Giả sử D(Q, Ca) =1 và D(Q, Cb) =1. Ta suy ra D(Q, Ca) – D(Q, Cb) =0, nghĩa là
D(Ca, Cb) ≥ D(Q, Ca) – D(Q, Cb) = 0. Nhưng trên thực tế thì D(Ca, Cb) ≥ 2. Giả sử bán kính R cần kiểm tra là R=1 thì với cách chọn chuỗi con tham chiếu Q như trên thì ta không kết luận được D(Ca, Cb) > R hay không.
Để tối ưu quá trình kiểm tra dựa vào bất đẳng thức tam giác. Ta chọn chuỗi con tham chiếu Q nằm ngoài hai chuỗi con Cavà Cb như Hình 3-18. Lúc này ta có D(Q, Cb) =1 và D(Q, Ca) =3. Ta thấy D(Ca, Cb) ≥ D(Q, Ca) – D(Q, Cb) =2. Với R ta kết luận D(Ca, Cb) >R thay vì tính khoảng cách trực tiếp D(Ca, Cb) có lớn hơn R hay không.
Hình 3-18 Khoảng cách chuỗi con tham chiếu Q nằm ngoài Cavà Cb Trong tập dữ liệu chuỗi thời gian cần gom cụm, chúng tôi giả sử tất cả các giá trị của chuỗi thời gian đều lớn hơn hay bằng 0. Chúng tôi chọn chuỗi con tham chiếu
Q là chuỗi con 0. Tức là chuỗi con Q có chiều dài n và Qi=0 với mọii1,n.
Nếu trong tập dữ liệu chuỗi thời gian tồn tại giá trị nhỏ hơn 0, ta sẽ dịch chuyển trục hoành của tọa độ để bảo đảm tất cả các giá trị trong tập dữ liệu chuỗi thời gian đều lớn hơn hay bằng 0 như Hình 3-19bên dưới.
Áp dụng kỹ thuật kiểm tra kết thúc sớm khi tính hàm khoảng cách để tìm kiếm motif dữ liệu chuỗi thời gian
Trong trường hợp bất đẳng thức tam giác không kết luận được D(Ca, Cb) ≥ R
hay không vì D(Q, Ca) – D(Q, Cb) <R. Ta phải dùng hàm tính khoảng cách Euclid để tính toán D(Ca, Cb) để so sánh kết quả với R. Trong trường hợp này ta áp dụng kỹ thuật kiểm tra kết thúc sớm để kiểm tra D(Ca, Cb) ≥ R hay không .
Hình 3-19 Dịch chuyển trục tọa độ dữ liệu chuỗi thời gian.
Cải thiện thuật toán kiểm tra khớp không tầm thường bằng qui hoạch động
Độ phức tạp của thuật toán Bruce-Force ở trên là O(m2), tuy nhiên trong quá trình kiểm tra tính khớp không tầm thường hai chuỗi con C [i: i+n-1] và C [j: j+n-1] ở dòng 7 của thuật toán Bruce-Force chúng ta phải tính được D(C [i: i+n-1], C [j: j+n-1]) và D(C [i: i+n-1], C k: k+n-1]) với k i1, j1. Bằng cách tính này chúng ta sẽ mất nhiều chi phí tính toán, độ phức tạp cho quá trình tính toán này là n với n là số chiều chuỗi thời gian cho nên độ phức tạp của giải thuật Bruce-Force là O(n3). Do vậy chúng ta áp dụng giải thuật cải tiến để kiểm tra tính khớp không tầm thường giữa hai chuỗi con C [i: i+n- 1] và C [j: j+n-1] như sau:
Để kiểm tra tính khớp không tầm thường giữa hai chuỗi con C [i: i+n-1] và C [j: j+n-1] ta dựa vào tính khớp không tầm thường giữa C [i: i+n-1] và C [k: k+n-1] trước đó với
1, 1
i j
k và cách làm này thể hiện tính chất qui hoạch động. Tại bước k trước đó
ta đã tính D(C [i: i+n-1], C [k: k+n-1]) > R hay không. Ta sử dụng một cờ nhớ ban đầu Flag = false. Nếu tồn tại giá trị k làm cho D(C [i: i+n-1], C [k: k+n-1]) >R ta cập nhật cờ nhớ Flag = true. Như vậy để kiểm tra tính khớp không tầm thường giữa hai chuỗi con C [i:
không bằng kỹ thuật kết thúc sớm. Nếu D(C [i: i+n-1], C [j: j+n-1]) > R, ta cập nhật cờ nhớ Flag=true để phục vụ cho việc kiểm tra tính khớp không tầm thường của hai chuỗi con C [i: i+n-1] và C [l: l+n-1] với l>j và kết luận C [i: i+n-1] và C [j: j+n-1] không khớp với nhau. Ngược lại nếu D(C [i: i+n-1], C [j: j+n-1]) ≤ R, ta kiểm tra cờ Flag có giá trị true hay false:
Nếu Flag=true: Tồn tại một giá trị k nằm giữa i và j thỏa D(C [i: i+n-1], C [k: k+n-1]) >R. Theo hệ đẳng thức (3.5) ta kết luận hai chuỗi con C [i: i+n-1] và C [j: j+n-1] là khớp không tầm thường với nhau.
Nếu Flag=false: Không tồn tại một giá trị k nằm giữa i và j thỏa D(C [i: i+n-1], C [k: k+n-1]) >R. Theo hệ đẳng thức (3.5) ta kết luận hai chuỗi con C [i: i+n-1] và C [j: j+n-1] khớp tầm thường với nhau.
Như vậy, với cách cải tiến bằng phương pháp quy hoạch động như trên, độ phức tạp của thuật toán Bruce-Force vẫn là O(m2).
Ghi chú: Mặc dù giải thuật Brute-Force cải tiến thể hiện tinh thần qui hoạch động nhưng giải thuật không sử dụng mảng để lưu trữ mà chỉ tốn thêm một cờ nhớ Flag.
Dựa vào giải thuật Hình 3-20, tại dòng 3 ta tính khoảng cách giữa tất cả các chuỗi con trong chuỗi thời gian T với chuỗi con tham chiếu 0. Tại dòng 9 ta sử dụng bất đẳng thức tam giác để kiểm tra khoảng cách giữa hai chuỗi con bắt đầu từ hai vị trí i và j dựa vào kết quả tính toán khoảng cách tham chiếu được tính ở dòng 3. Dòng 12 dùng để tính khoảng cách giữa hai chuỗi con bắt đầu từ hai vị trí i và j để kiểm tra khoảng cách giữa chúng có lớn hơn R hay không sử dụng kỹ thuật kiểm tra kết thúc sớm và giá trị trả về là một biến logic. Nếu kết quả trả về là true thì khoảng cách giữa hai chuỗi con trên lớn hơn hoặc bằng R. Ngược lại, khoảng cách giữa chúng nhỏ hơn hay bằng R. Ở dòng 8 ta cho j bắt đầu từ i+1 để tận dụng tính chất tính khoảng cách đối xứng Euclid giữa hai chuỗi con bắt đầu từ hai vị trí i và j.
Algorithm Find_1_Motif_Brute_Force(TimeSeries T, int n, double R) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 best_motif_count_so_far = 0; best_tif_localtion_so_far = 0; listRefZeroTSeries = CreatListDistanceWithZeroTimeSeries(T, n); subStringCount = T.TSeries.Count - n + 1;
int[] listNonTrivialMatch = new int[subStringCount]; for i = 0 to NumberOfMotif-1 do
blFlagExistLaggerR = false; for i+1 to NumberOfMotif do
if D(listRefZeroTSeries[i],listRefZeroTSeries[j]) > R then blFlagExistLaggerR = true;
continue; end if
if CheckDistance2MotifWithR(T, n, i, j, R) == true then blFlagExistLaggerR = true;
continue; end if
if blFlagExistLaggerR == true then
listNonTrivialMatch[i] = listNonTrivialMatch[i] + 1; listNonTrivialMatch[j] = listNonTrivialMatch[j] + 1; end if end for end for for i = 0 to listNonTrivialMatch.Length do
if listNonTrivialMatch[i] > best_motif_count_so_far then best_motif_count_so_far = listNonTrivialMatch[i]; best_motif_localtion_so_far = i;
end if end for
motifMatch = MakeMotif(T, best_motif_localtion_so_far, n)