Có thể tự động hóa dự báo chuỗi thời gian?


18

Tôi muốn xây dựng một thuật toán có thể phân tích bất kỳ chuỗi thời gian nào và "tự động" chọn phương pháp dự báo truyền thống / thống kê tốt nhất (và các tham số của nó) cho dữ liệu chuỗi thời gian được phân tích.

Nó sẽ có thể làm một cái gì đó như thế này? Nếu có, bạn có thể cho tôi một số lời khuyên về cách này có thể được tiếp cận?


3
Không, điều này không thể đạt được một cách hợp lý. Thông thường, không có đủ dữ liệu để phân biệt giữa hai mô hình hợp lý, không bao giờ bận tâm đến tất cả các mô hình có thể. Để đạt được một mô hình tốt nhất sẽ đòi hỏi vật lý phải được biết một cách tuyệt đối và rất thường xuyên các giả định mô hình thậm chí không được biết đến, và / hoặc không được kiểm chứng / không thể kiểm chứng.
Carl

3
Không. Không có cách nào để xác định mô hình nào là tốt nhất. Python không liên quan trong cuộc thảo luận này. Tuy nhiên, có những nỗ lực với kết quả tốt. Ví dụ: dự án github.com/facebook/prophet . Nó cũng có ràng buộc Python.
Cagdas Ozgenc

3
Tôi đang bỏ phiếu để bỏ ngỏ vì tôi nghĩ đó là một câu hỏi hợp lý - ngay cả khi câu trả lời là "không". Tôi khuyên bạn nên xóa python khỏi tiêu đề, bởi vì nó không liên quan hoặc đặc biệt là về chủ đề ở đây.
mkt - Tái lập Monica

1
Tôi đã loại bỏ python khỏi tiêu đề như đề xuất. Cảm ơn bạn cho câu trả lời của bạn.
StatsNewbie123

2
Xem định lý "không ăn trưa miễn phí".
AdamO

Câu trả lời:


20

Trước tiên, bạn cần lưu ý rằng cách tiếp cận được phác thảo bởi IrishStat là dành riêng cho các mô hình ARIMA, không phải cho bất kỳ nhóm mô hình chung nào.

Để trả lời câu hỏi chính của bạn "Có thể tự động hóa dự báo chuỗi thời gian không?":

Vâng, đúng vậy. Trong lĩnh vực dự báo nhu cầu của tôi, hầu hết các gói dự báo thương mại đều làm như vậy. Một số gói nguồn mở cũng làm như vậy, đáng chú ý nhất là các chức năng auto.arima () (dự báo ARIMA tự động) và ETS () (dự báo làm mịn theo cấp số tự động) của Rob Hyndman từ gói Dự báo nguồn mở trong R xem tại đây để biết chi tiết về hai chức năng này . Ngoài ra còn có một triển khai Python của auto.arima được gọi là Kim tự tháp , mặc dù theo kinh nghiệm của tôi, nó không hoàn thiện như các gói R.

Cả các sản phẩm thương mại mà tôi đã đề cập và các gói nguồn mở mà tôi đã đề cập đều hoạt động dựa trên ý tưởng sử dụng tiêu chí thông tin để chọn dự báo tốt nhất: Bạn phù hợp với một loạt các mô hình và sau đó chọn mô hình có AIC, BIC, AICc thấp nhất, vv .... (thông thường, việc này được thực hiện thay cho việc xác thực mẫu).

Tuy nhiên, có một cảnh báo lớn: tất cả các phương pháp này hoạt động trong một họ mô hình. Họ chọn mô hình tốt nhất có thể trong số một nhóm mô hình ARIMA hoặc mô hình tốt nhất có thể trong số các mô hình làm mịn theo cấp số nhân.

Sẽ khó khăn hơn nhiều nếu bạn muốn chọn từ các họ mô hình khác nhau, ví dụ nếu bạn muốn chọn mô hình tốt nhất từ ​​ARIMA, làm mịn theo cấp số nhân và phương pháp Theta. Về lý thuyết, bạn có thể làm như vậy giống như cách bạn làm trong một họ mô hình, tức là bằng cách sử dụng tiêu chí thông tin. Tuy nhiên, trong thực tế, bạn cần tính toán AIC hoặc BIC theo cách chính xác giống nhau cho tất cả các mô hình được xem xét và đó là một thách thức đáng kể. Có thể tốt hơn khi sử dụng xác thực chéo chuỗi thời gian hoặc ngoài xác thực mẫu thay vì tiêu chí thông tin, nhưng điều đó sẽ chuyên sâu hơn về mặt tính toán (và tẻ nhạt để mã hóa).

