Xác thực chéo cho dữ liệu thời gian với hồi quy


8

Tôi quen thuộc với xác thực chéo "thông thường", nhưng bây giờ tôi muốn đưa ra dự đoán về thời gian trong khi sử dụng xác thực chéo với chức năng hồi quy tuyến tính đơn giản. Tôi viết ra một ví dụ đơn giản, để giúp làm rõ hai câu hỏi của tôi: một về phân tách kiểm tra / thử nghiệm, một câu hỏi về cách đào tạo / kiểm tra cho các mô hình khi mục đích là dự đoán cho n khác nhau, với n các bước dự đoán, trong nâng cao.

(1) Dữ liệu

Giả sử tôi có dữ liệu cho các mốc thời gian 1, ..., 10 như sau:

timeseries = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9]

(2) Chuyển đổi dữ liệu thành định dạng hữu ích cho việc học có giám sát

Theo tôi hiểu, chúng ta có thể sử dụng "độ trễ", tức là thay đổi dữ liệu để tạo ra một bộ dữ liệu phù hợp cho việc học có giám sát:

input = [NaN,0.5,0.3,10,4,5,6,1,0.4,0.1]
output/response = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9]

Ở đây tôi chỉ đơn giản là thay đổi thời gian một lần để tạo ra vector đầu ra. Theo như tôi hiểu, bây giờ tôi có thể sử dụng đầu vào làm đầu vào cho mô hình hồi quy tuyến tính và đầu ra cho phản hồi (NaN có thể được xấp xỉ thay thế bằng một giá trị ngẫu nhiên).

(3) Câu 1: Xác thực chéo ("backtesting")

Nói rằng tôi muốn thực hiện chia 2 lần, tôi có phải chuyển tàu cũng như các bộ thử nghiệm không?

Tức là một cái gì đó như:

Tập xe lửa:

Biến độc lập: [NaN, 0,5,0.3,10,4,5]

Biến đầu ra / phản hồi: [0,5,0.3,10,4,5,6]

Tập kiểm tra:

Biến độc lập: [1,0.4,0.1]

Biến đầu ra / phản hồi: [0.4,0.1,0.9]

(ii) Câu 2: Dự đoán độ trễ khác nhau trước :

Rõ ràng, tôi đã thay đổi phụ thuộc vào các biến độc lập bằng 1. Giả sử bây giờ tôi muốn đào tạo một mô hình có thể dự đoán trước 5 bước thời gian - tôi có thể giữ độ trễ này của một, và tuy nhiên sử dụng mô hình để dự đoán n + 1 , ..., n + 5, ... hoặc tôi có thay đổi sự thay đổi từ biến độc lập sang biến phụ thuộc thành 5 không? Chính xác thì sự khác biệt là gì?


2
Theo truyền thống, bạn sẽ xác nhận hợp lệ các mô hình chuỗi thời gian bằng cách sử dụng cửa sổ cuộn trong mẫu. Nhưng gần đây, một số phương pháp khác cũng đã được phát triển; xem bài đăng trên blog của Rob J. Hyndman "Xác thực chéo cho chuỗi thời gian" . Nhân tiện, câu hỏi của bạn có thể là một bản sao của một trong những câu hỏi trước đó về xác thực chéo chuỗi thời gian - xem những câu hỏi này .
Richard Hardy

Tôi hiểu điều đó, nhưng cửa sổ cuộn được sử dụng trong cả A và B. Câu hỏi của tôi là nếu tôi cần cho cả bộ tàu và bộ kiểm tra và đầu vào và một vectơ đầu ra (đã thay đổi)

Tôi không nghĩ câu hỏi của mình là trùng lặp - ít nhất là tôi chưa tìm thấy câu trả lời cho câu hỏi của mình

Câu trả lời:


11

Đối với câu hỏi đầu tiên, như Richard Hardy chỉ ra, có một bài viết blog tuyệt vời về chủ đề này. Ngoài ra còn có bài nàybài này mà tôi đã tìm thấy rất hữu ích.

