Làm thế nào để xử lý đồng thời nhiều chuỗi thời gian?


14

Tôi có một bộ dữ liệu bao gồm nhu cầu của một số sản phẩm (1200 sản phẩm) trong 25 giai đoạn và tôi cần dự đoán nhu cầu của từng sản phẩm cho giai đoạn tiếp theo. Lúc đầu, tôi muốn sử dụng ARIMA và đào tạo một mô hình cho từng sản phẩm, nhưng vì số lượng sản phẩm và điều chỉnh các tham số (p, d, q), nó rất tốn thời gian và không thực tế. Có nên sử dụng hồi quy trong đó các yêu cầu trước đó là các biến độc lập (Tự động xâm phạm) không?

Tôi có thể biết nếu có bất kỳ phương pháp nào để đào tạo một mô hình duy nhất cho dự đoán nhu cầu của tất cả 1200 sản phẩm không? Tôi sẽ rất biết ơn nếu bạn có thể đề xuất bất kỳ thư viện nào trong Python vì tôi đang sử dụng Python.


3
Gói tiên tiến nhất để phân tích chuỗi thời gian cao mà tôi biết là bigtimeở R. Có lẽ bạn có thể gọi R từ Python để có thể sử dụng nó.
Richard Hardy

Câu trả lời:


11

Nói chung khi bạn có nhiều chuỗi thời gian, bạn sẽ sử dụng một số loại mô hình dựa trên vectơ để mô hình hóa tất cả chúng cùng một lúc. Phần mở rộng tự nhiên của mô hình ARIMA cho mục đích này là mô hình VARIMA (Vector ARIMA). Thực tế là bạn có chuỗi thời gian có nghĩa là bạn sẽ cần chỉ định một số hạn chế tham số nặng nề cho các điều khoản tương quan chéo trong mô hình, vì bạn sẽ không thể xử lý các tham số miễn phí cho mỗi cặp biến chuỗi thời gian.1200

Tôi sẽ đề nghị bắt đầu với một số mô hình dựa trên vectơ đơn giản (ví dụ: VAR, VMA, VARMA) với mức độ thấp và một số hạn chế tham số đơn giản cho tương quan chéo. Xem nếu bạn có thể tìm thấy một mô hình hợp lý kết hợp tương quan chéo với ít nhất một độ trễ, và sau đó đi từ đó. Bài tập này sẽ yêu cầu đọc lên các mô hình chuỗi thời gian dựa trên vector. Các MTSgóibigtimepacakage trong Rcó một số khả năng để đối phó với đa biến chuỗi thời gian, vì vậy nó cũng sẽ có giá trị làm quen với những gói.


Gói tiên tiến nhất để phân tích chuỗi thời gian cao mà tôi biết là bigtimeở R. Theo tôi biết MTS, nó là một minh chứng cho các ví dụ trong sách giáo khoa hơn là một công cụ làm việc thực sự. Một số ví dụ đa biến ở đó chỉ có thể xử lý chuỗi 3 chiều trước khi bóp nghẹt gánh nặng tính toán.
Richard Hardy

@Richard Hardy: Cảm ơn --- Tôi đã chỉnh sửa câu trả lời của mình để đưa vào đây.
Phục hồi Monica

1
Một cách tốt để làm điều này là xem xét một VAR Bayes, hay cụ thể hơn là mô hình VAR Bayes lớn.
Graeme Walsh

6

Như Ben đã đề cập, các phương pháp sách giáo khoa cho chuỗi nhiều thời gian là các mô hình VAR và VARIMA. Trong thực tế, tôi đã không thấy chúng được sử dụng thường xuyên trong bối cảnh dự báo nhu cầu.

Phổ biến hơn nhiều, bao gồm cả những gì nhóm của tôi hiện đang sử dụng, là dự báo phân cấp (cũng xem ở đây ). Dự báo phân cấp được sử dụng bất cứ khi nào chúng tôi có các nhóm theo chuỗi thời gian tương tự: Lịch sử bán hàng cho các nhóm sản phẩm tương tự hoặc có liên quan, dữ liệu du lịch cho các thành phố được nhóm theo khu vực địa lý, v.v ...

Ý tưởng là có một danh sách phân cấp các sản phẩm khác nhau của bạn và sau đó thực hiện dự báo cả ở cấp cơ sở (nghĩa là cho từng chuỗi thời gian riêng lẻ) và ở cấp tổng hợp được xác định bởi phân cấp sản phẩm của bạn (Xem hình ảnh đính kèm). Sau đó, bạn điều chỉnh các dự báo ở các cấp độ khác nhau (sử dụng Từ trên xuống, B Bông lên, Hòa giải tối ưu, v.v.) tùy thuộc vào mục tiêu kinh doanh và mục tiêu dự báo mong muốn. Lưu ý rằng bạn sẽ không phù hợp với một mô hình đa biến lớn trong trường hợp này, nhưng nhiều mô hình tại các nút khác nhau trong hệ thống phân cấp của bạn, sau đó được điều chỉnh bằng phương pháp đối chiếu đã chọn của bạn.

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