Gói Prophet của Facebook cũng tự động hóa việc tạo dự báo dựa trên các Mô hình phụ gia chung Xem tại đây để biết chi tiết . Tuy nhiên, Prophet chỉ phù hợp với một mô hình duy nhất, mặc dù là một mô hình rất linh hoạt với nhiều tham số. Giả định ngầm của Prophet là GAM là "mô hình duy nhất thống trị tất cả", có thể không hợp lý về mặt lý thuyết nhưng rất thực dụng và hữu ích cho các tình huống trong thế giới thực.

Một cảnh báo khác áp dụng cho tất cả các phương pháp được đề cập ở trên: Có lẽ bạn muốn thực hiện dự báo chuỗi thời gian tự động vì bạn muốn dự báo nhiều chuỗi thời gian, quá nhiều để phân tích thủ công. Nếu không, bạn chỉ có thể tự làm thí nghiệm và tự mình tìm ra mô hình tốt nhất. Bạn cần lưu ý rằng một cách tiếp cận dự báo tự động sẽ không bao giờ tìm thấy mô hình tốt nhất cho từng chuỗi thời gian - nó sẽ đưa ra một mô hình hợp lý trung bình trong tất cả các chuỗi thời gian, nhưng vẫn có thể một số trong số các chuỗi thời gian đó sẽ có các mô hình tốt hơn các mô hình được chọn theo phương pháp tự động. Xem bài nàycho một ví dụ về điều này. Nói một cách đơn giản, nếu bạn chuẩn bị dự báo tự động - bạn sẽ phải chấp nhận dự báo "đủ tốt" thay vì dự báo tốt nhất có thể cho từng chuỗi thời gian.


Cảm ơn bạn cho một câu trả lời sâu sắc như vậy. Thành thật mà nói, ý tưởng ban đầu của tôi khi đặt câu hỏi này là có thể chọn từ các họ người mẫu khác nhau.
StatsNewbie123

Điều gì xảy ra nếu thuật toán được áp dụng cho một miền cụ thể hơn, như dự báo kinh doanh (ví dụ để lập kế hoạch sản xuất và quản lý hàng tồn kho)? Bạn có nghĩ rằng nó có thể đạt được kết quả tốt hơn?
StatsNewbie123

2
@JoanaClaudino vâng, điều đó sẽ dễ dàng hơn - đó là ý chính của những gói dự báo nhu cầu thương mại làm. Nhưng điều này dễ dàng hơn vì thông thường khi bạn giới hạn bản thân trong một lĩnh vực kinh doanh cụ thể, bạn có thể giới hạn bản thân trong một họ mô hình cụ thể (chuỗi thời gian đến từ cùng một lĩnh vực kinh doanh sẽ có các đặc điểm tương tự về thời vụ, mật độ dữ liệu, v.v ... . an toàn khi cho rằng một gia đình sẽ phù hợp với tất cả họ)
Skander H. - Tái lập lại

Được rồi, tôi hiểu rồi. Cảm ơn bạn một lần nữa vì sự giúp đỡ tuyệt vời như vậy.
StatsNewbie123

11

Cách tiếp cận được đề xuất của tôi bao gồm các mô hình tổng quát hơn nhiều so với ARIMA vì chúng bao gồm tiềm năng cho các hình nộm theo mùa có thể thay đổi theo thời gian, nhiều cấp độ, nhiều xu hướng, tham số có thể thay đổi theo thời gian và thậm chí phương sai lỗi có thể thay đổi theo thời gian. Họ này được gọi chính xác hơn là các mô hình ARMAX nhưng để minh bạch hoàn toàn không loại trừ một biến thể (hiếm) có cấu trúc nhân.

Bạn đã hỏi những lời khuyên và tôi tin rằng đây có thể là một điều tốt để bạn bắt đầu.

Tôi sẽ đề nghị bạn viết mã để theo dõi / mô phỏng quy trình / quy trình công việc này. "Mô hình tốt nhất" có thể được tìm thấy bằng cách đánh giá tiêu chí mà bạn chỉ định ... đó có thể là MSE / AIC của dữ liệu được trang bị hoặc đó có thể là MAPE / SMAPE của dữ liệu bị giữ lại hoặc bất kỳ tiêu chí nào bạn chọn.

Lưu ý rằng việc chi tiết hóa từng bước này có thể khá đơn giản nếu bạn không biết về một số yêu cầu / mục tiêu / ràng buộc cụ thể của phân tích chuỗi thời gian NHƯNG có thể phức tạp hơn nếu bạn hiểu sâu hơn / học hỏi / đánh giá cao sự phức tạp / cơ hội có mặt trong phân tích chuỗi thời gian kỹ lưỡng.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Tôi đã được yêu cầu cung cấp thêm hướng dẫn về cách người ta nên tự động hóa mô hình chuỗi thời gian (hoặc mô hình hóa nói chung) /stats//search?q=peeling+an+onion chứa một số hướng dẫn của tôi về "lột hành" và các nhiệm vụ liên quan.

