Từ bảng 𝑆̂ (hình 3.1) ta chiếu ngẫu nhiên lên hai cợt bất kì và sau đó băm (hash) các giá của nó trị trên từng hàng của hai cột được chiếu vào các thùng băm (bucket). Kiểm tra các thùng băm đó nếu có hai ch̃i con bất kì tḥc cùng mợt thùng băm thì ta cập nhật giá trị vào ơ tương ứng của ma trận vng 𝑆̂ × 𝑆̂. Q trình này được lặp lại i lần (i do người dùng định nghĩa) trên các cột chiếu khác nhau (hình 3.2). Sau đó chọn ơ có giá trị lớn nhất trên ma trận 𝑆̂ × 𝑆̂ , chỉ số mà ta nhận được dựa
26
vào hàng và cợt tương ứng với ơ này chính là chỉ số của motif ứng viên. Trong (hình 3.3) bên dưới đây với i = 2 thì ta có hai ứng viên motif là hai chuỗi con 1 và 58. Sau khi có được ứng viên motif, giải thuật sẽ dựa vào đó để hậu kiểm trên chuỗi thời
gian ban đầu để tìm ra motif bậc nhất thực sự. Nhận xét:
- Ta thấy chuỗi con ứng viên được chọn từ ma trận xung đột 𝑆̂ × 𝑆̂ chưa chắc là 1-
Motif vì giá trị chứa trong ma trận 𝑆̂ × 𝑆̂ phụ tḥc vào q trình chiếu ngẫu nhiên.
Do đó motif tìm được là motif xấp xỉ.
- Giải thuật cần m2 (với m là số chuỗi con) các số nguyên cho ma trận xung đột
𝑆̂ × 𝑆̂.
- Khi dữ liệu kích thước lớn m tăng nhanh thì khơng gian lưu trữ là rất lớn nên
không khả thi.
- Trong mỗi lần lặp, tại mỡi lần lặp chi phí để tổ chức cấu trúc dữ liệu bảng băm và cập nhật ma trận xung đột là ((f * m) + ((m/f)2/2)) với f là số khóa trung bình trong bảng băm. Do đó nếu i lớn chi phí này sẽ tăng đáng kể.
- Chi phí duyệt qua ma trận xung đợt để tìm motif ứng viên là (m2/2).
27
Hình 3.9 Minh họa việc chiếu ngẫu nhiên lên cột 2 và 4, cập nhật vào 𝑆̂ × 𝑆̂
3.4.3 Giải thuật Sequitur
Sequitur [11] là một giải thuật nén chuỗi sử dụng suy luận văn phạm phi ngữ cảnh (context-free grammar) từ mợt ch̃i các kí hiệu rời rạc. Sequitur được áp dụng
trong các lĩnh vực khác nhau: dùng để tìm các ch̃i DNA lặp đi lặp lại [10], trình tự các hàm được gọi lặp lại trong mợt chương trình và áp dụng vào chuỗi thời gian phân đoạn.
Sequitur tạo ra một văn phạm từ một chuỗi dựa trên các cụm từ lặp đi lặp lại trong ch̃i đó. Mỡi sự lặp lại tạo ra mợt quy tắc trong văn phạm và chuỗi con lặp đi lặp lại được thay thế bằng mợt kí hiệu khơng kết thúc (nonterminal symbol) làm ra một biểu diễn ngắn gọn hơn của chuỗi tổng thể ban đầu. Cách tiếp cận này ngắn gọn để hình thành và duy trì văn phạm, ngồi ra giải thuật cịn cung cấp một cấu trúc phân cấp cho các chuỗi.
Sequitur đọc chuỗi đầu vào và tái cơ cấu các quy tắc văn phạm để duy trì các tính chất bất biến sau đây:
- Khơng có cặp liền kề kí hiệu x́t hiện nhiều hơn mợt lần trong ngữ pháp. - Mọi quy luật (trừ quy luật bắt đầu) được sử dụng nhiều hơn mợt lần.
28
Bảng 3.2 Ví dụ về giải thuật Sequitur
Luật văn phạm Ý nghĩa
S1-> BB4A 12131213412
A->12 12
B->A13 1213
Dữ liệu chuỗi thời gian gốc được tiến hành chuẩn hóa nhằm đưa định dạng của dữ liệu về mợt chuẩn chung. Điều này làm cho q trình xử lý và trực quan hóa được dễ dàng. Chuẩn hóa dữ liệu được thực hiện là Zero-Mean vì với giải thuật tìm kiếm motif có phương pháp rời rạc hóa thì phải áp dụng chuẩn hóa này. Ch̃i dữ liệu thời gian ban đầu đã được đưa về một định dạng và sẵn sàng vào xử lý tìm kiếm motif. Tập hợp các chuỗi con sau khi được chuẩn hóa sẽ tiến hành thu giảm số chiều bằng phương pháp PAA và EPAA. Các ch̃i con tiếp tục được rời rạc hóa để chuyển đổi giá trị dữ liệu thành chuỗi ký tự đại diện. Phương pháp rời rạc hóa được áp dụng đó là SAX và ESAX. Tiến hành tìm kiếm motif dựa trên giải thuật Sequitur. Giải thuật Sequitur được mô tả bằng mã giả được trình bày như sau:
29
Bảng 3.3 Giải thuật Sequitur [5] trong tìm kiếm motif
Giải thuật Sequitur 1 2 3 4 5 6 7 8 9 10 11 12
Khi mỗi biểu tượng đầu vào mới được xem xét, thì thêm nó vào ch̃i S. Mỡi khi khoảng cách được tạo ra giữ hai ký tự
Nếu biểu đồ mới được lặp lại ở nơi khác và các lần lặp lại không trùng lắp, Nếu biểu đồ khác là một quy luật trùng lắp,
Thì thay thế biểu đồ mới bằng ký hiệu không phải là ký hiệu không kết thúc (nonterminal symbol) đứng đầu của quy luật, ngược lại,
Hình thành quy luật mới và thay thế cả hai đoạn biểu đồ bằng ký hiệu không phải là ký hiệu không kết thúc đứng đầu
ngược lại,
Chèn biểu đồ vào chỉ mục
Mỗi khi một biểu đồ được thay thế bằng một ký hiệu không phải là ký hiệu không kết thúc đứng đầu
Nếu một trong hai ký hiệu là một ký hiệu không phải là ký hiệu không kết thúc chỉ xuất hiện một lần ở nơi khác,
Loại bỏ quy luật đó, thay thế nợi dung của nó vào vị trí của ký hiệu khơng kết thúc khác.
Để việc trực quan hóa motif tìm kiếm trong giải thuật Sequitur dễ dàng thì sau mỡi lần tìm ra văn phạm nên ghi nhận lại đợ dài của văn phạm và vị trí bắt đầu của văn phạm đó.
3.4.4 Giải thuật Hashing
Dữ liệu chuỗi thời gian thô ban đầu được đưa vào chuẩn hóa bằng phương pháp chuẩn hóa trung bình Zero. Sau đó tiến hành xác định đợ dài của các chuỗi con và cắt chuỗi dữ liệu lớn ban đầu thành tập hợp chuỗi con với độ dài phù hợp. Tập chuỗi con tiếp tục được thu giảm số chiều bằng phương pháp gộp từng đoạn xấp xỉ. Thu giảm số chiều để giảm số lượng dữ liệu cần tính nhưng vẫn giữ nguyên các đặc trưng vốn có của ch̃i. Sau khi đã được xử lý sơ bộ tập hợp các chuỗi con thực
30
hiện rời rạc hóa dữ liệu. Phương pháp rời rạc hóa được áp dụng đó là thu gợp xấp xỉ ký tự. Dữ liệu chuỗi thời gian ban đầu đã trở thành nguồn dữ liệu đầu vào. Từ nguồn dữ liệu này tiến hành xây dựng giải thuật Hashing tìm kiếm motif. Giải thuật Hashing được mơ tả bằng mã giả được trình bày (bảng 3.2) với T: là những chuỗi dữ liệu đã rời rạc hóa, w: là kích thước cửa sổ trượt do người dùng định nghĩa, HashTable là cấu trúc bảng băm dùng để chứa các đặc trưng.
Bảng 3.4 Giải thuật Build HashTable [9] để xây dựng bảng băm
Input: T, w
Output: HashTable
0 foreach feature in T /*Duyệt qua từng đặc trưng trong T*/
1 found = false;
2 foreach key in HashTable /*Tìm trong tất cả các khóa của bảng băm*/
3 if( Match(feature, key)) /*Tìm thấy khóa khớp được với đặc trưng*/
4 found = true; /*Xác nhận đã tìm thấy*/ 5 trivial = false;
6 foreach index in HashTable[key].bucket
7 if(|index –feature.index| < w) /*Kiểm tra là khớp tầm thường*/
8 trivial = true; /*Xác định trường hợp khớp tầm thường*/
9 break;
10 if(trivial == false)
11 HashTable[key].bucket.Add(feature.index);
12 if (found = false)
13 HashTable[key].bucket.Add(feature.index);
Giải thuật tìm tất cả các thể hiện của motif từ những ứng viên motif và tiến hành tìm motif thực sự được trình bày qua mã giả sau đây:
31 Mã giả giải thuật Find Motif có:
T là những ch̃i dữ liệu đã rời rạc hóa.
w: kích thước cửa sổ trượt do người dùng định nghĩa.
Thresholdmax : ngưỡng khoảng cách tối đa do người dùng định nghĩa. Bảng 3.5 Giải thuật tìm kiếm motif chi tiết từ ứng viên motif [9]
Input: T, w, ThresholdMax
Output: L1, L2: Vị trí của mợt motif
0 Bsf = ∞;
1 foreach feature in T //Duyệt qua tất cả các đặc trưng 1 lần
2 is_ok = true;
3 foreach instance in instances
4 if (isTrivial (feature, instance) or MINDIST(feature, instance) >
ThresholdMax
5 is_ok = false;
6 break;
7 if (is_ok == true) //Đặc trưng đang xét thỏa điều kiện là thể hiện motif
8 motif_instances.Add(feature); //thêm đặc trưng vào tập các thể hiện 9 foreach feature in T
10 foreach instance in motif_instances
11 d = MINDIST(feature, instance);
12 if (isNonTrivial (feature, instance) and d <= Bsf)
32
3.5. Đề xuất mở rộng giải thuật Hashing
Giải thuật Sequitur cho phép tạo ra một văn phạm từ một chuỗi dựa trên các cụm từ lặp đi lặp lại trong ch̃i đó. Do đó chúng tơi áp dụng giải thuật Sequitur trên chuỗi thu được sau phép biến đổi ESAX để thu được các quy tắc văn phạm.
Ví dụ: ch̃i ESAX dữ liệu đầu vào S1 = "abacabacdab", sau khi áp dụng giải thuật
Sequitur thì thu được các quy tắc văn phạm như bảng sau:
Bảng 3.6. Ví dụ về giải thuật Sequitur
Luật văn phạm Chuỗi
S1-> BBdA abacabacdab
A->ab ab
B->Aac abac
Các văn phạm thu được từ giải thuật Sequitur chính là tất cả các motif cần tìm với các độ dài khác nhau. Tuy nhiên, các motif này là các motif trên chuỗi đã biến đổi ESAX nên chúng ta cần thực hiện bước hậu xử lý sau đây:
- Loại bỏ các motif tầm thường (trivial matches), sự trùng khớp tầm thường của
ch̃i con M là bất kì dãy nào chồng lên M.
- Sắp xếp các quy tắc văn phạm theo nhu cầu như: tần số xuất hiện, độ dài của
motif.
- Truy vết để tìm ra các motif trên ch̃i dữ liệu gốc ban đầu.
3.5.1 Ước lượng chiều dài 1-motif
Dựa vào bảng kết quả văn phạm thu được, kết hợp với minh họa motif tìm được chúng ta có thể xác định được vùng có mật đợ motif dày đặc nhất, đây chính là vùng chứa những motif bậc nhất và chúng ta sẽ sử dụng để ước lượng chiều dài motif bậc nhất. Quá trình này gồm 3 bước sau:
33
- Dựa vào hình minh họa motif (mỡi văn phạm tương ứng với mợt motif), chúng ta dễ dàng tìm ra vùng có mật đợ motif dày đặc nhất. Từ vùng này, chúng ta xác định được chiều dài n của các motif bậc nhất trên chuỗi dữ liệu gốc. Từ đó ta có thể
chuyển đổi chiều dài n này tương ứng thành chiều dài trên chuỗi dữ liệu đã được
biến đổi ESAX là w.
- Kết hợp với bảng luật văn phạm thu được, ta có thể thấy được những văn phạm có đợ dài xấp xỉ bằng w, đồng thời biết được tần suất xuất hiện của các văn phạm đó. - Sau bước (1) ta tìm được đợ dài n của motif bậc nhất. Ta dùng giá trị này làm tham số độ dài motif bậc nhất trên các giải thuật phát hiện motif khác, chẳng hạn như giải thuật Random Projection.
Để trực quan hóa motif tìm được bằng giải thuật Sequitur, ở bước tìm luật văn phạm (grammar rules) sau mỡi bước tìm ra văn phạm ta ghi nhận đợ dài của văn phạm và vị trí bắt đầu của văn phạm đó để phục vụ việc trực quan hóa các motif tìm được.
3.5.2 Phát hiện tính chu kì dựa vào motif
Chu kì xảy ra nhiều trong hiện tượng tự nhiên và hoạt đợng con người, ví dụ: lịch trình làm việc hàng ngày của nhân viên, mơ hình di chuyển của đợng vật hàng năm, chu kì vết đen mặt trời,…Việc phát hiện ra tính chu kì trong dữ liệu cung cấp cái nhìn sâu sắc hơn về dữ liệu, phát hiện các dị thường, ứng dụng dự báo trên dữ liệu ch̃i thời gian.
Năm 2014, nhóm tác giả Rasaq Otunba, Jessica Lin, Pavel Senin [15] đã đưa ra
cách tiếp cận cho việc phát hiện tính chu kì trên dữ liệu chuỗi thời gian dựa vào việc phát hiện ra motif, sau đó tìm motif định kì nhất.
34
Bảng 3.7 Giải thuật phát hiện chu kì [15] Algorithm 1. Motif-based Period Detection
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
INPUT: String S of length n over alphabet Σ. OUTPUT: The approximate period of S, T.
/* Find the rule/motif objects M = {m1, m2, . . . md} from Sequitur-based algorithm */
M = findMotif(S);
/* Compute periods and errors for each motif, return the one with the smallest error*/
m1 = periodicity(m1); p1 = m1.getPeriod(); r1 = m1.getError();
rMin = r1 // store the minimum error in rMin for each mi M do mi = periodicity(mi); pi = mi.getPeriod(); ri = mi.getError(); if (ri < rMin) approxP = pi; rMin = ri; end for return approxP;
Giải thuật 1 cho thấy mã giả của thuật tốn phát hiện chu kì dựa vào motif MBPD. Các đối tượng motif được trả về trên dòng 2 được lưu cùng với các vị trí xuất hiện trong dữ liệu chuỗi thời gian. Ở đây tác giả chỉ xem xét tính chu kì với mỡi đối tượng xuất hiện ít nhất 3 lần, tuy nhiên cũng dễ dàng để chỉnh sửa thuật tốn để phát hiện chu kì xảy ra 2 lần nếu muốn. Các dòng 3-7 và vịng lặp từ 8-14 tính tốn chu kì cho mỡi motif, sai số r được xác định bởi độ lệch chuẩn của các khoảng của các
lần xuất hiện và chu kì xấp xỉ.
Chu kì của mỡi motif được tính là trung bình của các khoảng (giữa vị trí bắt đầu của hai lần xuất hiện liên tiếp) của tất cả các lần xuất hiện của motif đó trong ch̃i thời gian. Chu kì xấp xỉ của chuỗi thời gian là chu kì tương ứng với sai số thấp nhất. Hàm tính chu kì được gọi từ dịng 4-9 của giải thuật 1 được thể hiện bởi giải thuật 2 sau đây:
35
Bảng 3.8 Giải thuật tính chu kì dựa vào motif [15]
Algorithm 2. Periodicity Algorithm
1 2 3 4 5 6 7 8 9 10
INPUT: Motif M with start positions A = {a1, a2, . . . ab} for all b occurrences OUTPUT: Motif M with the period and error set respectively
sum_Interval = 0, sqd = 0; for each ai A do
sum_Intervals = sum_Intervals + ai - ai-1; end for
M.period = sum_Intervals/(b-1); for each ai A do
sqd = sqd + ((ai - ai-1 - M.period) ^ 2); end for
M.error = (sqd/(b-1)) ^ 0.5; return M;
Mức độ hiệu quả của giải thuật MBDP phần lớn phụ thuộc vào sự hiệu quả của giải thuật phát hiện motif dựa vào giải thuật Hashing. Giải thuật phát hiện motif đề x́t phía trên có đợ phức tạp tuyến tính về thời gian và khơng gian bộ nhớ. Kết quả là độ phức tạp về thời gian của giải thuật MBDP là O(n*k) trên ch̃i thời gian có kích
thước n, với k là số lần xuất hiện trung bình của mỡi motif được trích x́t bởi Hashing. Đợ phức tạp về không gian bộ nhớ vẫn là O(n) bởi vì khơng gian bợ nhớ
36
CHƯƠNG 4 KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ
Hiện thực hai giải thuật Hashing đã mở rộng và giải thuật Sequitur trên một số bộ dữ liệu đầu vào. Qua kết quả thực nghiệm, luận văn đánh giá hiệu quả thời gian và đợ chính xác của cơng tác tìm kiếm motif trên cả hai giải thuật. Từ đó tìm ra những ưu khuyết điểm của những giải thuật mà luận văn áp dụng trong quá trình nghiên cứu và hiện thực.
Tất cả các kết quả đo các tập dữ liệu được thực hiện trên hệ điều hành Windows 11, vi xử lý Core(TM) i7-3740QM CPU @ 2.70GHz, Ram 12GB.
- OS Name Microsoft Windows 11 Pro
- Processor Intel (R) Core i7-3740QM CPU @2.70Ghz - RAM 12GB
Các kết quả thực nghiệm sẽ thực hiện trên 2 tập dữ liệu Freezer và HumanY. Luận văn thiết lập các thơng số sau trên chương trình thực nghiệm: alphabetSize= 6 cho SAX và ESAX, tỉ lệ thu giảm số chiều PAA là 10. Thay đổi chiều dài của chuỗi lần lượt 128, 256, 512.
37
4.1 Giải thuật Hashing
Các bước của giải thuật Hashing gồm các thành phần xử lý tuần tự trong hình 4.1.
Hình 4.1 Mơ hình hiện thực giải thuật Hashing [9] Các thơng số của mơ hình gồm:
- Đợ dài ch̃i thu giảm PAA Length trong phương pháp PAA - Số ký tự dùng để rời rạc hóa 𝛼 trong phương pháp SAX - Kích thước cửa sổ trượt w (số ký tự cho một chuỗi con)
- Ngưỡng khoảng cách tối đa do người dùng định nghĩa (ThreadholdMax) Xác định chiều dài chuỗi con và cắt chuỗi