Ưu điểm của phương pháp này là bằng cách nhóm các chuỗi thời gian tương tự lại với nhau, bạn có thể tận dụng mối tương quan và tương đồng giữa chúng để tìm ra các mẫu (một biến thể theo mùa) có thể khó phát hiện với một chuỗi thời gian duy nhất. Vì bạn sẽ tạo ra một số lượng lớn các dự báo không thể điều chỉnh thủ công, bạn sẽ cần tự động hóa quy trình dự báo chuỗi thời gian của mình, nhưng điều đó không quá khó - xem tại đây để biết chi tiết .

Một cách tiếp cận tiên tiến hơn, nhưng tương tự về tinh thần, được Amazon và Uber sử dụng, trong đó một Mạng thần kinh RNN / LSTM lớn được đào tạo trên tất cả các chuỗi thời gian cùng một lúc. Về mặt tinh thần, nó tương tự như dự báo phân cấp vì nó cũng cố gắng học các mô hình từ sự tương đồng và tương quan giữa các chuỗi thời gian liên quan. Nó khác với dự báo phân cấp vì nó cố gắng tìm hiểu các mối quan hệ giữa chính chuỗi thời gian, trái ngược với mối quan hệ này được xác định trước và cố định trước khi thực hiện dự báo. Trong trường hợp này, bạn không còn phải đối phó với việc tạo dự báo tự động, vì bạn chỉ điều chỉnh một mô hình, nhưng vì mô hình là một mô hình rất phức tạp, quy trình điều chỉnh không còn là nhiệm vụ giảm thiểu AIC / BIC đơn giản và bạn cần để xem xét các thủ tục điều chỉnh siêu tham số nâng cao hơn,

Xem phản hồi này (và ý kiến) để biết thêm chi tiết.

Đối với các gói Python, PyAF có sẵn nhưng cũng không phổ biến lắm. Hầu hết mọi người sử dụng gói HTS trong R, có nhiều hỗ trợ cộng đồng hơn. Đối với các phương pháp tiếp cận dựa trên LSTM, có các mô hình DeepAR và MQRNN của Amazon là một phần của dịch vụ mà bạn phải trả tiền. Một số người cũng đã triển khai LSTM để dự báo nhu cầu bằng cách sử dụng Keras, bạn có thể tra cứu chúng.


1
Như một bên. AUTOBOX triển khai loại mô hình phân cấp mà bạn đã đề cập trong khi sử dụng tổng số NHÓM như một chuỗi lái xe khả thi để AID dự đoán TRẺ EM sử dụng các mô hình SARMAX. Sự không chắc chắn trong các dự báo của trẻ cũng là một hàm tích lũy của sự không chắc chắn ở cha mẹ trong khi kết hợp khả năng của các xung trong tương lai ở cả hai .. Rất vui khi thấy người khác sử dụng phương pháp này.
IrishStat

Amazon gần đây đã mở thuật toán DeepAR có nguồn gốc trong khuôn khổ GlamonTS, thúc đẩy khung MxNet, mặc dù tôi thấy tài liệu này hơi thiếu một chút vào thời điểm này. aws.amazon.com/bloss/opensource/ từ
hardikudeshi

5

Vấn đề với các gói phù hợp đã được đề xuất là chúng không thể xử lý thống nhất cấu trúc xác định tiềm ẩn như xung, dịch chuyển cấp / bước, xung theo mùa và xu hướng thời gian hoặc xử lý hiệu quả các nguyên nhân do người dùng đề xuất theo https: // autobox.com/pdfs/SARMAX.pdf

Ngoài ra, thời gian tính toán có thể là một biến chứng nghiêm trọng. AUTOBOX (mà tôi đã giúp phát triển) có giai đoạn xây dựng mô hình rất tinh vi, lưu trữ các mô hình và tùy chọn dự báo rất nhanh, sử dụng lại mô hình đã phát triển trước đó để giảm thời gian dự báo xuống một phần nhỏ thời gian phát triển mô hình nghiêm ngặt trong khi điều chỉnh dự báo mới cho gần đây dữ liệu quan sát sau khi mô hình đã được phát triển và lưu trữ. Điều này đã được triển khai cho dự án dự báo 600.000 cửa hàng của Annheuser-Busch cho khoảng hơn 50 mặt hàng có tính đến Giá và Thời tiết.

Các mô hình có thể được cập nhật theo kiểu lăn, thay thế các mô hình trước đó khi cần thiết.

Không cần hạn chế tham số HOẶC bỏ qua tác động đồng thời của các biến nhân quả như trong VAR và VARIMA trong khi chỉ dựa vào quá khứ của tất cả các chuỗi ARIMA.

Không cần phải có 1 mô hình với 1 bộ tham số như các mô hình có thể và nên được tùy chỉnh / tối ưu hóa cho từng chuỗi riêng lẻ.

Thật không may, không có giải pháp Python nào nhưng hy vọng sẽ tồn tại mãi mãi.


