Làm thế nào để xử lý dự báo chuỗi thời gian trực tuyến?


9

Tôi đã được giải quyết vấn đề sau đây. Tôi có một hệ thống thời gian thực và mỗi khung thời gian tôi đọc giá trị hiện tại của nó, tạo ra một chuỗi thời gian (chẳng hạn như 1, 12, 2, 3, 5, 9, 1, ...). Tôi muốn biết các phương pháp (thống kê và học máy) để dự báo giá trị tiếp theo theo kiểu trực tuyến (nghĩa là mỗi khi đọc một giá trị mới). Tôi đã thử RIM ARIMA và Weka's SMOreg, chúng cho kết quả dự đoán tốt, nhưng chúng hơi chậm vì mỗi khi có giá trị mới tôi phải làm lại toán.

PS Sẽ thật tuyệt nếu phương pháp này có khoảng tin cậy.

Câu trả lời:


4

Trong hệ thống thời gian thực của bạn là thời gian quan sát không đồng nhất và dữ liệu không cố định? Nếu bạn muốn một cái gì đó đơn giản và nhanh chóng, tôi khuyên bạn nên sử dụng các toán tử loại EMA không đồng nhất:

Toán tử trên chuỗi thời gian không đồng nhất

Họ cập nhật EMA ( ) với mỗi quan sát mới theo,value

value+=α(newDatavalue),α=1exp(Δtτ)

với một tham số làm mịn / điều chỉnh. Đó là một cách đơn giản để ước tính một kỳ vọng.τ

Ngoài ra người ta có thể tạo một ước tính trung bình trực tuyến đơn giản thông qua bản cập nhật

sg=sgn(newDatamed)med+=ϵ(sgmed)

Trong thực tế, bạn muốn nhỏ (hoặc phân rã với nhiều quan sát hơn). Lý tưởng nhất là nên phụ thuộc vào mức độ sai lệch của các bản cập nhật; tức là nếu thực sự bằng trung vị thì phải đồng nhất trên . Sau đó, bạn có thể mở rộng cấu trúc này thành cấu trúc loại cây nhị phân cân bằng độ sâu để có được lượng tử cách đều nhau.ϵ med sg { - 1 , 1 } d 2 d + 1 - 1ϵϵmedsg{1,1}d2d+11

Sự kết hợp của những điều trên sẽ cung cấp cho bạn một sự phân phối dữ liệu trực tuyến hợp lý. Cây rất khó để lấy đúng, tôi có triển khai cả hai trong C ++ nếu bạn quan tâm. Tôi sử dụng cả hai trong thực tế rất nhiều (dữ liệu đánh dấu thời gian thực tài chính) và chúng đã hoạt động tốt.


Chào Murat! Tôi đã tạo một siêu liên kết đến bài báo mà bạn đã đăng và tập trung vào phương trình của bạn. Xem lịch sử bài đăng nếu bạn muốn xem làm thế nào để làm điều này để tham khảo trong tương lai. Ngoài ra còn có một số nút hữu ích dọc phía trên cùng của hộp văn bản xuất hiện khi bạn viết câu trả lời sẽ tự động thực hiện nhiều nội dung cho bạn (ví dụ: nhập hình ảnh, liên kết, in đậm / in nghiêng và hơn thế nữa). (+1, btw)
Macro

3

Trước tiên, bạn cần phải nhúng thời gian vào dữ liệu của bạn. Ví dụ: lấy đầu vào đầu tiên [1, 12, 2, 3] và đầu ra tương ứng [5] và làm đầu vào thứ hai bạn lấy [12, 2, 3, 5] và đầu ra tương ứng [9]. (Đây là nhúng với độ trễ 4 nhưng bạn có thể chọn giá trị khác phù hợp hơn.)

Bây giờ bạn có một vấn đề dự đoán hợp lệ. Đối với những dữ liệu này, bạn có thể áp dụng các quy trình Gaussian trực tuyến . Đây là một phương pháp học máy thực hiện chính xác những gì bạn mô tả và nó cung cấp khoảng tin cậy.