Đối với câu hỏi thứ hai, bạn cần tính đến hai cách tiếp cận cơ bản để dự báo chuỗi nhiều lần: Dự báo đệ quy và dự báo trực tiếp:

  • Trong dự báo đệ quy (còn gọi là dự báo lặp), bạn chỉ huấn luyện mô hình của mình để dự báo trước một bước. Sau khi đào tạo xong, bạn áp dụng mô hình cuối cùng của mình một cách đệ quy để dự báo trước 1 bước, 2 bước trước, v.v ... cho đến khi bạn đạt được mong muốnnbước chân trời dự báo. Để làm điều này, bạn đưa dự báo từ mỗi bước kế tiếp vào mô hình để tạo bước tiếp theo. Cách tiếp cận này được sử dụng bởi các thuật toán dự báo truyền thống như ARIMA và thuật toán làm mịn theo cấp số nhân, và cũng có thể được sử dụng cho dự báo dựa trên Machine Learning (xem bài này để biết ví dụ và bài này để thảo luận).
  • Dự báo trực tiếp là khi bạn huấn luyện một mô hình riêng cho từng bước (vì vậy bạn cố gắng "trực tiếp" dự báo nth bước về phía trước thay vì vươn tới ncác bước đệ quy. Xem Ben Taied và cộng sự. cho một cuộc thảo luận về dự báo trực tiếp và các phương pháp kết hợp phức tạp hơn.

Lưu ý rằng bài đăng trên blog của Hyndman về xác thực chéo cho chuỗi thời gian bao gồm cả một bước trước và dự báo trực tiếp.


Để làm rõ dự báo đệ quy (dựa trên các ý kiến):

  1. Đầu tiên bạn đào tạo mô hình của bạn.
  2. Sau khi đào tạo xong, bạn thực hiện [Y1,Y2,....Yt] tính toán Y^t+1 (đây là dự báo trước 1 bước của bạn),
  3. sau đó bạn sử dụng [Y2,...,Yt,Y^t+1] tính toán Y^t+2, sau đó [Y3,...,Yt,Y^t+1,Y^t+2] tính toán Y^t+3, v.v ... cho đến khi bạn đạt được Y^t+n.

(Đây Y là các giá trị thực tế và Y^ là các giá trị dự báo.)


Cảm ơn, cũng cho các liên kết! Vẫn còn một số câu hỏi: (1) Nếu tôi hiểu, dự báo lặp là lag n = 1, trong khi dự báo trực tiếp là lag n> 1. Điều này có đúng không? Thực tế, khi tôi đang đào tạo / kiểm tra mô hình của mình, điều này sẽ xác định mức độ tôi phải thay đổi trong một vấn đề được giám sát theo chuỗi thời gian (ví dụ: nếu tôi muốn đưa ra dự đoán trước 5 bước, tôi sử dụng dấu thời gian t-5 để dự đoán t)? (2) Bạn đề cập đến việc sử dụng dự đoán để lặp đi lặp lại cập nhật các mô hình, tôi đoán đây phải là trường hợp cả cho sự chậm chạp n = 1, n> 5. Tuy nhiên, khi chúng tôi áp dụng mô hình tôi giả thực dữ liệu đến có thể được sử dụng?

@TestGuest "(1) Nếu tôi hiểu, dự báo lặp là lag n = 1, trong khi dự báo trực tiếp là lag n> 1. Điều này có đúng không? Thực tế, khi tôi đang đào tạo / kiểm tra mô hình của mình, điều này sẽ xác định tôi có bao nhiêu để thay đổi vấn đề được giám sát theo chuỗi thời gian (ví dụ: nếu tôi muốn thực hiện 5 bước trong dự đoán trước, tôi có sử dụng dấu thời gian t-5 để dự đoán t) không? " - Đúng rồi .
Skander H.

@TestGuest "(2) Bạn đề cập đến việc sử dụng các dự đoán để cập nhật lặp lại mô hình, tôi đoán đây phải là trường hợp cho cả lag n = 1, n> 5. Tuy nhiên, một khi chúng ta áp dụng mô hình tôi giả sử có thể sử dụng dữ liệu đến thực ? " - ** Không chính xác. Mô hình đã được đào tạo trong trường hợp này và không còn cần cập nhật. Bạn đang áp dụng một mô hình đã được đào tạo - bạn chỉ đơn giản cung cấp các đầu ra của mô hình trở lại một cách đệ quy ... [tiếp tục]
Skander H.

Vì vậy, trước tiên bạn [Y1,Y2,....Yt] tính toán Y^t+1 (đây là dự báo trước 1 bước của bạn), sau đó bạn sử dụng [Y2,...,Yt,Y^t+1] tính toán Y^t+2, sau đó [Y3,...,Yt,Y^t+1,Y^t+2] tính toán Y^t+3, và cứ như vậy cho đến khi bạn đạt được Y^t+n (Đây Y là các giá trị thực tế và Y^là các giá trị dự báo.
Skander H.

Cảm ơn bạn! Tuy nhiên, điều lạ lùng đối với tôi là không thay thế các dự đoán bằng các giá trị thực, ngay khi chúng có sẵn - nếu mục tiêu là có kết quả tốt nhất có thể. Vậy, tại sao vậy? Cảm ơn một lần nữa ..
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.