Tìm hiểu lí thuyết về dữ liệu chuỗi thời gian; lĩnh vực khai phá dữ liệu chuỗi thời gian: độ đo tương tự, so trùng chuỗi con, phát hiện motif, bài toán khai phá luật trên chuỗi thời gian
Dữ liệu chuỗi thời gian
Dữ liệu chuỗi thời gian là tập hợp các giá trị hoặc sự kiện lặp lại được thu thập tại các thời điểm khác nhau Dữ liệu này có thể phản ánh nhiều hiện tượng trong cuộc sống, từ thị trường chứng khoán đến các hiện tượng tự nhiên Với kích thước lớn và phức tạp, việc phân tích dữ liệu chuỗi thời gian đòi hỏi các kỹ thuật và công cụ chuyên dụng để tìm ra các mẫu hình, xu hướng và bất thường, đóng vai trò quan trọng trong nhiều lĩnh vực nghiên cứu.
Hình 1.1: Biểu diễn một loại dữ liệu chuỗi thời gian [37]
Khai phá luật trên dữ liệu chuỗi thời gian
Dữ liệu chuỗi thời gian xuất hiện một cách tự nhiên trong hầu hết các lĩnh vực tự nhiên, xã hội cũng như nhiều ngành khác Khối dữ liệu này chứa nhiều thông tin hữu ích cho các nhà nghiên cứu của từng lĩnh vực tương ứng Trong nghiên cứu khí tượng, dữ liệu chuỗi thời gian có thể được khai thác để dự báo khí hậu Trong kinh tế, các nhà kinh tế muốn xác định xu hướng thay đổi trong thu nhập gia đình theo thời gian; các nhà đầu tư muốn dự đoán giá của một loại cổ phiếu nào đó sẽ thay đổi như thế nào theo thời gian… Từ đây ta thấy rằng việc phân tích dữ liệu chuỗi thời gian để khám phá các luật biến đổi trong dữ liệu chuỗi thời gian có ý nghĩa rất quan trọng trong nhiều lĩnh vực của đời sống
Trích xuất luật từ dữ liệu chuỗi thời gian đóng vai trò quan trọng trong học dữ liệu chuỗi thời gian vì đầu ra của nó thường hướng đến con người, cung cấp cho người dùng cái nhìn sâu sắc hơn về dữ liệu.
Khai phá luật là một công việc điển hình trong khai phá dữ liệu Khai phá luật kết hợp (Agrawal và các cộng sự [3]) là một trong những thuật toán nổi tiếng nhất Tuy nhiên, nó chỉ tập trung vào các ký hiệu tượng trưng (symbolic) trong các phiên làm việc Vì thế, nhiều nhà nghiên cứu đã đề xuất ra nhiều thuật toán mới hoặc được cải tiến nhằm khai phá luật trong dữ liệu chuỗi thời gian
Hướng tiếp cận thông thường là đầu tiên sẽ rời rạc hóa dữ liệu chuỗi thời gian thành những đoạn và chuyển những đoạn này thành ký tự Sau đó, các luật có thể được khai phá trong miền ký tự vừa được chuyển đổi Das và các cộng sự [9] gom cụm các chuỗi con để tìm ra các ký tự, và sau đó áp dụng một thuật toán khai phá luật đơn giản để tìm ra luật Last và các cộng sự [23] tập trung vào việc khám phá các luật kết hợp mờ, nó dựa vào nguyên lý tính toán tri thức (perception) và các kỹ thuật xử lý tín hiệu Leigh và các cộng sự [30] phát triển phương pháp khám phá luật thuộc về lĩnh vực tài chính, sử dụng kỹ thuật “bull flag”
Nhóm nghiên cứu của Hoppner [13] đã quan tâm tới thời khoảng và phát triển một framework để khám phá ra các luật thời gian, các luật này được hình thành từ một tập các mẫu thường xuyên trong một chuỗi trạng thái Framework biểu diễn các đoạn của chuỗi thời gian bằng các thuộc tính (tăng, giá trị cao, cực trị cao) và khám phá ra các mối quan hệ thời khoảng được mô tả theo mẫu của logic thời khoảng Một nhóm nghiên cứu khác của Hetland và Seatrom [24] đưa ra một phương pháp khai phá luật dựa trên lập trình di truyền và phần cứng chuyên dụng Họ cũng kiểm tra vai trò của rời rạc hóa khi rút ra các luật tiên đoán trên chuỗi thời gian Cotofrei và Stoffel [25] đề xuất một phương pháp dựa trên logic vị từ cho việc khai phá luật Theo hướng tiếp cận này, đầu tiên sẽ biến đổi chuỗi dữ liệu ban đầu thành chuỗi các sự kiện, sau đó rút ra các luật thời gian bằng cách sử dụng cây phân lớp.
Mục tiêu đề tài
Mục tiêu của đề tài là phát triển một giải thuật khai phá luật trên dữ liệu chuỗi thời gian nhằm khám phá ra đúng được các mẫu thức thời gian thường xuyên và luật từ dữ liệu chuỗi thời gian và có ý nghĩa hơn với người sử dụng Các dạng mẫu thức thời gian và luật này vẫn chưa được đầu tư nhiều trong các công trình hiện tại về bài toán khai phá luật trên dữ liệu chuỗi thời gian Hiệu suất của giải thuật cũng được quan tâm để nâng cao hiệu quả của quá trình khai phá luật Đề tài sẽ cải tiến giải thuật FP-Growth để nâng cao hiệu quả của quá trình khai phá ra các mẫu thường xuyên, từ đó cải thiện quá trình khai phá luật, áp dụng quan hệ thời gian Allen vào quá trình khai phá luật làm cho các luật được sinh ra sẽ dễ hiểu hơn và gần gũi hơn với người dùng.
Phạm vi đề tài
Đề tài hiện thực quá trình khai phá luật theo dạng:
VT →t VP(s, c) (1) Ở đây, VT chỉ phần đầu của luật, VP là kết quả của luật và quan hệ thời gian t ở đây dựa trên các phép toán quan hệ thời gian của Allen; s,c là độ hỗ trợ và độ tin cậy tương ứng của luật
Trong giới hạn thời gian được phép, đề tài chỉ tập trung khai phá luật theo dạng luật (1) trên chuỗi thời gian và đánh giá kết quả đạt được Vì dữ liệu chuẩn cho bài toán khai phá luật trên chuỗi thời gian chưa phổ biến nên luận văn sử dụng dữ liệu chứng khoán của thị trường chứng khoán Việt Nam làm dữ liệu thực nghiệm.
Ý nghĩa của đề tài
Thuật toán khai phá quy tắc trên dữ liệu chuỗi thời gian mới được đề xuất là cải tiến từ thuật toán FP-growth Thuật toán này được chứng minh có khả năng khai phá chính xác các mẫu và quy tắc phổ biến trong dữ liệu; đồng thời có hiệu suất cao hơn so với thuật toán duyệt toàn bộ.
- Đề tài hiện thực một quá trình khai phá luật trên dữ liệu chuỗi thời gian Luật được khai phá có quan tâm nhiều đến yếu tố thời gian làm cho các luật được khai phá ra dễ hiểu hơn do đó có ý nghĩa hơn với người dùng
Kết quả khai phá dữ liệu có thể được áp dụng trên nhiều miền dữ liệu khác nhau để khai phá ra các thông tin có ý nghĩa Ví dụ, kết quả này có thể ứng dụng vào các hệ thống dự đoán giá trị tương lai cho các loại dữ liệu chuỗi thời gian như giá cổ phiếu, thời tiết Với dữ liệu về giá cổ phiếu, kết quả khai phá giúp nhà đầu tư dự đoán giá cổ phiếu sẽ biến động như thế nào (tăng, giảm, ổn định) trong tương lai hoặc dự đoán bao lâu thì giá cổ phiếu tăng, giảm hoặc ổn định Với dữ liệu về thời tiết, kết quả khai phá giúp nhà dự báo thời tiết có thể dự đoán thời tiết sẽ biến động như thế nào trong tương lai hoặc dự đoán thời gian xảy ra các hiện tượng thời tiết cực đoan.
TỔNG QUAN VỀ CÁC CÔNG TRÌNH LIÊN QUAN
Tiền xử lý
Dữ liệu chuỗi thời gian thường được thu thập từ nhiều nguồn khác nhau, dữ liệu thu được thường là dữ liệu thô và có thể không nhất quán do nhiều nguyên nhân như thiết bị đo thiếu chính xác, ảnh hưởng của các yếu tố tự nhiên,… Khi đó, nếu thực hiện phân tích trên tập dữ liệu này sẽ cho ra những kết quả thiếu chính xác, và không có ý nghĩa, do vậy, trước khi đưa dữ liệu này vào phân tích cần phải thực hiện một số thao tác tiền xử lý để chuẩn hóa dữ liệu này trước
Tiền xử lý dữ liệu chuỗi thời gian đòi hỏi phải có các phương pháp đặc biệt để kết hợp với chiều thời gian Một bước quan trọng trong quá trình này là giảm nhiễu, việc lọc nhiễu có thể thực hiện bằng cách dùng các bộ lọc kỹ thuật số [27] hoặc wavelet thresholding Các kỹ thuật tách giá trị đặc trưng được dùng để chuyển chuỗi giá trị gốc sang nhiều miền giá trị có ý nghĩa khác hoặc là để cung cấp thêm thông tin Chúng có thể trả về một chuỗi thời gian, cũng có thể là với độ phân giải thấp hơn, một giá trị đơn, hay là một vectơ đặc trưng tĩnh Phân tích thành phần cốt yếu (Pincipal component analysis PCA) và phân tích thành phần độc lập (independent component analysis ICA) [2] được dùng để xử lý dữ liệu thu được từ cảm biến.
Tìm kiếm tương tự
Tìm kiếm tương tự trong chuỗi thời gian là việc cho một chuỗi thời gian cần truy vấn, tìm tất cả các chuỗi thời gian trong cơ sở dữ liệu tương tự với chuỗi này.Có nhiều ứng dụng
14 tìm kiếm tương tự cho chuỗi thời gian Thực tế, nó là một trong những chủ đề được nghiên cứu kỹ lưỡng nhất của khai phá dữ liệu chuỗi thời gian Đây là một vài ứng dụng [26]:
- Trong chứng khoán, người theo dõi thường quan tâm tới việc tìm tất cả những giá cổ phiếu có giá chuyển động theo mô hình của một cổ phiếu cụ thể trong cùng một ngày giao dịch
- Trong âm nhạc, nhà sản xuất muốn phát hiện liệu một đoạn nhạc mới có tương tự với bất kỳ đoạn nhạc nào có bản quyền để phát hiện tồn tại đạo văn
- Trong kinh doanh, phát họa những sản phẩm với mô hình kinh doanh tương tự nhau có thể đạt được kết quả quản lý sản phẩm hiệu quả hơn
Trong khoa học môi trường, so sánh mức độ ô nhiễm giữa các khu vực sông khác nhau cho phép các nhà khoa học đánh giá tình trạng biến đổi môi trường Bằng cách phân tích sự khác biệt trong nồng độ chất gây ô nhiễm, các nhà khoa học có thể xác định các nguồn ô nhiễm tiềm ẩn, đánh giá tác động của các hoạt động của con người và dự đoán xu hướng ô nhiễm trong tương lai Phân tích này đóng vai trò quan trọng trong việc lập kế hoạch quản lý môi trường hiệu quả, bảo vệ các hệ sinh thái thủy sinh và đảm bảo sức khỏe cộng đồng.
2.2.1 Độ đo tương tự Độ đo tương tự là một nền tảng quan trọng trong khai phá và phân tích dữ liệu chuỗi thời gian Hầu hết các hướng tiếp cận biểu diễn chuỗi thời gian ở trên đều đề xuất một độ đo tương tự trên các lược đồ biến đổi Trong cơ sở dữ liệu truyền thống, độ đo tương tự dựa trên trùng khớp chính xác Tuy nhiên, trong dữ liệu chuỗi thời gian, độ đo tương tự thường mang ý nghĩa xấp xỉ
2.4.1.1 Độ đo khoảng cách Euclidean
Độ tương tự của hai chuỗi thời gian thường được đo bằng độ tương quan và khoảng cách Khi xem chuỗi thời gian như các điểm trong không gian nhiều chiều, khoảng cách Euclidean là lựa chọn phù hợp để đo khoảng cách giữa chúng Trên thực tế, khoảng cách Euclidean là thước đo độ tương tự cơ bản nhất được sử dụng rộng rãi cho dữ liệu chuỗi thời gian.
Cho hai chuỗi thời gian Q = (q1, …, qn) và C = (c1, …, cn), khoảng cách Euclidean giữa hai chuỗi thời gian này được cho bởi công thức:
Hình 2.5: Khoảng cách tính theo độ đo Euclidean [35]
15 Độ đo khoảng cách Euclidean có ưu điểm là dễ hiểu, dễ tính toán Tuy nhiên, độ đo khoảng cách Euclidean là không đầy đủ khi đo độ tương tự của hai chuỗi thời gian Vì những lý do sau:
- Hai chuỗi thời gian có thể rất giống nhau mặc dù chúng khác đường cơ sở hoặc biên độ
Ví dụ, biến động giá của 2 cổ phiếu theo cùng một mẫu có thể có khoảng cách Euclidean rất lớn bởi vì chúng biến động theo các giá cơ sở khác nhau
- Khoảng cách Euclidean giữa hai chuỗi thời gian có độ dài khác nhau là không thể xác định được mặc dù chúng tương tự nhau Hai bài nhạc có âm thanh tương tự nhau thậm chí khi chúng được chơi với tốc độ hơi khác nhau, có nghĩa là biểu diễn chuỗi thời gian của chúng sẽ có chiều dài khác nhau Theo quan điểm khoa học, các chuỗi thời gian được sinh ra bởi cùng một sự kiện sẽ có chiều dài khác nhau nếu tần số quan sát (tần số lấy mẫu) là khác nhau
- Hai chuỗi thời gian có thể rất giống nhau mặc dù chúng không hoàn toàn đồng bộ Khoảng cách Euclidean tổng cộng sự khác biệt giữa mỗi cặp các phần tử dữ liệu tương ứng giữa hai chuỗi thời gian là rất thô và thậm chí làm tăng sự khác nhau giữa hai chuỗi thời gian
2.4.1.2 Xoắn thời gian động (Dynamic Time Warping - DTW)
Để khắc phục hạn chế của độ đo Euclide, Berndt và Clifford [4] đã trình bày phương pháp xoắn thời gian động (DTW) nhằm đo lường độ tương tự giữa hai chuỗi thời gian.
Hình 2.6: Khoảng cách tính theo DTW [35]
Một cách trực quan, khoảng cách Euclidean là tổng khoảng cách giữa điểm và điểm tương ứng của hai chuỗi thời gian, trong khi tính DTW cho phép kéo dài hoặc co trục thời gian để cực tiểu hóa khoảng cách Để tính khoảng cách DTW giữa hai chuỗi thời gian x n và y m ta khởi tạo một ma trận n m để sắp xếp chuỗi thời gian x n và y m Một ô (i, j) tương ứng với một sắp xếp phần tử xi, yj Một đường xoắn P từ ô (0, 0) tới (n – 1, m – 1) là một sắp xếp cụ thể từng cặp phần tử tương ứng trong x n và y m :
16 max( , )n m L n m 1 x p t , p t y với t1, 2, ,Llà vị trí tương ứng của x n và y m trong sắp xếp trên Khoảng cách giữa x n và y m trên đường xoắn P là khoảng cách giữa x p t x và y p t y với t1, 2, ,L Ràng buộc trên đường xoắn P là:
Số đường xoắn P tăng theo quy luật số mũ theo chiều dài của chuỗi thời gian Khoảng cách nhỏ nhất trong tất cả các đường dẫn này là khoảng cách DWT
Khai phá luật trên chuỗi thời gian
Das và các cộng sự [9] gom cụm các chuỗi con để rút ra các các mẫu thức cơ bản và đánh dấu các mẫu thức này dưới dạng các ký tự Sau đó, tác giả áp dụng một thuật toán khai phá luật đơn giản để tìm ra luật Một trong những hạn chế của công trình này là việc chồng lấp lẫn nhau giữa các chuỗi con để gom cụm dẫn đến sự vô nghĩa của các luật được khai phá
Công trình của Cotofrei và Stoffel [25] chuyển chuỗi thời gian ban đầu thành chuỗi các sự kiện (event) Một sự kiện là một chuỗi các điểm rút ra từ chuỗi thời gian ban đầu và được gán cho một nhãn tượng trưng Các sự kiện khác nhau sẽ có những đặc trưng riêng và các đặc trưng này được rút ra bằng cách sử dụng các phương pháp thống kê Sau đó, tác giả sẽ sử dụng các sự kiện được rút ra ở trên làm tập huấn luyện để xây dựng các cây phân lớp và sử dụng các cây phân lớp này để suy ra các luật
Công trình [19] thực hiện khai phá luật trên chuỗi thời gian về chứng khoán với các mẫu thức intra-stock và inter-stock Khai phá mẫu thức intra-stock liên quan đến việc khai phá các mẫu kết hợp được lặp đi lặp lại trong cùng một chuỗi thời gian về chứng khoán Quá trình này được thực hiện bằng cách chuyển chuỗi thời gian chứng khoán ban đầu thành chuỗi các ký tự dựa trên khái niện phân tích candlestick Khai phá luật kết hợp ở đây đặc trưng cho một loại quan sát thị trường của loại cổ phiếu được chọn Khác với khai phá mẫu thức intra-stock, khai phá mẫu thức inter-stock sẽ thực hiện trên một vài chuỗi thời gian về chứng khoán để tìm mối quan hệ giữa các chuỗi này
Công trình [31] thực hiện khai phá luật theo dạng H →t B(s, c), nghĩa là khi H xảy ra thì
Sau một khoảng thời gian t, sự kiện B sẽ xảy ra với sự hỗ trợ s và độ tin cậy c Quy trình khai phá luật sẽ xác định các mẫu lặp lại, lập chỉ mục các mẫu này và cho phép người dùng cung cấp tiền đề H (một biểu thức mẫu trong số các mẫu thường xuyên được khai phá) Hệ thống sau đó sẽ tìm kiếm các luật có phần trước trùng với H và đưa ra đề xuất về giá của cổ phiếu B Tiếp theo, vế phải B của luật sẽ tương ứng với các đặc điểm của giá cổ phiếu (tăng, giảm, không thay đổi).
Tuy nhiên, cơ sở dữ liệu chuỗi thời gian thường xuyên được cập nhật các giá trị mới, vì vậy việc khai phá luật cần phải được cập nhật Do đó việc thường xuyên chạy lại thuật toán khai phá luật mỗi khi cơ sở dữ liệu được thêm giá trị mới là không hiệu quả vì nó không để ý đến các luật được khai phá trước đó mà lặp lại các công việc đã làm Công trình [29] đề xuất ra phương pháp để giải quyết vấn đề này mà không cần chạy lại thuật toán khai phá luật trên toàn bộ cơ sở dữ liệu Mục tiêu chính của thuật toán mà tác giả đề xuất là vẫn duy trì tập thường xuyên sau khi cơ sở dữ liệu được thêm vào các giá trị mới Ý tưởng chính của thuật toán là cải tiến thuật toán Sliding Window Filtering (SWF) Thuật toán SWF tương tự các thuật toán PPM, SPF và Twain Tất cả các thuật toán này tương tự nhau ở chỗ chia cơ sở dữ liệu chuỗi thời gian dựa trên tính chất hạt của thời gian và tạo ra các tập dự tuyển 2-itemset Các thuật toán này đòi hỏi hai lần quét qua cơ sở dữ liệu: đầu tiên tạo ra các tập dự tuyển 2- itemset, sau đó sẽ tạo ra các tập dự tuyển k-itemset trực tiếp từ tập dự tuyển 2-itemset Thuật toán mà tác giả đề xuất phụ thuộc vào việc lưu trữ tập dự tuyển 2-itemset được tạo ra với độ hỗ trợ của nó thay vì lưu toàn bộ các tập thường xuyên được tìm thấy trước đó Ý tưởng chính của thuật toán là dựa trên việc cập nhật các tập dự tuyển và sử dụng kỹ thuật thu giảm
18 số lần quét cơ sở dữ liệu để tìm các tập thường xuyên mới mà chỉ cần một lần quét cơ sở dữ liệu Theo hướng tiếp cận truyền thống, chi phí của việc chạy lại thuật toán khai phá luật phải tốn ít nhất hai lần quét cơ sở dữ liệu Vì thế, một trong những đặc điểm quan trọng của thuật toán là thu giảm số lần quét lại cơ sở dữ liệu khi nó được thêm các giá trị mới.
Khai phá mẫu tuần tự
Khai phá mẫu tuần tự là quá trình khai phá ra tất cả các chuỗi thường xuyên của các itemset trong tập dữ liệu [6] Đặt: i D là cơ sở dữ liệu tuần tự chứa tập các dữ liệu tuần tự (gọi là các sequence) ii Ngưỡng hỗ trợ nhỏ nhất min_sup iii I = {i 1 , i 2 , …, ik} là tập k phần tử (item) hoặc sự kiện duy nhất
Khi này, khai phá mẫu tuần tự là quá trình tìm ra tập các sequence thường xuyên S trong cơ sở dữ liệu tuần tự D của các phần tử trong I thỏa ngưỡng hỗ trợ nhỏ nhất min_sup [21]
Thuật toán AprioriAll, được đề xuất bởi Agrawal và Srikant vào năm 1995, đóng vai trò là thuật toán khai phá mẫu tuần tự đầu tiên Thuật toán này lặp lại quá trình duyệt cơ sở dữ liệu để xác định các tập mục thường xuyên có chiều dài k tại lần lặp k Trong mỗi lần lặp, AprioriAll áp dụng quá trình sinh-và-thử bằng cách kết hợp các tập L(k-1) để tạo ra các ứng viên chuỗi.
Ck ở bước lặp thứ k, sau đó sẽ bỏ bớt những sequence có sequence con không nằm trong tập
Lk-1 Tạo tập Lk bằng cách tìm trong Ck những sequence có độ hỗ trợ support ≥ min_sup và thêm vào Lk
Những thuật toán mà dựa trên ý tưởng của giải thuật Apriori, không giới hạn không gian tìm kiếm, gặp phải bất lợi trong quá trình đếm số lần xuất hiện của các sequence trong suốt quá trình lặp của thuật toán, điều này là phức tạp quá trình tính toán Để giải quyết vấn đề này, nhiều thuật toán phải tìm cách tính độ hỗ trợ và thu giảm số sequence dự tuyển mà không cần đếm số lần xuất hiện và duy trì giá trị này trong quá trình lặp Hầu hết các giải pháp cung cấp nhằm thu giảm các chi phí tính toán này bằng cách sử dụng một biểu diễn bitmap cho việc truy cập vào cơ sở dữ liệu tuần tự [Zaki 1998 [34]; Ayers et al 2002 [1]; Yang and Kitsuregawa 2005 [33] và sử dụng toán tử bitwise để tính độ hỗ trợ cho mỗi lần lặp Chiu và các cộng sự [7] đề xuất thuật toán DISC-all sử dụng kỹ thuật Direct Sequence Comparison DISC, để tránh việc đếm số lần xuất hiện bằng cách lược bỏ những chuỗi không thường xuyên theo những chuỗi có cùng chiều dài khác Tìm kiếm theo chiều rộng, sinh và thử, truy cập cơ sở dữ liệu nhiều lần là những đặc trưng chính của các thuật toán dựa trên ý tưởng của thuật toán Apriori, nó đưa ra những thử thách và làm cản trở hiệu suất của thuật toán
Một giải pháp để giới hạn số lần truy cập cở sở dữ liệu xuống còn một hoặc hai lần bằng cách tạo một cấu trúc dữ liệu tạm để lưu giữ thông tin về độ hỗ trợ dùng trong quá trình khai phá đã được phát triển PSP[17], sử dụng cây tiền tố để giữ các sequence dự tuyển với số lần xuất hiện của mỗi sequence vào cuối mỗi nhánh Phương pháp này trở nên không hiệu quả khi ngưỡng hỗ trợ min_sup quá nhỏ Apriori-GST [12] sử dụng cây hậu tố như một chỉ mục băm để tính số lần xuất hiện của các sequence con Những thuật toán khác mà không cần duyệt cơ sở dữ liệu nhiều lần hầu như đều dựa trên thuật toán pattern-growth (như PrefixSpan
[14], WAP-mine [16]) hoặc là kết hợp giữa kỹ thuật của aprori và pattern-growth (như SPARSE [6]) Những thuật toán này thường duyệt cơ sở dữ liệu ít nhất hai lần để tạo một cấu trúc dữ liệu khác chứa trong bộ nhớ chính và dùng trong quá trình khai phá
Một số phương pháp cây pattern-growth sử dụng phương pháp nén như FS-Miner [10], WAP-tree [16], PS-tree [11] Chia sẽ tiền tố trong các sequence được biểu diễn trong cây bằng cách phân nhánh, mỗi nút đại diện cho một phần tử dọc theo sequence cùng với số lần xuất hiện của nó Một cách nén khác của sequence dự tuyển là dùng cây hậu tố [8]
CƠ SỞ LÝ THUYẾT
Đại số thời gian Allen
Logic thời gian được sử dụng rộng rãi trong tất cả các phương pháp biểu diễn thông tin về thời gian trong khuôn khổ luận lý, và cũng được thu hẹp thành Tense logic dựa vào modal-logic được giới thiệu bởi Arthur Aprior vào khoảng năm 1960 và sau đó được phát triển sâu hơn bởi các nhà logic học và khoa học máy tính
Các ứng dụng của luận lý thời gian bao gồm hình thức hóa để làm rõ các vấn đề triết học về thời gian, định nghĩa ngữ nghĩa của biểu thức thời gian trong ngôn ngữ tự nhiên, mã hóa tri thức hướng thời gian trong trí tuệ nhân tạo Nó cũng được sử dụng như là một công cụ cho việc tương tác với khía cạnh thời gian của các chương trình máy tính Đại số thời khoảng Allen là một tính toán cho luận lý thời gian được giới thiệu bởi James F.Allen vào năm 1983 [18] Việc tính toán xác định mối quan hệ giữa các khoảng thời gian và cung cấp một bảng tổng hợp được dùng như một cơ sở lý luận về mô tả thời gian của các sự kiện
3.1.1 Các quan hệ cơ bản của Allen
Bảng 3.1 tóm tắt 13 quan hệ cơ bản của Allen, xác định các quan hệ tiềm ẩn giữa hai khoảng thời gian nhất định (a và b) Mỗi định nghĩa đồ họa là biểu đồ mô tả quan hệ giữa a và b Ví dụ: lược đồ đầu tiên thể hiện quan hệ "a trước b", nghĩa là a kết thúc trước khi b bắt đầu; lược đồ thứ hai là "a gặp b", nghĩa là b bắt đầu khi a kết thúc.
Bảng 3.1: Mười ba mối quan hệ cơ bản của Allen
Mối quan hệ cơ bản diễn tả trong Bảng 3.1 được sắp xếp theo thứ tự mà a bắt đầu trước b và sau đó là a kết thúc trước b
Trong mười ba mối quan hệ trên, có sáu cặp mối quan hệ là thuận nghịch Ví dụ, ngược của
“a precedes b” là “b preceded by a”; bất cứ khi nào quan hệ đầu là đúng thì quan hệ ngược lại cũng đúng Bảng 3.2 liệt kê cặp mối quan hệ thuận nghịch với nhau Quan hệ thứ mười ba,
"equals" là cặp ký hiệu nghịch đảo của chính nó Mỗi cặp ký hiệu nghịch đảo bao gồm một cặp ký tự thường và một ký tự hoa của cùng một mẫu tự (ví dụ: p và P; ký tự hoa biểu thị cho quan hệ nghịch đảo Allen).
Bảng 3.2: Thuận nghịch của mối quan hệ thời gian cơ bản của Allen
3.1.2 Các toán tử trên quan hệ
Phần bù ~r của một quan hệ r là quan hệ gồm tất cả quan hệ cơ bản không có trong r Từ định nghĩa phần bù ta có thể thấy rằng toán tử bù là bù của chính nó; nghĩa là đối với mội quan hệ r ta có
Bảng 3.3: Ví dụ phép toán phần bù
Kết hợp (r.s) của hai quan hệ (r) và (s) là một quan hệ tiến hành giữa a và c nếu có b mà a(r)b và b(s)c; khi đó ta có thể viết a(r.s)c
Tính toán tử kết hợp thì phức tạp hơn các toán tử khác được trình bày ở đây
Nó được xác định bằng cách đi ngược lại định nghĩa các quan hệ, và làm việc ở đó; hoặc bằng cách xác định sự kết hợp của mỗi quan hệ cơ bản từ r với mỗi quan hệ cơ bản từ s, và giữ phần hợp của các kết quả
Bảng 3.4: Phép toán kết hợp trên các quan hệ thời khoảng cơ bản Phép toán hợp không có giao hoán nhưng kết hợp giữa trái và phải
Bảng 3.5: Ví dụ phép toán kết hợp
Phép toán nghịch !r của quan hệ r là mối quan hệ gồm tất cả các quan hệ cơ bản nghịch của r Từ định nghĩa của phép toán nghịch ta thấy rằng toán tử nghịch là nghịch của chính nó; nghĩa là đối với mội quan hệ r ta có:
Bảng 3.6: Ví dụ phép toán nghịch
Phép toán giao (∩) của hai quan hệ (r) và (s) là tập hợp các phần tử chung của cả hai quan hệ Nói cách khác, giao của hai quan hệ là một quan hệ chứa tất cả các cặp (a, b) tồn tại trong cả hai quan hệ r và s.
Toán tử giao có tính chất giao hoán và kết hợp
Bảng 3.7: Ví dụ phép toán giao
Toán tử hợp (r + s) của hai quan hệ (r) và (s) là hợp giữa hai quan hệ; nó là quan hệ gồm tất cả các quan hệ cơ bản mà ở trong (r) hoặc (s)
Toán tử hợp có tính giao hoán và kết hợp
Bảng 3.8: Ví dụ phép toán hợp Nhiều tác giả khác nhau thì có thể có cách gọi và ký hiệu khác nhau cho các quan hệ cơ bản Bảng sau mô tả các cách gọi và ký hiệu khác nhau cho các quan hệ cơ bản
Bảng 3.9: Tên và ký hiệu cho các quan hệ cơ bản
Cấu trúc dữ liệu bảng băm
Các cấu trúc dữ liệu thông thường như danh sách, danh sách liên kết, cây nhị phân, … đều dùng cách so sánh để tìm kiếm phần tử nên thường tìm kiếm không nhanh và phụ thuộc vào kích thước cấu trúc Để nâng cao tốc độ tìm kiếm và truy xuất các phần tử, cấu trúc dữ liệu bảng băm được đề xuất Độ phức tạp của các phép toán trên bảng băm thường là O(1) và không phụ thuộc vào kích thước của bảng băm
Một bảng băm là một tập hợp các phần từ, mỗi phần tử là một cặp , trong đó K là khóa và V là giá trị ứng với khóa K Mỗi một khóa K xác định duy nhất một giá trị V
Khi xây dựng bảng băm, đầu tiên ta phải tính mã băm của các khóa trong bảng băm; thông thường mỗi mã băm của một khóa là một số nguyên dài 4 bytes Sau đó ta dùng một hàm băm nữa gọi là hàm nén (compress function) chuyển số nguyên này xuống miền nhỏ hơn, phụ thuộc vào kích thước của bảng băm Như vậy, ta có thể tính mã băm của một khóa trong bảng băm như sau: index(K,s) = f c (f h (K), s)
- s : kích thước của một bảng băm (size of hash table)
Hàm băm là hàm biến đổi giá trị khóa của một phần tử thành một địa chỉ là một số nguyên dài 4 bytes (32 bits)
1 Phương pháp tính tổng (summing components)
Với một chuỗi bytes s = s[0] … s[k-1] với chiều dài k ta có thể tính mã băm theo phương pháp này như sau:
2 Phương pháp đa thức (polynomial accumulation)
Với một chuỗi bytes s = s[0] … s[k-1] với chiều dài k ta có thể tính mã băm theo phương pháp này như sau:
Với a là một số nguyên tố thường được chọn là: 31, 33, 37, 39, 41
Với phương pháp đa thức, công thức tính mã băm có thể được viết lại theo luật Horner như sau: f h (s) = s[0] + a * (s[1] + … + a * (s[k – 2] + a * s[k-1]) …)
Tiêu chuẩn để đánh giá hàm băm:
- Các khóa được phân đều trong bảng băm
- Ít xảy ra đụng độ giữa các khóa
- Có thể tính toán được trên nhiều kiểu dữ liệu khác nhau
Hàm nén là một hàm biến đổi giá trị của một mã băm từ một số nguyên dài 32 bits vào một miền nhỏ hơn phụ thuộc vào kích thước của bảng băm
Sử dụng số dư của phép chia là địa chỉ (chỉ số) của khóa trong bảng băm index (K,s) = f h (K) mod s
Trong đó: s : kích thước của bảng băm
2 Phương pháp “nhân cộng và chia” MAD: index (K,s) = (a * f h (K) + b) mod s
Trong đó: s : kích thước của bảng băm và là một số nguyên tố a, b: là hai số tự nhiên khác 0 thỏa mãn: a mod s ≠ 0
3.2.3 Đụng độ và cách giải quyết Đụng độ xảy ra khi mã băm của hai khóa của hai phần tử khác nhau trên một bảng băm là như nhau, hay nói cách khác là:
Trọng số tải của một bảng băm (load factor): là tỉ số của số lượng phần tử trong bảng băm (n) với kích thước thực của một bảng băm (N) α = (current number of table items)/(table size) = 1/(hashing efficiency) Điều này có nghĩa là khi trọng số tải (load factor) của một bảng băm càng cao thì độ hiệu quả của hàm băm càng thấp hay nói cách khác là cơ hội để xảy ra đụng độ sẽ rất cao và độ phức tạp của các phương thức thêm, xóa và tìm kiếm sẽ tăng
Do đó, khi thiết kế một bảng băm, việc chọn kích thước của bảng băm là rất quan trọng, chúng ta phải ước lượng số phần tử tối đa trong một bảng băm để từ đó tính được kích thước của một bảng băm sao cho α ≤ 2/3
1 Phương pháp kết nối (chaining)
Xâu các phần tử có khóa đụng độ thành một danh sách liên kết, khi đó bảng băm sẽ là một mãng các danh sách liên kết
- Thao tác thêm (insert operation) i Tính index của khóa phần tử được thêm vào ii Duyệt qua danh sách liên kết tại vị trí đó và tìm phần tử có khóa trùng với phần tử được thêm vào iii Nếu tồn tại, cập nhật giá trị của phần tử iv Nếu không tồn tại, thêm phần tử này vào cuối danh sách liên kết
- Thao tác tìm kiếm (find operation) i Tính index của khóa phần tử cần tìm ii Duyệt qua danh sách liên kết để tìm phần tử có khóa trùng với khóa của phần tử cần tìm iii Trả về giá trị của phần tử tìm thấy hoặc NULL
- Thao tác xóa (remove operation) i Tính index của khóa phần tử cần xóa ii Duyệt qua danh sách liên kết tại vị trí đó để tìm phần tử có khóa trùng với khóa cần tìm iii Nếu có, loại bỏ phần tử đó
Do mỗi vị trí có thể chứa nhiều hơn một phần tử nên trọng số tải của phương pháp này có khả năng > 1
Do đó, độ phức tạp của phương pháp này là O(⌈n/N⌉ ) = O(α) ≥ O(1)
2 Phương pháp địa chỉ mở (open addressing)
Khi một vị trí đã được chiếm bởi một phần tử khác, chúng ta có thể tìm tiếp một vị trí khác hoặc có thể mở rộng bảng băm để chứa phần tử này
- Trọng số tải (load factor) ≤ 1, khi n ≤ N
- Sử dụng phương pháp giải quyết đụng độ rất phức tạp nhằm tránh tình trạng đụng độ
Các dạng chuỗi con
Cho chuỗi thời gian T có chiều dài m, một chuỗi con C của T có chiều dài n (n < m) là mẫu gồm n phần tử liên tiếp nhau bắt đầu tại một vị trí nào đó trong T, nghĩa là:
Hình 3.5: C là chuỗi con của chuỗi thời gian T [36]
Cho một số thực dương R và một dãy thời gian T có chứa hai dãy con, C bắt đầu tại vị trí p và M bắt đầu tại vị trí q Khi đó, nếu D(C, M) ≤ R thì M được gọi là dãy con trùng khớp với C.
Hai chuỗi con M và C trên được gọi là một trùng khớp tầm thường của nhau nếu p = q hoặc không tồn tại chuỗi con M’ bắt đầu tại vị trí q’ trên T sao cho :
Hình 3.6: Đối với hầu hết các chuỗi con C, so trùng tốt nhất của C chính là các trùng khớp tầm thường ngay bên trái và phải của C [36]
Motif là mẫu (chuỗi con) không trùng lắp được lặp đi lặp lại nhiều lần trong chuỗi thời gian Hình 3.7 minh họa một motif lặp lại ba lần trong đoạn chuỗi thời gian
Hình 3.7 : Một motif được lặp lại 3 lần [36]
Cho một chuỗi thời gian T, một chuỗi con có chiều dài n và một số thực dương R, một motif có ý nghĩa nhất trong T (gọi là 1-Motif) là một chuỗi con C 1 mà có số lượng trùng khớp không tầm thường là cao nhất Một motif có ý nghĩa thứ K trong T (gọi là K-Motif) là một chuỗi con Ck có số trùng khớp không tầm thường cao nhất thỏa :
Discord C (còn gọi là chuỗi con bất thường) của chuỗi thời gian T là một chuỗi con của T sao cho C là chuỗi con khác biệt lớn nhất với các chuỗi con còn lại của T Hình 3.8 minh họa một discord được tìm thấy trong chuỗi thời gian về điện tâm đồ
Hình 3.8 : Một discord trong chuỗi thời gian điện tâm đồ Cho chuỗi thời gian S và C là một chuỗi con của S Khi đó:
- C là một discord có ý nghĩa nhất trong S nếu khoảng cách tới chuỗi con lân cận của C là lớn nhất Điều này có nghĩa là với mỗi chuỗi con M bất kỳ của S, thì: min(Dist(C, Q)) ≥ min(Dist(M, P)) với P, Q là các trùng khớp không tầm thường C và M
- C là một discord quan trọng thứ k trong S nếu khoảng cách tới chuỗi con lân cận thứ k của nó là lớn nhất
Mẫu thức khuynh hướng mô tả sự biến động của các chuỗi con trong dữ liệu chuỗi thời gian Đối với một chuỗi con C = (tp, tp+1,…, tp+n-1) của chuỗi thời gian T = (t1, t2,…,tm), mẫu thức khuynh hướng thể hiện trạng thái tăng, giảm hoặc ổn định của chuỗi con đó.
1 C được gọi là chuỗi tăng nếu thỏa các điều kiện sau: a tp < tp-1, nếu p ≥ 2 b tp+n-1 > tp+n, nếu p+n ≤ m c t i < t i+1, t i C
2 C được gọi là chuỗi giảm nếu thỏa các điều kiện sau : a tp > tp-1, nếu p ≥ 2 b t p+n-1 < t p+n , nếu p+n ≤ m c ti > ti+1 , ti C
3 C được gọi là ổn định nếu thỏa các điều kiện sau : a t p ≠ t p-1 , nếu p ≥ 2 b t p+n-1 ≠ t p+n , nếu p+n ≤ m c ti = ti+1, ti C
Giải thuật khai phá mẫu thường xuyên
Thuật toán Apriori được đề xuất bởi R Agrawal và R Srikant vào năm 1994 [20] để khai phá mẫu thường xuyên Thuật toán dựa trên ý tưởng dùng tri thức biết trước (prior knowledge) về đặc điểm của các tập thường xuyên Apriori sử dụng hướng tiếp cận lặp với quá trình tìm kiếm tập thường xuyên ở từng mức một, nghĩa là:
- k+1-itemset được tạo từ k-itemset
- Ở mỗi mức tìm kiếm, toàn bộ dữ liệu đều được kiểm tra
Thuật toán Apriori được mô tả như sau:
- Đầu tiên, tập 1-itemset khai phá được bằng cách duyệt qua cơ sở dữ liệu, đếm số lần xuất hiện của các phần tử và đưa các phần tử thỏa ngưỡng hỗ trợ min_sup Kết quả thu được tập L1
- Tiếp theo, sử dụng tập L1 để tìm tập L2, sử dụng L2 để tìm L3, và tiếp tục như vậy cho đến khi không thể tìm thấy phần tử nào trong tập thường xuyên k- itemset thì dừng
- Tạo ra nhiều tập dự tuyển o Nếu tập thường xuyên 1-itemset có 10 4 phần tử thì tập dự tuyển 2- itemset sẽ có nhiều hơn 10 7 (≈10 4 (10 4 -1)/2) phần tử o Một k-itemset cần ít nhất 2 k -1 itemsets dự tuyển trước đó
- Kiểm tra tập dữ liệu nhiều lần o Chi phí lớn khi kích thước các itemsets tăng lên dần o Nếu k-itemsets được khám phá thì cần kiểm tra tập dữ liệu k+1 lần
Giải thuật FP-Growth được xây dựng theo hướng tiếp cận sau [20]:
- Nén tập dữ liệu vào cấu trúc cây (Frequent Pattern tree, FP-tree) o Giảm chi phí cho toàn tập dữ liệu trong quá trình khai phá o Đảm bảo kết quả khai phá không bị ảnh hưởng
- Áp dụng phương pháp chia để trị, quá trình khai phá được chia làm 2 phần: o Xây dựng cây FP o Khái phá các tập thường xuyên với cây FP
- Tránh tạo ra các tập dự tuyển o Mỗi lần kiểm tra một phần tập dữ liệu Thuật toán FP-Growth được mô tả như sau:
- Xây dựng cây FP o Kiểm tra tập dữ liệu, tìm tập thường xuyên 1-itemsets o Sắp thứ tự tập thường xuyên 1-itemsets theo sự giảm dần của support count (frequency, tần số xuất hiện) o Kiểm tra tập dữ liệu, tạo cây FP
Tạo root của cây FP, được gán nhãn “null” {}
Mỗi giao dịch tương ứng một nhánh của cây FP
Mỗi node trên một nhánh tương ứng một item của giao dịch
Các item của một giao dịch được sắp theo giảm dần
Mỗi node kết hợp với support count của item tương ứng
Các giao dịch có chung items tạo thành các nhánh có prefix chung
- Khám phá tập thường xuyên với cây FP o Tạo conditional pattern base cho mỗi node của cây FP
Tích luỹ các prefix paths with frequency của node đó o Tạo conditional FP-tree từ mỗi conditional pattern base
Tích lũy frequency cho mỗi item trong mỗi base
Xây dựng conditional FP-tree cho frequent items của base đó o Khám phá conditional FP-tree và phát triển frequent itemsets một cách đệ qui
Nếu conditional FP-tree có một path đơn thì liệt kê tất cả các itemsets
- Không tạo tập itemsets dự tuyển o Không kiểm tra xem liệu itemsets dự tuyển có thực là itemsets thường xuyên
- Sử dụng cấu trúc dữ liệu nén dữ liệu từ tập dữ liệu
- Giảm chi phí kiểm tra tập dữ liệu
- Chi phí chủ yếu là đếm và xây dựng cây FP lúc đầu, do đó, hiệu quả và co giãn tốt cho việc khám phá các itemsets thường xuyên dài lẫn ngắn
HƯỚNG TIẾP CẬN VÀ GIẢI QUYẾT VẤN ĐỀ
Đặt vấn đề
Khai phá luật trên dữ liệu chuỗi thời gian là một công việc quan trọng trong khai phá dữ liệu chuỗi thời gian Việc khai phá luật trên dữ liệu chuỗi thời gian nhằm tìm ra mối liên hệ của dữ liệu tại các thời điểm khác nhau trên toàn chuỗi thời gian Nó cung cấp cho người dùng một cái nhìn sâu sắc hơn về dữ liệu
Do dữ liệu chuỗi thời gian thường có kích thước lớn, khai phá luật trên chúng thường tốn thời gian Vì vậy, cải thiện hiệu suất của quá trình này là rất quan trọng trong lĩnh vực khai phá luật trên dữ liệu chuỗi thời gian.
Mục đích nghiên cứu là tạo ra thuật toán khai phá luật trên dữ liệu chuỗi thời gian, có khả năng khám phá chính xác các quy luật có ý nghĩa với ngưỡng hỗ trợ và tin cậy của người dùng, đồng thời đảm bảo hiệu suất tính toán trên tập dữ liệu lớn Giải pháp đề xuất cải thiện hiệu suất quá trình khai phá luật và đưa yếu tố thời gian vào quá trình này để tìm ra các luật có ý nghĩa hơn cho người dùng.
Hướng tiếp cận
Luận văn sẽ thực hiện quá trình khai phá luật trên chuỗi thời gian theo hướng tiếp cận với nội dung như sau:
1 Chuẩn bị dữ liệu cho phần thực nghiệm
2 Đầu tiên ta áp dụng phương pháp đổi chuỗi thời gian thành chuỗi ký tự bằng cách sử dụng tỉ số thay đổi giữa các điểm dữ liệu liên tục (Huang và Yu [32]) Nghĩa là cho chuỗi thời gian S = (s[0], s[1], …, s[n-1]), ta sẽ thực hiện việc biến đổi chuỗi này sang chuỗi tỉ số thay đổi S’ = ( s '[0], s '[1], …, s '[n-2]) theo công thức :
3 Sau đó luận văn sẽ dựa vào tính tăng giảm của dữ liệu để chuyển chuỗi tỉ số S’ sang dạng ký tự thành chuỗi S’’ theo đặc điểm sau : a Nếu S’[i] = 0 thì S’’[i] = ‘O’ b Nếu S’[i] > 0 thì S’’[i] = ‘T’ c Nếu S’[i] < 0 thì S’’[i] = ‘G’
4 Cải tiến thuật toán FP-Growth để tìm ra các mẫu thường xuyên trên chuỗi dạng ký tự
5 Quá trình khai phá luật sẽ được thực hiện trên các mẫu thường xuyên vừa tìm được này
6 Đánh giá kết quả đạt được theo các tiêu chí sau: a Tính đúng đắn : thể hiện ở khả năng tìm ra các luật đúng theo tiêu chí mà người dùng muốn tìm
31 b Tính đầy đủ : thể hiện ở khả năng tìm ra đầy đủ các luật có thể có trên dữ liệu c Hiệu suất : thực hiện so sánh với giải thuật trực tiếp brute-force.
Định nghĩa dạng luật
Luận văn sẽ tập trung khai phá luật theo dạng:
- Vế trái (VT) và vế phải (VP) của luật là một sự kiện hoặc một chuỗi sự kiện xảy ra theo thời gian : e1 e2 e3… nghĩa là khi e1 xảy ra xong thì sau khoảng thời gian t 1 e 2 sẽ xảy ra, khi e 2 kết thúc thì sau khoảng thời gian t 2 thì e 3 sẽ xảy ra…
- Sử dụng toán tử thời gian before của Allen với thời gian ràng buộc cụ thể là t Nghĩa là, t là khoảng thời gian sau khi VT xảy ra và kết thúc thì sau thời gian t này
- Độ hỗ trợ s của luật (1) trên chuỗi thời gian S’’ được tính như sau:
Trong đó: o l là chiều dài của chuỗi thời gian S’’ o l r là chiều dài của luật o l 1 là chiều dài của VT nếu VT chỉ có 1 sự kiện, nếu VT là một chuỗi sự kiện thì l 1 là chiều dài của sự kiện đầu tiên trong VT
- Độ tin cậy c của luật (1) trên chuỗi thời gian S’’ được tính như sau :
Giải quyết vấn đề
4.4.1 Tiền xử lý dữ liệu
Biên độ giá trị của các dữ liệu chuỗi thời gian biến đổi rất khác nhau Điều này dẫn đến việc tìm thấy các mẫu thường xuyên và qui tắc biến đổi trên dữ liệu chuỗi thời gian gốc ban đầu sẽ khó khăn trong quá trình xử lý cũng như việc diễn giải kết quả khai phá đạt được Để giải quyết vấn đề này, luận văn sẽ áp dụng phương pháp đổi chuỗi thời gian sang dạng tỉ số thay đổi giữa các điểm dữ liệu liên tục, sau đó chuyển chuỗi này sang chuỗi ký tự (Huang và Yu [32]) Nghĩa là cho chuỗi thời gian S = (s[0], s[1], …, s[n-1]), ta sẽ thực hiện việc biến đổi chuỗi này sang chuỗi tỉ số thay đổi S’ = ( [0], [1], …, [n-2]) theo công thức :
32 Để biến đổi chuỗi sang dạng ký tự, trong giới hạn thời gian cho phép, đề tài sẽ thực hiện biến đổi chuỗi thời gian S’ sang chuỗi ký tự S’’ bằng các ký tự thể hiện trạng thái của dữ liệu gồm: T (tăng), G (giảm), O (ổn định, không tăng, không giảm)
Motif là mẫu (chuỗi con) không trùng lắp được lặp đi lặp lại nhiều lần trong chuỗi thời gian Hình 4.1 minh họa một motif lặp lại ba lần trong đoạn chuỗi thời gian
Hình 4.1 : Một motif được lặp lại 3 lần [36]
Thuật toán khai phá motif được sử dụng trong nghiên cứu này được giới thiệu tại công trình [15] của tác giả Yoshiki Tanaka và Kuniaki Uehara Thuật toán này có nhiệm vụ tìm tất cả các motif có độ dài khác nhau có thể có trên chuỗi thời gian thu được sau khi hoàn thành giai đoạn tiền xử lý.
Giải thuật khai phá motif được thực hiện như sau:
- Di chuyển cửa sổ trượt với độ dài cho trước trên chuỗi S’’ để thu được các chuỗi con
- Sau đó, tác giả xem mẫu xuất hiện thường xuyên nhất từ tập chuỗi con trên là mẫu tốt nhất cho chuỗi con hiện tại
- Tính giá trị MDL cho mẫu vừa tìm được ở trên và xác định các vị trí bắt đầu xuất hiện của mẫu trên trong chuỗi con S’’
- Sau đó thực hiện thay thế các mẫu này trong chuỗi S’’ bằng một ký tự khác
- Lặp lại quá trình trên cho đến khi không còn mẫu nào có số lần xuất hiện nhiều hơn hai lần thì dừng
Hoàn tất quá trình phân tích, công trình đã xác định mẫu có giá trị MDL nhỏ nhất là mẫu tốt nhất trên chuỗi S’’ Tiếp theo, để hiện thực hóa quá trình khai phá quy luật trên chuỗi thời gian S’’, đề tài tiến hành xem xét tất cả mẫu thu được từ quá trình phân tích trước đó có giá trị hỗ trợ thỏa mãn ngưỡng min_sup đặt trước là mẫu thường xuyên của chuỗi S’’.
Luận văn xem tập thường xuyên được tìm được ở bước 4.4.2.2 ở trên là tập L1 và tiến hành xây dựng tập dự tuyển C2 bằng cách kết hợp các phần các phần tử trong L1 với nhau sau đó tìm ra các phần tử thỏa min_sup cho trước để hình thành nên tập L2
Cho hai phần tử l i , l j thuộc tập L 1, gọi t i , t j lần lượt là thời điểm bắt đầu của l i và l j trên chuỗi thời gian S’’, đặt: ij j i ( ) i deltaT t t length l hai phần tử l i , l j có thể kết hợp với nhau để trở thành một phần tử c thuộc tập dự tuyển C 2 nếu: deltaT ij > 0 khi này : c = l i l j
Tập dự tuyển C3 được xây dựng bằng cách kết hợp hợp các phần tử trong L2 lại với nhau và tìm ra những phần tử thỏa min_sup để tạo nên tập L3 Hai phần tử u i , u j thuộc tập L2 thì u i , u j có dạng sau: u i = l m l n u j = l p l q u i , u j gọi là có thể kết hợp để tạo thành phần tử c thuộc tập dự tuyển C3 nếu thỏa điều kiện sau:
( ) 0 m p ij pq mn n l l deltaT deltaT deltaT length l
khi này c sẽ có dạng: c = l m l n l q nếu support(c) > min_sup thì c thuộc tập thường xuyên L3
Quá trình cứ tiếp tục như vậy cho đến khi không thể tạo thêm kết hợp nào được nữa thì dừng
Luận văn hiện thực giải thuật brute-force để tìm ra tập thường xuyên để khai phá ra luật như đặc tả ở trên nhằm so sánh với giải thuật FP-Growth cải tiến mà luận văn đề xuất
Giải thuật brute-force sẽ lần lượt tạo các kết hợp giống như trên, ở mỗi bước khi lập kết hợp xong, ta sẽ duyệt qua tập này để đếm số lần xuất hiện của từng phần tử
34 trong tập và hình thành tập dự truyển Ck, sau đó sẽ tính support cho từng phần tử trong Ck để tìm ra phần tử có support thỏa min_sup cho trước để đưa vào tập thường xuyên Lk
Sơ đồ sau miêu tả cụ thể từng bước thực hiện giải thuật:
35 Hình 4.2: Sơ đồ khối của giải thuật brute-force
2 Mã giả giải thuật brute-force
- Chiều dài chuỗi thời gian l seq
- Tập các mẫu thường xuyên L 1
- Tập các mẫu thường xuyên L Giải thuật: if(L1.length==0) return [];
L k =L 1 while(Lk.length>0){ temps=[] for(i=0; i