Nếu mô hình của bạn không cố định, bạn có thể thử tiện ích mở rộng không cố định, trình theo dõi đệ quy tối thiểu nhân . Nhân tiện, bài báo đó bao gồm mã Matlab cho các trường hợp đứng yên và không cố định.

Các phương pháp này khá nhanh: độ phức tạp tính toán của chúng là bậc hai về số lượng dữ liệu bạn lưu trữ trong bộ nhớ (thường là một phần nhỏ, đại diện cho tất cả dữ liệu được xử lý). Đối với các phương thức nhanh hơn, tôi khuyên dùng ví dụ phương pháp bình phương tối thiểu kernel, nhưng độ chính xác của chúng thì ít hơn.


Quy trình bạn đề xuất, có báo cáo khi thay đổi cấp độ hoặc thay đổi xu hướng thời gian xảy ra không? Nó có phát hiện những thay đổi trong các tham số hoặc thay đổi về phương sai theo thời gian không? Liệu nó có phân biệt giữa bộ nhớ tự động hồi quy theo mùa và người giả theo mùa?
IrishStat

@IrishStat Tôi nghĩ rằng câu hỏi của bạn là hùng biện. Nếu một mô hình có thể có một đệ quy đơn giản để cập nhật mô hình thì nó không thể có tất cả các phức tạp mà bạn mô tả. Đôi khi điều quan trọng hơn là có được một câu trả lời đúng hơn là một câu trả lời nhanh mà kém. Đó là lý do tại sao trong câu trả lời của tôi, tôi đã nói chỉ làm điều đó nếu mô hình phù hợp với dữ liệu!
Michael R. Chernick

1
@IrishStat Các phương thức này là "không tham số", có nghĩa là chúng không giả định bất kỳ mô hình cụ thể nào của dữ liệu (chúng chỉ "phù hợp" với dữ liệu). Họ không báo cáo thay đổi xu hướng. Tuy nhiên, chúng báo cáo lỗi dự đoán, vì vậy nếu bạn muốn tìm thay đổi xu hướng, có lẽ bạn chỉ cần nhìn vào khi lỗi dự đoán đủ lớn.
Steven

Tôi không quen thuộc với các quy trình Gaussian thưa thớt trực tuyến nhưng khi nhìn vào bài viết được liên kết, tôi không nghĩ rằng việc mô tả chúng là "không khác biệt" khi chúng sử dụng các quy trình Gaussian cho các bản phân phối trước đó và liên quan đến một số tham số trong "Kalman" của chúng -filter giống như "đệ quy. Dường như một số cấu trúc mô hình phải được ẩn trong công thức. Tôi vẫn nghĩ rằng ý kiến ​​của IrishStat được áp dụng.
Michael R. Chernick

3

Bộ lọc Kalman là một thuật toán đệ quy. Nó có quan sát mới và kết hợp nó với dự đoán trước đó. Nó sẽ là tốt để sử dụng nhưng chỉ khi nó là một mô hình thích hợp cho dữ liệu của bạn. Tôi không chắc việc cập nhật khoảng dự đoán dễ dàng như thế nào.


0

Tôi không biết nếu bạn đã thử điều này, nhưng trong R khi bạn sử dụng hàm Arima, bạn có thể chỉ định mô hình làm đầu vào. Vì vậy, nếu ban đầu bạn tìm thấy một mô hình arima, giả sử Arima (1,2,1) với các thành phần làm mịn tương ứng, sau đó bạn có thể sửa mô hình trong các lần lặp lại sau để nó không cố gắng chỉnh lại mô hình. Nếu dữ liệu của bạn đứng yên trong trường hợp đó, dự đoán có thể đủ tốt cho bạn - và nhanh hơn nhiều.

Hi vọng điêu nay co ich..

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.