AUTOBOX thực sự chi tiết và hiển thị các bước tạm thời vì nó tạo thành một mô hình hữu ích và có thể là một giáo viên hữu ích trong vấn đề này. Toàn bộ ý tưởng khoa học là "thêm những gì có vẻ cần thiết" và "xóa những gì dường như không hữu ích". Đây là quá trình lặp được đề xuất bởi Box và Bacon trong thời gian trước đó.

Các mô hình cần phải đủ phức tạp (đủ ưa thích) nhưng không quá phức tạp (ưa thích). Giả sử rằng các phương pháp đơn giản làm việc với các vấn đề phức tạp không phù hợp với phương pháp khoa học theo Roger Bacon và hàng tấn tín đồ của Bacon. Như Roger Bacon đã từng nói và tôi thường diễn giải: Làm khoa học là tìm kiếm các mẫu lặp đi lặp lại. Để phát hiện sự bất thường là xác định các giá trị không tuân theo các mẫu lặp đi lặp lại. Đối với bất cứ ai biết các cách của Tự nhiên sẽ dễ dàng nhận thấy những sai lệch của cô ấy và mặt khác, bất cứ ai biết những sai lệch của cô ấy sẽ mô tả chính xác hơn các cách của cô ấy. Người ta học các quy tắc bằng cách quan sát khi các quy tắc hiện tại không thành công.

Theo lời của tôi "Tukey đề xuất Phân tích dữ liệu thăm dò (EDA) trong đó đề xuất các sơ đồ tinh chỉnh mô hình dựa trên sự thiếu hụt mô hình rõ ràng được đề xuất bởi dữ liệu". Đây là trái tim của AUTOBOX và của khoa học. EDA là để xem những gì dữ liệu có thể cho chúng ta biết ngoài nhiệm vụ kiểm tra giả thuyết hoặc mô hình hóa chính thức.

Thử nghiệm litmus của một chương trình mô hình tự động khá đơn giản. Nó có tách tín hiệu và nhiễu mà không phù hợp quá mức? Bằng chứng thực nghiệm cho thấy rằng điều này có thể và đã được thực hiện. Độ chính xác dự báo thường gây hiểu nhầm vì tương lai không chịu trách nhiệm cho quá khứ và tùy thuộc vào nguồn gốc mà bạn chọn kết quả có thể và làm khác nhau.


Cảm ơn bạn rất nhiều. Câu trả lời của bạn là vô cùng hữu ích!
StatsNewbie123

Cảm ơn bạn, IrishStat. Điều này là sâu sắc. Chúng ta có bao giờ biện minh để giữ một tham số trái ngược với "xóa tham số", mặc dù tham số không có ý nghĩa thống kê?
ColorStatistic

1
Đúng. nếu nó cung cấp cho bạn một "câu trả lời dễ chịu" hơn. Một hệ số độ dốc không khác với 0,0 có thể đưa ra dự báo thực tế hơn (nếu không có ý nghĩa thống kê), nếu không, việc mang các hệ số dư thừa là không hợp lý và gây ra sự không chắc chắn trong dự báo phương sai. Một số tác giả không thể đối phó với các thử nghiệm về sự cần thiết và đầy đủ một cách mù quáng / ngây thơ cho rằng nhận dạng mô hình là một quá trình 1 bước trong khi Box và Jenkins (và mọi người khác!) Quan tâm đến việc làm cho mô hình trở nên phức tạp khi cần nhưng không quá phức tạp .. đọc Albert E., JW Tukey et al để biết thêm về điều này.
IrishStat

3
"Phương pháp dự báo tự động được đề xuất này sẽ tìm ra mô hình tốt nhất cho từng chuỗi thời gian bằng cách điều chỉnh hình thức của mô hình tức là tùy chỉnh nó giống như một bộ đồ tùy chỉnh." Đó là một tuyên bố khá mạnh mẽ - nếu chính xác, điều đó có nghĩa là cách tiếp cận này sẽ chiến thắng trong các cuộc thi M3, M4. Có nó?
Skander H. - Tái lập Monica

1
@ joana-claudino Tôi đặc biệt quan tâm đến dự án ISEG của bạn vì tôi cũng quan tâm đến việc phát triển phiên bản Python của các quy trình được đề xuất của mình. Điều này tất nhiên sẽ được tắt từ SE.
IrishStat
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.