- Nghiên cứu việc áp dụng mảng hậu tố nâng cao để tìm tất cả các xu hướng thường xuyên và motif trong dữ liệu chuỗi thời gian.. Cây hậu tố, giải thuật được nghiên cứu trong rất nhiều đề
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
ĐỖ DUY QUỐC
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 60.48.01.01
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM
Cán bộ hướng dẫn khoa học : PGS TS Dương Tuấn Anh
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
(Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ)
1 PGS.TS Quản Thành Thơ
2 TS Nguyễn Đức Dũng
3 TS Võ Thị Ngọc Châu
4 PGS.TS Đỗ Phúc
5 PGS TS Lê Trung Quân
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)
CH Ủ TỊCH HỘI ĐỒNG TRƯỞNG KHOA KH&KTMT
Trang 3TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập – Tự do – Hạnh phúc
Ngày, tháng, năm sinh: 12/04/1991 Nơi sinh: Nam Định Chuyên ngành: Khoa Học Máy Tính Mãsố: 60.48.01.01
I TÊN ĐỀ TÀI: PHÁT HIỆN TẤT CẢ CÁC XU HƯỚNG THƯỜNG XUYÊN
TRONG DỮ LIỆU CHUỖI THỜI GIAN
II NHI ỆM VỤ VÀ NỘI DUNG
- Nghiên cứu dữ liệu chuỗi thời gian
- Nghiên cứu về cách mã hóa xu hướng của dữ liệu thành ký tự
- Nghiên cứu về cây hậu tố, mảng hậu tố và các vấn đề liên quan
- Nghiên cứu việc áp dụng mảng hậu tố nâng cao để tìm tất cả các xu hướng thường xuyên và motif trong dữ liệu chuỗi thời gian
- So sánh kết quả của phương pháp nêu trên với kết quả của cây hậu tố và
giải thuật brute force
III NGÀY GIAO NHI ỆM VỤ: 17/08/2015
IV NGÀY HOÀN THÀNH NHI ỆM VỤ: 05/12/2016
V CÁN B Ộ HƯỚNG DẪN: PGS TS Dương Tuấn Anh
Trang 4LỜI CẢM ƠN
Trước hết, tôi xin đặc biệt gửi lời cảm ơn chân thành và sâu sắc đến PGS.TS Dương Tuấn Anh, người đã trực tiếp hướng dẫn tôi trong quá trình làm luận văn này Thầy không chỉ hướng dẫn chu đáo, tận tình mà còn cung cấp cho tôi những kiến thức, những tài liệu hay và những lời khuyên quý giá trong suốt quá trình tôi học tập cũng như quá trình tìm hiểu và làm đề tài luận văn này Đây chính là một trong những nhân tố không thể thiếu để tạo động lực cho tôi hoàn thành đề tài này
Tôi cũng xin gửi lời cảm ơn đến gia đình, bạn bè, những bạn đồng nghiệp, những bạn học viên các khóa cao học đã chia sẻ kiến thức cho tôi, những người luôn sát cánh, động viên và tạo mọi điều kiện tốt nhất để tôi có thể học tập và hoàn tất được luận văn tốt nghiệp này
Tôi chân thành biết ơn sự tận tình dạy dỗ và sự giúp đỡ của tất cả quý thầy cô trong khoa Khoa học và Kỹ thuật Máy tính trường Đại học Bách khoa TP HCM
Cuối cùng tôi đã cố gắng hoàn thành tốt nhất có thể cho luận văn này, tuy nhiên khó tránh khỏi thiếu sót do tầm nhìn của bản thân còn hạn hẹp, rất mong nhận được sự góp ý của quý thầy cô và các bạn
Trang 5TÓM TẮT LUẬN VĂN
Trong những thập niên gần đây các giải thuật tìm kiếm motif và các xu hướng thường xuyên trong dữ liệu chuỗi thời gian không ngừng phát triển và được cải thiện thường xuyên Trong đó có nhiều phương pháp giúp tối ưu các giải thuật cũng như cho khả năng tìm kiếm tốt hơn Cây hậu tố, giải thuật được nghiên cứu trong rất nhiều đề tài và được áp dụng vào các mô hình tìm kiếm motif và xu hướng thường xuyên thực tiễn của dữ liệu chuỗi thời gian nhờ vào khả năng xử lý tuyến tính và phát hiện được tất cả các mẫu xu hướng hoặc motif mà không cần phải xác định chiều dài chuỗi ban đầu Tuy nhiên, với những những bộ dữ liệu có tính xu hướng tăng giảm không đáng kể trong thời gian ngắn thì chất lượng tìm kiếm các xu hướng trong thời gian dài kém và đối với những bộ dữ liệu lớn, cây hậu tố tốn rất nhiều bộ nhớ để lưu trữ đồng thời thời gian để sử lý việc đệ qui tìm kiếm các nút trong cây rất chậm
Trong luận văn này, chúng tôi xây dựng và hiện thực mảng hậu tố nâng cao để tìm tất cả các xu hướng thường xuyên cũng như tất cả các motif trong dữ liệu chuỗi thời gian
Ý tưởng chính là áp dụng phương pháp xấp xỉ tuyến tính từng đoạn nhằm làm nhẵn dữ liệu đầu vào sau đó mã hóa dữ liệu thành chuỗi ký tự bằng phương pháp tính độ lệch góc giữa hai điểm liên tiếp để tìm các mẫu xu hướng trong khoảng thời gian dài Bên cạnh đó chúng tôi còn áp dụng phương pháp xấp xỉ gộp từng đoạn để thu giảm số chiều tăng tốc độ xử lý việc tìm kiếm tất cả các motif trong dữ liệu chuỗi thời gian, việc làm này làm tăng tốc đáng
kể thời gian xây dựng và tìm kiếm các motif của mảng hậu tố nâng cao
Trong quá trình thực nghiệm của việc xây dựng và tìm kiếm tất cả các mẫu xu hướng thường xuyên và motif trong dữ liệu chuỗi thời gian bằng mảng hậu tố nâng cao, giải thuật này đã cho thấy khả năng xử lý tốt hơn so với cây hậu tố cũng như các giải thuật tìm kiếm thông thường (brute force, phương pháp chiếu ngẫu nhiên)
Các từ khóa: Mảng hậu tố, mảng hậu tố nâng cao, cây hậu tố, maximal repeat
Trang 6ABSTRACT
In recent decades, the motif search and the frequent trend search in time series data have been continuously developed and improved Among them, there are many methods to optimize the algorithms for better search Suffix tree algorithm is researched
in a variety of topics and it is applied to the search of frequent trends and motifs in time series, because it has linear complexity and it can detect all frequent trends or motifs without having to determine the length of the original string However, there are some data sets, which have negligible uptrend or negligible downtrend in the short term, so the suffix tree can not find the long frequent trends in the large data set Besides suffix tree was a lot of memory for storing data and the processing time to recursively search the nodes in the tree are very slowly
In this work, we study to implement and develop enhanced suffix array to find all the frequent trend, as well as all the motifs of time series data The main idea is to apply piecewise linear approximation method to smooth the input data, then we encode the data into strings by the method for calculating the deviation angle between two points to
represent the frequent trends in the long time Besides, we also applied the symbolic aggregate approximation – SAX method for dimension reduction of data set, that helps improve the processing time, and significantly accelerates processing times of the suffix array
Experimental results on several real datasets, the building of enhanced suffix array and the frequent trend searching or motif searching with enhanced suffix array are faster than suffix tree and another searching (brute force, probabilistic discovery)
Keywords: suffix array, enhanced suffix array, suffix tree, maximal repeat
Trang 7LỜI CAM ĐOAN
Tôi xin cam đoan rằng ngoại trừ các kết quả tham khảo từ các công trình khác như
đã ghi trong mục tham khảo của luận văn, các công việc trình bày trong luận văn này là do chính chúng tôi thực hiện và chưa có phần nội dung nào của luận văn này được nộp để lấy một bằng cấp ở trường đại học nào khác
Hồ Chí Minh, ngày … tháng … năm……
Ký tên
Trang 8MỤC LỤC
LỜI CẢM ƠN i
TÓM TẮT LUẬN VĂN ii
ABSTRACT iii
MỤC LỤC v
DANH MỤC HÌNH ẢNH viii
DANH MỤC BẢNG xiii
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 GIỚI THIỆU ĐỀ TÀI 1
1.2 MỤC TIÊU VÀ GIỚI HẠN ĐỀ TÀI 3
1.3 NHỮNG KẾT QUẢ ĐẠT ĐƯỢC 3
1.4 CẤU TRÚC CỦA LUẬN VĂN 4
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 6
2.1 DỮ LIỆU CHUỖI THỜI GIAN 6
2.2 CÂY HẬU TỐ 6
2.3 MẢNG HẬU TỐ 10
2.4 MẢNG TIỀN TỐ CHUNG DÀI NHẤT 12
2.5 XÂY DỰNG MẢNG HẬU TỐ 13
2.6 MẢNG HẬU TỐ NÂNG CAO 14
2.7 XÂY DỰNG CÂY HẬU TỐ 17
2.8 MÃ HÓA DỮ LIỆU THÀNH XU HƯỚNG 22
2.9 XẤP XỈ DỮ LIỆU CHUỖI THỜI GIAN BẰNG PHƯƠNG PHÁP GỘP TỪNG ĐOẠN (Piecewise Aggregate Approximation - PAA) 22
2.10 RỜI RẠC HÓA DỮ LIỆU CHUỖI THỜI GIAN BẰNG PHƯƠNG PHẤP XẤP XỈ GỘP KÝ HIỆU HÓA (Symbolic Aggregate approximation - SAX) 24
2.11 PHƯƠNG PHÁP XẤP XI TUYẾN TÍNH TỪNG ĐOẠN (PLA) 26
CHƯƠNG 3 NHỮNG CÔNG TRÌNH LIÊN QUAN 28
3.1 PHÁT HIỆN TẤT CẢ CÁC XU HƯỚNG THƯỜNG XUYÊN TRONG DỮ LIỆU CHUỖI THỜI GIAN 28
Trang 93.1.1 Định nghĩa 28
3.1.2 Mã hóa dữ liệu xu hướng 30
3.1.3 Xác định các xu hướng thường xuyên 31
3.2 PHÁT HIỆN MOTIF TRÊN DỮ LIỆU CHUỖI THỜI GIAN DỰA VÀO GIẢI THUẬT BRUTE FORCE 32
3.3 PHÁT HIỆN MOTIF TRÊN DỮ LIỆU CHUỖI THỜI GIAN DỰA VÀO GIẢI THUẬT CHIẾU NGẪU NHIÊN 34
3.3.1 Định nghĩa 34
3.3.2 Rời rạc hóa dữ liệu chuỗi thời gian 35
3.3.3 Thuật toán chiếu ngẫu nhiên 36
3.4 TRUY VẤN HÌNH DẠNG DỮ LIỆU CỦA CHUỖI THỜI GIAN 38
3.4.1 Giới thiệu truy vấn hình dạng 38
3.4.2 Cú pháp 39
CHƯƠNG 4 PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ 42
4.1 ÁP DỤNG PHƯƠNG PHÁP XẤP XỈ TUYẾN TÍNH TỪNG ĐOẠN 42
4.1.1 Mô hình tìm tất cả các xu hướng thường xuyên sử dụng mảng hậu tố nâng cao và phương pháp xấp xỉ tuyến tính từng đoạn 43
4.1.2 Giải thuật chi tiết: 45
4.2 ÁP DỤNG PHƯƠNG PHÁP XẤP XỈ GỘP TỪNG ĐOẠN ĐỂ PHÁT HIỆN MOTIF 46
4.2.1 Mô hình tìm tất cả các xu hướng thường xuyên sử dụng mảng hậu tố nâng cao và phương pháp xấp xỉ tuyến tính từng đoạn 47
4.2.2 Giải thuật chi tiết: 49
CHƯƠNG 5 HIỆN THỰC VÀ THỬ NGHIỆM 51
5.1 MÔI TRƯỜNG PHÁT TRIỂN 51
5.2 KẾT QUẢ THỰC NGHIỆM CỦA CÁC GIẢI THUẬT 51
Trang 105.2.1 Nhận diện xu hướng thường xuyên bằng mảng hậu tố nâng cao hoặc cây hậu tố 52
5.2.2 Nhận diện motif bằng mảng hậu tố nâng cao 73
5.2.3 Nhận xét chung về phát hiện tất cả các xu hướng thường xuyên của dữ liệu thời gian 96 CHƯƠNG 6 KẾT LUẬN 97
6.1 ĐÁNH GIÁ KẾT QUẢ 97
6.2 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 98
PHỤ LỤC A BẢNG ĐỐI CHIẾU THUẬT NGỮ ANH – VIỆT 1
Trang 11DANH MỤC HÌNH ẢNH
Hình 1-1 Dữ liệu về giá vàng từ năm 2009 đến 2013 2
Hình 1-2 Xu hướng thường xuyên (repeateing trend) cuả chuỗi thời gian 2
Hình 2-1 Trie hậu tố 7
Hình 2-2 Không thể xây dựng được Trie với nút lá có nhãn AB 8
Hình 2-3 Thêm ký tự $ ở cuối mỗi chuỗi 9
Hình 2-4 Trie hậu tố 𝑻 = 𝑩𝑨𝑵𝑨𝑵𝑨$ 9
Hình 2-5 Cây hậu tố cho chuỗi xabxa$ 10
Hình 2-6 Mảng hậu tố theo thứ tự từ điển 11
Hình 2-7 Mảng hậu tố nâng cao của chuỗi S = acaaacatat$ 15
Hình 2-8 1-interval 16
Hình 2-9 Thêm chuỗi xabxa 17
Bước 2: Thêm chuỗi abxa (hình 2-10) 17
Hình 2-11 Thêm chuỗi bxa 18
Hình 2-12 Thêm chuỗi ax 18
Hình 2-13 Liên kết hậu tố của v tới nút gốc 19
Hình 2-14 Liên kết hậu tố của v tới nút trong 19
Hình 2-15 Cây hậu tố đầy đủ của chuỗi S 20
Hình 2-16 Bước chèn cho trường hợp 1 21
Hình 2-17 S = axbxacxfs 21
Hình 2-18 S = xbxacxfs 22
Hình 2-19 Dữ liệu chuỗi thời gian sau khi xấp xỉ từng đoạn 23
Trang 12Hình 2-20 Một chuỗi thời gian được biến đổi PAA rồi mã hóa thành các ký hiệu
SAX 25
Hình 2-21 Dữ liệu ECG (điện tâm đồ) 26
Hình 2-22 Dữ liệu ECG sau khi làm nhẵn 27
Hình 3-1 Những xu hướng giống nhau 30
Hình 3-2 Góc giữa 2 điểm dữ liệu 31
Hình 3-3 Cây hậu tố 32
Hình 3-4 Motif trong dữ liệu chuỗi thời gian 34
Hình 3-5 Trùng khớp tầm thường của chuỗi con C 35
Hình 3-6 Dữ liệu sau khi xử lý qua phương pháp PPA và SAX 35
Hình 3-7 Mã hóa dữ liệu chuỗi thời gian 36
Hình 3-8 Kết quả ma trận đụng độ khi chon cột {1, 2} làm mặt nạ 37
Hình 3-9 Kết quả ma trận đụng độ khi chọn cột {2, 4} làm mặt nạ 37
Hình 3-10 Dữ liệu chuỗi thời gian 38
Hình 4-1 Dữ liệu sau khi làm nhẵn 43
Hình 4-2 Mô hình tìm kiếm tất cả các xu hướng thuường xuyên trong dữ liệu chuỗi thời gian 44
Hình 4-3 Xấp xỉ bằng PAA 46
Hình 4-4 Rời rạc hóa dữ liệu bằng SAX 47
Hình 4-5 Sơ đồ của quá trình tìm kiếm tất cả các motif trên dữ liệu chuỗi thời gian 48
Hình 5-1 Dữ liệu ECG (điện tâm đồ) với kích thước 2500 điểm 53
Hình 5-2 Dữ liệu ECG sau khi làm nhẵn 54
Trang 13Hình 5-3 Sau khi thực hiện mảng hậu tố nâng cao 55
Hình 5-4 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PLA 55
Hình 5-5 Dữ liệu ECG với kích thước 10000 điểm 57
Hình 5-6 Dữ liệu ECG sau khi làm nhẵn 57
Hình 5-7 Sau khi thực hiện mảng hậu tố nâng cao 58
Hình 5-8 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PLA 58
Hình 5-9 Dữ liệu Memory với kích thước 6873 điểm 60
Hình 5-10 Dữ liệu Memory sau khi làm nhẵn 60
Hình 5-11 Sau khi thực hiện mảng hậu tố nâng cao 61
Hình 5-12 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PLA 61
Hình 5-13 Dữ liệu power_data với kích thước 7926 điểm 63
Hình 5-14 Dữ liệu power_data sau khi làm nhẵn 64
Hình 5-15 Sau khi thực hiện mảng hậu tố nâng cao 64
Hình 5-16 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PLA 65
Hình 5-17 Dữ liệu koski_ecg (Điện tâm đồ) với kích thước 9125 điểm 66
Hình 5-18 Dữ liệu koski_ecg sau khi làm nhẵn 67
Hình 5-19 Sau khi thực hiện mảng hậu tố nâng cao 67
Hình 5-20 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PLA 68
Hình 5-21 Dữ liệu eeg (điện não đồ) với kích thước 2477 điểm 69
Hình 5-22 Dữ liệu eeg sau khi làm nhẵn 70
Hình 5-23 Sau khi thực hiện mảng hậu tố 70
Hình 5-24 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PLA 71
Hình 5-25 Dữ liệu ECG (điện tâm đồ) với kích thước 2500 điểm 74
Trang 14Hình 5-26 Dữ liệu ECG sau khi làm xấp xỉ gộp từng đoạn 75
Hình 5-27 Sau khi thực hiện mảng hậu tố nâng cao 75
Hình 5-28 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PAA 75
Hình 5-29 Sau khi thực hiện với phương pháp brute force 76
Hình 5-30 Dữ liệu ECG (điện tâm đồ) với kích thước 10000 điểm 77
Hình 5-31 Dữ liệu ECG sau khi xấp xỉ gộp từng đoạn 78
Hình 5-32 Sau khi thực hiện mảng hậu tố nâng cao 78
Hình 5-33 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PAA 79
Hình 5-34 Sau khi thực hiện với phương pháp brute force 79
Hình 5-35 Dữ liệu Memory với kích thước 6873 điểm 81
Hình 5-36 Dữ liệu Memory sau khi xấp xỉ gộp từng đoạn 81
Hình 5-37 Sau khi thực hiện mảng hậu tố nâng cao 82
Hình 5-38 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PAA 82
Hình 5-39 Sau khi thực hiện với phương pháp brute force 83
Hình 5-40 Dữ liệu power_data với kích thước 7926 điểm 84
Hình 5-41 Dữ liệu power_data sau khi xấp xỉ gộp từng đoạn 85
Hình 5-42 Sau khi thực hiện mảng hậu tố nâng cao 85
Hình 5-43 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PAA 86
Hình 5-44 Sau khi thực hiện với phương pháp brute force 86
Hình 5-45 Dữ liệu koski_ecg với kích thước 9125 điểm 88
Hình 5-46 Dữ liệu koski_ecg sau khi xấp xỉ gộp từng đoạn 88
Hình 5-47 Sau khi thực hiện mảng hậu tố nâng cao 89
Hình 5-48 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PAA 89
Trang 15Hình 5-49 Sau khi thực hiện với phương pháp brute force 90
Hình 5-50 Dữ liệu eeg với kích thước 2477 điểm 92
Hình 5-51 Dữ liệu eeg sau khi xấp xỉ gộp từng đoạn 92
Hình 5-52 Sau khi thực hiện mảng hậu tố nâng cao 93
Hình 5-53 Sau khi thực hiện mảng hậu tố nâng cao với phương pháp PAA 93
Hình 5-54 Sau khi thực hiện với phương pháp brute force 94
Trang 16DANH MỤC BẢNG
Bảng 3-1 Bảng ánh xạ dữ liệu từ giá trị thành ký tự 39
Bảng 5-1 Tóm tắt các thông số đầu vào cho các bộ dữ liệu 53
Bảng 5-2 Các thông số của bộ dữ liệu ECG 2500 điểm 54
Bảng 5-3 Kết quả các mẫu xu hướng tìm được và thời gian chạy bộ dữ liệu ECG (2500 điểm) 55
Bảng 5-4 Các thông số của bộ dữ liệu ECG 10000 điểm 57
Bảng 5-5 Kết quả mẫu xu hướng tìm được và thời gian chạy bộ dữ liệu ECG (10000 điểm) 59
Bảng 5-6 Các thông số của bộ dữ liệu Memory 6873 điểm 60
Bảng 5-7 Kết quả mẫu xu hướng tìm được và thời gian chạy bộ dữ liệu Memory (6873 điểm) 62
Bảng 5-8 Các thông số của bộ dữ liệu power_data 63
Bảng 5-9 Kết quả mẫu xu hướng tìm được và thời gian chạy bộ dữ liệu power_data (6873 điểm) 65
Bảng 5-10 Các thông số của bộ dữ liệu koski_ecg 66
Bảng 5-11 Kết quả mẫu xu hướng tìm được và thời gian chạy bộ dữ liệu koski_ecg (9125 điểm) 68
Bảng 5-12 Các thông số của bộ dữ liệu eeg 70
Bảng 5-13 Kết quả mẫu xu hướng tìm được và thời gian chạy bộ dữ liệu eeg (2477 điểm) 71
Bảng 5-14 Tóm tắt kết quả tìm kiếm tất cả các xu hướng thường xuyên 72
Bảng 5-15 Tóm tắt các thông số đầu vào cho các bộ dữ liệu 73
Bảng 5-16 Các thông số của bộ dữ liệu ECG 74
Trang 17Bảng 5-17 Kết quả motif tìm được và thời gian chạy bộ dữ liệu ECG (2500 điểm) 76
Bảng 5-18 Các thông số của bộ dữ liệu ECG 10000 điểm 77
Bảng 5-19 Kết quả motif tìm được và thời gian chạy bộ dữ liệu ECG (10000 điểm) 79
Bảng 5-20 Các thông số của bộ dữ liệu Memory 6873 điểm 81
Bảng 5-21 Kết quả motif tìm được và thời gian chạy bộ dữ liệu Memory (6873 điểm) 83
Bảng 5-22 Các thông số của bộ dữ liệu power_data 84
Bảng 5-23 Kết quả motif tìm được và thời gian chạy bộ dữ liệu power_data (7926 điểm) 86
Bảng 5-24 Các thông số của bộ dữ liệu Memory 6873 điểm 88
Bảng 5-25 Kết quả motif tìm được và thời gian chạy bộ dữ liệu koski_ecg (9125 điểm) 90
Bảng 5-26 Các thông số của bộ dữ liệu eeg 2477 điểm 92
Bảng 5-27 Kết quả motif tìm được và thời gian chạy bộ dữ liệu eeg (2477 điểm) 94
Bảng 5-28 Tóm tắt kết quả tìm kiếm tất cả motif 95
Trang 18CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
Phần đầu của chương giới thiệu sơ lược về đề tài sẽ thực hiện những gì, tại sao lại thực hiện và thực hiện như thế nào Một số khái niệm cơ bản được giới thiệu sơ lược trong chương này như: Dữ liệu chuỗi thời gian, xu hướng thường xuyên trong dữ liệu chuỗi thời gian
Phần thứ hai giới thiệu sơ lược về mục tiêu và phạm vi nghiên cứu
Phần cuối của chương sẽ trình bày tổng quan về cấu trúc tổng thể của toàn bộ luận văn
1.1 GIỚI THIỆU ĐỀ TÀI
Trong thời đại bùng nổ thông tin hiện nay, rất nhiều lĩnh vực kinh tế, xã hội như giáo dục, y tế, thương mại… đều sử dụng công nghệ thông tin nhằm đáp ứng việc khai thác
và quản lý các thông tin, dữ liệu một cách hiệu quả Việc dự báo và đưa ra các quyết định
từ một khối dữ liệu đã được lưu trữ ngày càng được quan tâm và tập trung nghiên cứu, từ
đó các ứng dụng công nghệ thông tin hỗ trợ việc dự báo và đưa ra quyết định trong thời gian cho phép đã ra đời và đang ngày càng phát triển không ngừng nhằm tăng độ chính xác
và tốc độ xử lý Điển hình trong các ứng dụng là những ứng dụng trong khai phá dữ liệu chuỗi thời gian (Time series Data mining) Chuỗi thời gian là một dãy số của các số thực,
biểu diễn các giá trị của một đại lượng nào đó được ghi nhận theo tuần tự thời gian Ví dụ:
số lượng sản phẩm bán ra của một công ty hằng năm, tỉ lệ bệnh nhân mắc bệnh HIV trong
những thập niên gần đây, giá vàng hăng năm (hình 1-1), lượng mưa hay hạn hán hằng năm
Trang 19Hình 1-1 Dữ liệu về giá vàng từ năm 2009 đến 2013
Trong những năm gần đây, có rất nhiều công trình nghiên cứu về việc phát hiện
ra xu hướng thường xuyên (frequent trend), tức là một đoạn trong một chuỗi thời gian xuất hiện lặp đi lặp lại (hình 1-2) Việc phát hiện ra xu hướng thường xuyên như vậy
có rất nhiều ứng dụng trong thực tiễn như dự đoán tăng giảm giá vàng hay giá cổ phiếu
Ví dụ: trong trường hợp dự báo lượng mưa quan sát được trong hằng năm ở miền nam
bộ, vào những tháng đầu của năm hầu như không có mưa, và có mưa to vào những tháng 7, 8, 9 và kết thúc vào tháng 10
Hình 1-2 Xu hướng thường xuyên (repeateing trend) cuả chuỗi thời gian
Trang 20Hiện nay có nhiều thuật toán để phát hiện xu hướng trong chuỗi thời gian như Indyk [1] nghiên cứu các vấn đề xác định xu hướng trong chuỗi thời gian, Qu [2] trình bày một cách tiếp cận để hỗ trợ tìm kiếm xu hướng trong dữ liệu chuỗi thời gian và giải thuật chiếu ngẫu nhiên để phát hiện motif trên dữ liệu chuỗi thời gian dựa vào xác xuất
Cậy hậu tố (suffix tree) là một trong những cấu trúc dữ liệu biểu diễn các hậu
tố của một chuỗi ký tự, là một trong những phương pháp giúp tìm kiếm tất cả các chuỗi con trong một chuỗi và được ứng dụng để tìm kiếm tất cả các xu hướng thường xuyên trong dữ liệu chuỗi thời gian bằng cách mã hóa sự tăng giảm giá trị của dữ liệu trong
từng điểm thời gian thành một chuỗi ký tự
1.2 MỤC TIÊU VÀ GIỚI HẠN ĐỀ TÀI
Mục tiêu nghiên cứu đề tài tập trung vào các vấn đề sau:
Nghiên cứu dữ liệu chuỗi thời gian
Nghiên cứu về cách mã hóa xu hướng của dữ liệu thành ký tự
Nghiên cứu về cây hậu tố, mảng hậu tố và các vấn đề liên quan
Nghiên cứu việc áp dụng mảng hậu tố nâng cao để tìm tất cả các xu hướng thường xuyên và motif trong dữ liệu chuỗi thời gian
So sánh kết quả của phương pháp nêu trên với kết quả của cây hậu tố và giải thuật brute force
Thiết lập mối liên hệ giữa bài toán “phát hiện mẫu xu hướng thường xuyên” trên dữ liệu chuỗi thời gian với bài toán “phát hiện motif” trên dữ liệu chuỗi
Trang 21 Chúng tôi cũng đã xây dựng được sự kết hợp mảng hậu tố nâng cao, cây hậu
tố với phương xấp xỉ tuyến tính từng đoạn (PLA) để phát hiện tất cả các mẫu
xu hướng thường xuyên và phương pháp xấp xỉ gộp từng đoạn (PAA) để phát hiện tất cả các motif với độ dài khác nhau trên dữ liệu chuỗi thời gian
1.4 CẤU TRÚC CỦA LUẬN VĂN
Đề cương được chia thành 6 phần chính như sau:
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
Chương này giới thiệu sơ lược về đề tài, mục tiêu và phạm vi nghiên cứu cũng như cấu trúc của đề tài
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Chương này trình bày chi tiết về các vấn đề lý thuyết sẽ được áp dụng trong
đề tài như: dữ liệu chuỗi thời gian, cây hậu tố, mảng hậu tố, mảng hậu tố nâng cao, mã hóa dữ liệu chuỗi thời gian thành chuỗi xu hướng
CHƯƠNG 3 NHỮNG CÔNG TRÌNH LIÊN QUAN
Chương này trình bày một số công trình nghiên cứu liên quan đến đề tài như công trình phát hiện tất cả các xu hướng thường xuyên trong dữ liệu chuỗi thời gian, công trình phát hiện motif trên dữ liệu chuỗi thời gian dựa vào xác xuất, và công trình về truy vấn hình dạng dữ liệu chuỗi thời gian
CHƯƠNG 4 PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Chương này trình bày về việc sử dụng mảng hậu tố nâng cao, cây hậu tố cùng với phương pháp xấp xỉ tuyến tính từng đoạn để phát hiện tất cả các mẫu xu hướng thường xuyên và phương pháp xấp xỉ gộp từng đoạn để phát hiện tất
cả các motif trong dữ liệu chuỗi thời gian CHƯƠNG 5 THỰC NGHIỆM VÀ ĐÁNH GIÁ
Trang 22Chương này trình bày thực nghiệm, đánh giá độ chính xác và thời gian thực hiện để phát hiện tất cả các mẫu xu hướng và phát hiện tất cả các motif bằng mảng hậu tố nâng cao và cây hậu tố trong dữ liệu chuỗi thời gian
CHƯƠNG 6 KẾT LUẬN
Chương này đánh giá kết quả đạt được, các mặt hạn chế và hướng phát triển của đề tài
Trang 23CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Chương này sẽ trình bày về các công trình liên quan đến bài toán tìm tất cả các xu hướng thường xuyên trong dữ liệu chuỗi thời gian, các công trình về cây hậu tố, mảng hậu
tố, mảng hậu tố nâng cao, phương pháp thu giảm số chiều, phương pháp rời rạc hóa dữ liệu
2.1 DỮ LIỆU CHUỖI THỜI GIAN
Một chuỗi thời gian (Time Series) chiều dài 𝑚 là một tập hợp có thứ tự gồm 𝑚 giá
trị thực Ta ký hiệu chuỗi thời gian là 𝑇 = 𝑥1, 𝑥2, … , 𝑥𝑚 với 𝑥𝑖 là các số thực, 𝑚 là một số nguyên
Việc xác định các xu hướng thường xuyên của một chuỗi thời rất quan trọng trong bài toán dự báo chuỗi thời gian Nó giúp ta lựa chọn được mô hình dự báo phù hợp hay giúp cải tiến mô hình đã có chính xác hơn Và các mẫu quan sát được theo thời gian dựa trên các chuỗi thời gian chính là cơ sở để hiểu được đặc tính cũng như là dự báo các hành
vi tương lai của đối tượng đó
Chuỗi con (𝑠𝑢𝑏𝑠𝑒𝑞𝑢𝑒𝑛𝑐𝑒) 𝐶 có chiều dài 𝑛 của một chuỗi thời gian 𝑇 có chiều dài
𝑚 (𝑚 ≤ 𝑛) là một đoạn các giá trị liên tục nằm trong T Ta ký hiệu
𝐶 = 𝑥 𝑝, 𝑥𝑝+1, … , 𝑥𝑝+𝑛−1, với 1 ≤ 𝑝 ≤ 𝑚 − 𝑛 + 1
2.2 CÂY HẬU TỐ
Cho ∑ là một tập hữu hạn các phần tử, với mỗi phần tử là một ký tự trong tập ký tự (𝑎𝑙𝑝ℎ𝑎𝑏𝑒𝑡), các phần tử thuộc ∑ gọi là ký tự ∑* là một tập hợp con của ∑ mà không chứa chuỗi rỗng (∈) Ta có:
∑∗ = ∑ − {∈}
Chiều dài của một chuỗi 𝑥 ký hiệu là |𝑥|, là số ký tự trong chuỗi 𝑥 Các ký trong chuỗi 𝑥 được đánh số từ 0 đến|𝑥| – 1:=𝑥 = 𝑥0𝑥1𝑥2… 𝑥|𝑥|−1
Trang 24Gọi chuỗi 𝑤 là tiền tố của chuỗi 𝑥, ký hiệu 𝑤 ⊏ 𝑥, nếu tồn tại chuỗi 𝑎 để 𝑥 = 𝑤𝑎, chuỗi 𝑤 là hậu tố của chuỗi 𝑥, ký hiệu 𝑤 ⊐ 𝑥, nếu tồn tại chuỗi 𝑎 để 𝑥 = 𝑎𝑤 Một chuỗi vừa có thể là tiền tố vừa là hậu tố của một chuỗi khác Ví dụ chuỗi XYX vừa là tiền tố vừa
là hậu tố của chuỗi XYXYX Chuỗi rỗng (∈) vừa là tiền tố vừa là hậu tố của tất cả các chuỗi
Trie hậu tố
Cho 𝑆 là một tập hợp gồm 𝑛 chuỗi, các chuỗi này không là tiền tố của nhau Trie là
một cấu trúc dữ liệu dạng cây (hình 2-1) biểu diễn các chuỗi của 𝑆 Trie có các tính chất
sau:
Mỗi cạnh của Trie có nhãn là một ký tự Các cạnh đi từ một nút xuống các nút con
có nhãn khác nhau
Mỗi nút trên Trie cũng có một nhãn, ký hiệu 𝑣̅ là chuỗi tạo thành bằng cách nối các
ký tự nhãn của cạnh trên đường đi trừ nút gốc xuống nút con Chiều dài của chuỗi 𝑣̅ được gọi là độ sâu của nút, ký hiệu: 𝑑𝑒𝑝𝑡ℎ(𝑣)
Hai nút khác nhau có nhãn khác nhau
Ví dụ Trie hậu tố: 𝑆 = {𝐵𝐸𝐴𝑅, 𝐵𝐸𝐿𝐿, 𝐵𝐼𝐷, 𝐵𝑈𝐿𝐿, 𝐵𝑈𝑌, 𝑆𝐸𝐿𝐿, 𝑆𝑇𝑂𝐶𝐾, 𝑆𝑇𝑂𝑃}
Trang 25Các chuỗi trong tập 𝑆 phải thỏa mãn tính chất phi tiền tố (prefix-free): tức là không
có chuỗi nào là tiền tố của một chuỗi khác trong 𝑆 Không thể xây dựng được cây không thỏa mãn tính chất trên Ví du: 𝑆 = {ABC, AB}, ta không thể xây dựng được trie hậu tố vì
từ nút góc đến các nút lá của Trie ta lần lượt đi qua các nút có nhãn A, AB, ABC Vì AB
∈ 𝑆 nên ta phải có nút lá của Trie mang nhãn AB, mà ta đã có nhánh của Trie có nhãn AB,
nên không thể xây dựng được nút lá có nhãn AB (hình 2.-2)
Hình 2-2 Không thể xây dựng được Trie với nút lá có nhãn AB
Tính chất phi tiền tố là một tính chất quan trọng của cây Trie Để đảm bảo ta luôn
có thể xây dựng được cây Trie, ta dùng một kỹ thuật là bổ sung vào mỗi chuỗi của 𝑆 một
ký tự $ ở cuối mỗi chuỗi (hình 2-3)
Cho 𝑆 là một tập chứa các hậu tố của 1 chuỗi 𝑇 (𝑇 ∈ ∑∗) được gọi là Trie hậu tố
của T (hình 2-4) Để thỏa mãn tính chất phi tiền tố, ta thêm vào cuối mỗi phần tử của S ký
tự $ Ví dụ: 𝑇 = BANANA$, ta có tập S gồm 7 chuỗi:
𝑆 = {BANANA$, ANANA$, NANA$, ANA$, NA$, A$, $}
Trang 26Hình 2-3 Thêm ký tự $ ở cuối mỗi chuỗi
Hình 2-4 Trie hậu tố 𝑻 = 𝑩𝑨𝑵𝑨𝑵𝑨$
Cây hậu tố (suffix tree) là một cấu trúc dữ liệu biểu diễn các hậu tố của một
chuỗi khác rỗng tương tự như Trie Cây hậu tố được tạo thành từ Trie hậu tố bằng cách
Trang 27ghép các nút con đơn nhánh lại với nhau Cây hậu tố cho chuỗi 𝑆 có chiều dài 𝑚 có các
tính chất sau:
Mỗi cạnh của cây có nhãn là một chuỗi thuộc ∑∗ Các cạnh đi từ một nút xuống các
nút con của nó phải có nhãn là các chuỗi có ký tự đầu tiên khác nhau
Mỗi nút 𝑣 trên cây cũng mang một nhãn, nhãn của nút 𝑣, ký hiệu 𝑣̅ là một chuỗi tạo
thành bằng các nối tiếp các nhãn cạnh trên đường đi xuống nút 𝑣 Chiều dài của chuỗi 𝑣̅ :
𝑣̅ được gọi là độ sâu của nút 𝑣, ký hiệu: 𝑑𝑒𝑝𝑡ℎ(𝑣)
Ngoại trừ nút góc, các nút phải có nhiều hơn một con
Với mỗi cạnh được gán nhãn bằng một chuỗi con khác rỗng của 𝑆
Mỗi chuỗi con 𝑎 của chuỗi 𝑆 xuất hiện trên một lối đi duy nhất nào đó từ nút gốc
Ví dụ cây hậu tố: 𝑆 = xabxa$
Hình 2-5 Cây hậu tố cho chuỗi xabxa$
2.3 MẢNG HẬU TỐ
Cho một chuỗi 𝑆 = 𝑥1, 𝑥2, 𝑥3, … 𝑥𝑚 ∈ ∑∗, có duy nhất 𝑥𝑚 = $ Mảng hậu tố (suffix
array ) của 𝑆 ký hiệu SA(T) là thứ tự từ điển của tất cả các hậu tố của 𝑆
Trang 28Mảng hậu tố có thể được biểu diễn theo thứ tự từ điển (hình 2-6) Ví dụ:
𝑆= BANANA$, các hậu tố của 𝑆 và mảng hậu tố của 𝑆 theo thứ tự từ điển
Hình 2-6 Mảng hậu tố theo thứ tự từ điển
Mảng hậu tố được đề xuất bởi Manber và Myer [3] như một sự thay thế cho cây hậu
tố trong một số bài toán xử lý chuỗi Mảng hậu tố có ưu điểm là có cấu trúc đơn giản và
tiết kiệm bộ nhớ trong lúc hiện thực Manber và Mayer cũng đề xuất thuật toán xây dựng
mảng hậu tố trực tiếp mà không phải sử dụng cây hậu tố gọi là thuật toán nhân đôi tiền tố
(𝑑𝑜𝑢𝑏𝑙𝑖𝑛𝑔 𝑝𝑟𝑒𝑓𝑖𝑥) Thuật toán có độ phức tạp là Ω(𝑛𝑙𝑜𝑔𝑛) trong trường hợp xấu nhất và
𝑂(𝑛) trong trường hợp trung bình để xử lý chuỗi có độ dài 𝑛 Năm 2003, hai nghiên cứu
độc lập của Kärkkäinen [4] và Ko [5] đã tìm ra được hai thuật toán tuyến tính xây dựng
mảng hậu tố Một điểm đáng chú ý trong các thuật toán của Kärkkäinen [4] là chúng đều
dựa trên những nhận định rất tinh tế về tính chất của các hậu tố và mối quan hệ giữa các vị
trí trong chuỗi
Trang 292.4 MẢNG TIỀN TỐ CHUNG DÀI NHẤT
Tiền tố chung dài nhất (longest common prefix) của hai chuỗi (𝑥, 𝑦) là chuỗi 𝑧 sao
cho 𝑧 vừa là tiền tố của 𝑥, vừa là tiền tố của 𝑦 và 𝑧 có độ dài lớn nhất Ví dụ:
TIền tố chung của sâu banana và bank là ban
Mảng tiền tố chung dài nhất (LCP) là một mảng có kích thước n (giống như suffix
array) sao cho giá trị thứ 𝑖 (𝑙𝑐𝑝[𝑖]) là tiền tố chung dài nhất của hậu tố thứ 𝑖 và 𝑖 + 1
Cho T= t 0 t 1 … t n-1 𝑆𝐴(𝑇) = a 0 , a 1 ,…., a n-1 là mảng hậu tố của T Mảng tiền tố
chung dài nhất 𝐿𝐶𝑃(𝑇) là dãy số nguyên ( l0 , l 1 ,…., l n-1 ) định nghĩa như sau:
l 0 =0;
∀𝑖 >=0: là độ dài tiền tố chung dài nhất giữa hậu tố tại vị trí a i và hậu tố tại
vị trí a i trong chuỗi
Ví dụ với chuỗi T = 𝐵𝐴𝑁𝐴𝑁𝐴, mảng hậu tố của T (hình 2-6), ta có mảng tiền tố
chung dài nhất như sau:
l 0 = 0;
l 1 = 0 (độ dài tiền tố chung dài nhất của A$ và $)
l 2 = 1 (độ dài tiền tố chung dài nhất của ANA$ và A$)
l 3 = 3 (độ dài tiền tố chung dài nhất của ANANA$ và ANA$)
l 4 = 0 (độ dài tiền tố chung dài nhất của BANANA$ và ANANA$)
l 5 = 0 (độ dài tiền tố chung dài nhất của NA$ và BANANA$)
l 6 = 2 (độ dài tiền tố chung dài nhất của NANA$ và NA$)
Trên cây hậu tố, có rất nhiều thuật toán 𝐿𝐶𝐴 có thể áp dụng để tìm nút tiền bối chung gần nhất của hai nút, mỗi truy vấn 𝐿𝐶𝐴 được thực hiện trong thời gian 𝑂(1) và vì thế có thể xây dựng mảng tiền tố chung dài nhất trong thời gian 𝑂(𝑛) Mặc dù vậy, Kasai [6] đã
đề xuất được thuật toán tuyến tính hết sức đơn giản và hiệu quả để xây dựng mảng tiền tố
Trang 302.5 XÂY DỰNG MẢNG HẬU TỐ
Cho chuỗi T = t 0 t 1 … t n-1 ta cần xây dựng mảng hậu tố 𝑆𝐴(𝑇) = a 0 , a 1 ,…., a n-1
.Việc xây dựng mảng hậu tố bằng cách so sánh và sắp xếp chuỗi là một phương pháp đơn giản, nhưng đây không phải là một phương pháp hay, vì độ phức tạp của thuật toán so sánh
sẽ tỉ lệ thuận với chiều dài của chuỗi Vì thế ta cần tìm một phương pháp khác để xử lý sắp xếp hiệu quả các chuỗi con của mảng hậu tố
Thuật toán nhân đôi tiền tố
Phương pháp nhân đôi tiền tố (prefix doubling) được đề xuất bởi Manber và Myers
[3] là một trong những phương pháp cổ điển nhất thường được dùng để xây dựng mảng hậu tố Thuật toán này thường được sử dụng nhiều vì việc cài đặt chương trình khá đơn giản, thích hợp với việc lập trình đòi hỏi thời gian ngắn Thuật có có độ phức tạp là 𝑂(𝑛𝑙𝑜𝑔𝑛), tuy nhiên trung bình thuật toán chỉ cần thời gian 𝑂(𝑛) để thực hiện nếu dữ liệu phân bố ngẫu nhiên trong một bảng chữ cái lớn Thuật toán được xây dựng như sau:
Trước hết coi văn bản đầu vào 𝑇[1,2,…,n] có chiều dài vô hạn bằng cách thêm vào cuối văn bản 𝑇 vô hạn ký tự $ Gọi văn bản vô hạn là 𝑇∞ Chú ý là $ là ký tự nhỏ hơn ( theo thứ tự từ điển) tất cả các ký tự khác trong bảng chữ cái 𝛴 và chỉ xuất hiện trong văn bản 𝑇[1,2,…,𝑛] đúng một lần tại vị trí cuối cùng Do 𝑇∞ vô hạn, với mỗi số 0 ≤ 𝑘 ≤
⌈𝑙𝑜𝑔2𝑛⌉ ta có đúng 𝑛 chuỗi con của 𝑇∞ chiều dài 2𝑘, mỗi chuỗi bắt đầu bằng một ký tự của 𝑇[1,2,…,𝑛] Thuật toán thực hiện theo 𝑙𝑜𝑔2𝑛 bước như sau:
Sắp xếp 𝑛 chuỗi con của 𝑇∞ độ dài 1 theo thứ tự từ điển
Sắp xếp 𝑛 chuỗi con của 𝑇∞ độ dài 2 theo thứ tự từ điển
Sắp xếp 𝑛 chuỗi con của 𝑇∞ độ dài 4 theo thứ tự từ điển
Trang 31Nhận xét: Thứ tự của các chuỗi con thu được sau bước cuối cùng chính là thứ tự đã
sắp xếp của các hậu tố bắt đầu bằng ký tự đầu tiên của các chuỗi con đó
Thời gian thực hiện giải thuật phụ thuộc vào thuật toán sắp xếp theo hai dãy khóa
số tại mỗi bước Có thể dùng các thuật toán sắp xếp so sánh, chẳng hạn như QuickSort Tuy nhiên vì tập các giá trị khóa là các số nguyên nằm trong phạm vi từ 1 tới 𝑛, ta có thể
áp dụng các thuật toán sắp thứ tự cơ số (Radix Sort) hoặc sắp thứ tự đếm (Counting Sort)
để đạt tốc độ cao hơn với thời gian thực hiện giải thuật sắp xếp là 𝑂(𝑛) Từ đó thuật toán nhân đôi tiền tố có thể thực hiện trong thời gian 𝑂(𝑛)
2.6 MẢNG HẬU TỐ NÂNG CAO
Mảng hậu tố nâng cao (enhanced suffix array) là một cấu trúc dữ liệu bao gồm mảng hậu tố và một bảng bổ sung (hình 2-7) Đây cũng là 1 thuật toán dựa trên cấu trúc cây hậu
tố
Trang 32Hình 2-7 Mảng hậu tố nâng cao của chuỗi S = acaaacatat$
Suffix array suftab là một mảng các số từ 0 đến 𝑛, với 𝑛 ∈ 𝑁+ , nhằm để xác định
vị trí của các hậu tố của chuỗi 𝑆 Suffix array suftab có thể xây dựng trong thời gian 𝑂(𝑛) Ví dụ:
Ssuftab[0] = aaacatat$ subtab[0] = 2 Chuỗi con aaacatat$ nằm ở vị trí thứ 2 trong chuỗi S = acaaaacatat$
Bảng bwttab
Nó là 1 bảng có 𝑛+1 phần tử mà với mỗi 𝑖, 𝑖 ≤ 𝑞 ≤ 𝑛, bwttab[𝑖] = S[suftab[𝑖] − 1] nếu suftab[𝑖] ≠ 0 bwttab[𝑖] không được định nghĩa nếu suftab[𝑖] = 0 Bảng bwttab được xây dựng trong thời gian 𝑂(𝑛) bằng cách duyệt qua các phần tử trong mảng hậu tố
Trang 342.7 XÂY DỰNG CÂY HẬU TỐ
Thuật toán chân phương
Để biểu diễn cây hậu tố 𝑆𝑇(𝑆) (𝑆 là chuỗi cho trước) dưỡi dạng cấu trúc Ta lần lượt thêm các hậu tố của 𝑆 vào cây Bắt đầu từ hậu tố thứ 2, tìm tiền tố chung dài nhất với tất
cả các hậu tố đã thêm vào cây Gọi 𝑢 là tiền tố chung dài nhất
Nếu vị trí kết thúc của 𝑢 là một nút thì ta chỉ cần tạo mới một nút lá 𝑦 làm con của
u và đặt nhãn cho cạnh mới (𝑢, 𝑦) là phần còn lại của hậu tố đang được thêm vào loại bỏ
tiền tố u
Ngược lại vị trí kết thúc của 𝑢 nằm giữa một cạnh thì ta thêm vào một nút trong 𝑤 làm nút con của 𝑢 và cha của v, 𝑢 nằm ngay sau vị trí cuối cùng của cạnh mà chữ cái cuối cùng của 𝑢 khác với chữ cái trên cạnh Sau đó tạo mới một nút lá 𝑦 𝑙àm con của w và đặt nhãn cho cạnh mới (𝑢, 𝑦) là phần còn lại của hậu tố đang được thêm vào loại bỏ tiền tố u
Ví du: xây dựng cây hậu tố cho chuỗi “xabxa$”
Bước 1: Thêm chuỗi xabxa (hình 2-9)
Hình 2-9 Thêm chuỗi xabxa
Bước 2: Thêm chuỗi abxa (hình 2-10)
Trang 35Hình 2-10 Thêm chuỗi abxa
Bước 3: Thêm chuỗi bxa (hình 2-11)
Hình 2-11 Thêm chuỗi bxa
Bước 4: Thêm chuỗi ax (hình 2-12)
Hình 2-12 Thêm chuỗi ax
Thuật toán tốn 𝑛 vòng lặp để thêm lần lượt các hậu tố vào cây Và trong từng bước lặp tốn 𝑛 lần để tìm các tiền tố chung vì vậy thuật toán có độ phức tạp 𝑂(𝑛2)
Trang 36Thuật toán McCreight
Thuật toán McCreight được đề xuất bởi McCreigh vào năm 1976 [7], đây là thuật toán trên ý tưởng của thuật toán chân phương và được cải tiến bằng cách thêm những liên kết cho những nút trong của cây hậu tố
Gọi v là nút trong của cây hậu tố với pathlabel(𝑣) = 𝑐𝑠 với c là ký tự đầu tiên trong
pathlabel (𝑣) và 𝑠 là một chuỗi (s có thể rỗng)
Nếu 𝑠 = ∈, liên kết hậu tố của 𝑣 sẽ trỏ đến nút gốc của cây hậu tố 𝑆𝑇 (hình 2-13)
Hình 2-13 Liên kết hậu tố của v tới nút gốc
Nếu s ≠ ∈, liên kết hậu tố của 𝑣 sẽ trỏ vào một nút trong u của ST thỏa mãn điều kiện sau: pathlabel(u)= s (hình 2-14)
Hình 2-14 Liên kết hậu tố của v tới nút trong
Trang 37Ví dụ chuỗi S=xabxacxabxxabx$ có cây hậu tố và các liên kết hậu tố như hình sau (hình 2-15):
Hình 2-15 Cây hậu tố đầy đủ của chuỗi S
Nếu cây 𝑆𝑇𝑖−1 có tồn tại nút trong 𝑣 sao cho 𝑝𝑎𝑡ℎ𝑙𝑎𝑏𝑒𝑙(v)=cs là tiền tố chung lớn nhất ủa 𝑆𝑖 với 𝑆𝑇𝑖−1, ta sẽ đi theo liên kết hậu tố của v để chèn 𝑆𝑖+1 (hình 2-16)
Trang 38Hình 2-16 Bước chèn cho trường hợp 1
Nếu cây 𝑺𝑻𝐢−𝟏 không có tồn tại nút trong 𝒗 sao cho pathlabel(𝒗)=𝒄𝒔 là tiền tố chung lớn
nhất của 𝑺𝒊 với 𝑺𝑻𝐢−𝟏, ta sẽ làm tương tự thuật toán chân phương, thêm vào một nút 𝒘
vào giữa, 𝒘 lúc này chưa có liên kết, ta sẽ đi theo liên kết cha của 𝐰 để chèn 𝑺𝒊+𝟏 Do
biết trước độ dài của cạnh (𝒘, parent(𝒘)), ký hiệu là 𝑳 nên ta có thể nhảy một số nút khi
so sánh 𝑺𝒊+𝟏 và 𝑺𝑻𝐢 (hình 2-17, hình 2-18)
Hình 2-17 S = axbxacxfs
Trang 39Hình 2-18 S = xbxacxfs
2.8 MÃ HÓA DỮ LIỆU THÀNH XU HƯỚNG
Dữ liệu trong chuỗi thời gian là những số thực, vì thế để xây dựng được cây hậu tố với dữ liệu thời gian ta cần phải mã hóa những dữ liệu đó thành những ký tự Có nhiều cách mã hóa dữ liệu, ví dụ: trong công trình của Agrawal [8] sử dụng một cách mã hóa đơn giản đó là khi có 1 sự thay đổi dữ liệu của từng từng điểm thời gian: tăng nhanh, tăng, không đổi, giảm, giảm nhanh, zero, vv… dữ liệu sẽ mã hóa thành các ký tự lấy từ một tập
ký tự
2.9 XẤP XỈ DỮ LIỆU CHUỖI THỜI GIAN BẰNG PHƯƠNG PHÁP GỘP TỪNG ĐOẠN (Piecewise Aggregate Approximation - PAA)
Phương pháp PAA được Keogh và các cộng sự đưa ra vào năm 2000 [9] Phương
pháp này tuần tự xấp xỉ sắp xếp k giá trị liền kề nhau thành cùng một giá trị bằng trung bình cộng của k điểm đó Quá trình cứ tiếp tục từ trái qua phải của chuỗi dữ liệu Kết quả nhận được là một đường thẳng có hình bậc thang (hình 2-19) Giá trị trung bình tại vị trí k
được tính bằng công thức sau:
𝑋̅ =𝑖 𝑁
𝑛
𝑁𝑖𝑛
Trang 40Với 𝑛 là chiều dài dữ liệu chuỗi thời gian, N là số đoạn dữ liệu được xấp xỉ
Độ phức tạp của giải thuật PAA là O(n) trong mọi trường hợp
Hình 2-19 Dữ liệu chuỗi thời gian sau khi xấp xỉ từng đoạn
Mã giả của giải thuật PAA:
Algorithm PAA_Seg = PAA(T,N)