1
Nghe có vẻ thú vị. Chỉ là một vấn đề nhỏ: ngay cả trong một thứ đơn giản như VAR, mỗi chuỗi có phương trình riêng, do đó, chỉ cần có 1 mô hình với 1 bộ tham số không phải là vấn đề đáng lo ngại. Trừ khi bạn đề xuất một số mô hình cho cùng một chuỗi, đó có thể là một ý tưởng tốt từ quan điểm của các kết hợp dự báo.
Richard Hardy

"? để đào tạo một mô hình duy nhất cho dự đoán nhu cầu của tất cả các sản phẩm năm 1200": Mục tiêu tôi mất mà theo nghĩa đen như 1 loại phương trình với 1 bộ cố định / thông số toàn cầu ước tính từ tất cả 1200 theo chuỗi thời gian" Có lẽ tôi quá đọc nó.
IrishStat

Hoặc có lẽ tôi đã sai.
Richard Hardy

3

1200 sản phẩm là động lực chính cho chiều hướng của vấn đề của bạn. Bây giờ bạn chỉ có 25 tiết. Đây là rất ít dữ liệu, không đủ để thực hiện bất kỳ loại phân tích tương quan chăn. Nói cách khác, bạn không có dữ liệu để dự báo đồng thời tất cả các sản phẩm mà không làm giảm tính chiều. Điều này khá nhiều loại bỏ tất cả VARMA và các mô hình lý thuyết tốt đẹp khác. Không thể đối phó với các hệ số của các mô hình này, có quá nhiều trong số chúng để ước tính.

Hãy xem xét một phân tích tương quan đơn giản. Bạn sẽ cần (1200x1200 + 1200) / 2 ô trong ma trận hiệp phương sai / tương quan. Bạn chỉ có 25 điểm dữ liệu. Ma trận sẽ được xếp hạng đủ để mức độ lớn. Bạn định làm gì? Nhìn rộng ra, bạn có hai cách tiếp cận đơn giản: dự báo riêng biệt và mô hình nhân tố.

Cách tiếp cận đầu tiên rất rõ ràng: bạn chạy từng sản phẩm một cách độc lập. Biến thể là nhóm chúng theo một số tính năng, ví dụ như khu vực, chẳng hạn như "đóng cửa nam".

di=jFjβji+eiFj

Nếu đó là một yếu tố ngoại sinh, thì bạn cần phải có được betas bằng cách hồi quy chuỗi trên các yếu tố này một cách riêng lẻ. Đối với PCA, bạn có thể thực hiện một PCA mạnh mẽ và có được một vài yếu tố đầu tiên với trọng lượng của chúng là betas của bạn.

F^j


Tôi thấy quan điểm của bạn về 25 giai đoạn thực hiện trong một chuỗi thời gian rất ngắn, nhưng nếu chúng là giá trị hàng tháng thì sao? Sau đó, OP có hai năm dữ liệu hàng tháng, đủ để nắm bắt một số tính thời vụ, hoặc ít nhất là sử dụng làm mịn theo cấp số nhân đơn giản, không?
Skander H. - Tái lập Monica

@SkanderH., 25 điểm có thể đủ để chạy một chuỗi (tức là mỗi chuỗi riêng) hoặc tổng hợp. Quan điểm của tôi là nó không đủ để chạy hệ thống này.
Aksakal

Hoặc chúng có thể là các yếu tố ngoại sinh, ví dụ như những yếu tố bạn thu được bằng phân tích PCA. Có lẽ nội sinh ?
Richard Hardy

1

Tôi không chắc liệu bạn có quan tâm đến các giải pháp dựa trên đám mây hay không, nhưng Amazon đưa ra thuật toán mà họ gọi là "DeepAR" có sẵn thông qua AWS SageMaker, như được thấy ở đây .

Thuật toán này được dành riêng để có thể học hỏi từ nhiều chuỗi thời gian đầu vào để tạo dự báo, bao gồm các tính năng tĩnh và động; như đã thấy trong đoạn trích này từ trang được liên kết ở trên:

Đầu vào đào tạo cho thuật toán DeepAR là một hoặc, tốt nhất là, chuỗi thời gian mục tiêu nhiều hơn đã được tạo ra bởi cùng một quy trình hoặc các quy trình tương tự. Dựa trên bộ dữ liệu đầu vào này, thuật toán huấn luyện một mô hình học gần đúng quy trình / quy trình này và sử dụng nó để dự đoán chuỗi thời gian đích phát triển như thế nào. Mỗi chuỗi thời gian đích có thể được liên kết tùy ý với một vectơ các tính năng phân loại tĩnh (không phụ thuộc thời gian) được cung cấp bởi trường mèo và vectơ của chuỗi thời gian động (phụ thuộc thời gian) được cung cấp bởi trường Dynamic_feat.

Thật không may, theo như tôi có thể nói, họ không cung cấp thuật toán này để sử dụng ngoại tuyến / tự lưu trữ.

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.