Dự báo chuỗi thời gian đa chiều và đa biến (RNN / LSTM)


12

Tôi đã cố gắng hiểu cách biểu diễn và định hình dữ liệu để đưa ra dự báo chuỗi thời gian đa chiềuđa biến bằng cách sử dụng Keras (hoặc TensorFlow) nhưng tôi vẫn không rõ sau khi đọc nhiều bài đăng / hướng dẫn / tài liệu blog về cách trình bày dữ liệu trong hình dạng chính xác (hầu hết các ví dụ là hơi ít

Bộ dữ liệu của tôi:

  • một số thành phố
  • mà tôi có thông tin về nhiệt độ, lưu lượng xe, độ ẩm
  • giả sử trong 2 năm qua (một kỷ lục cho mỗi ngày)

Những gì tôi muốn làm: Tôi muốn dự báo cho mỗi thành phố nhiệt độ tôi có thể mong đợi cho năm tới bằng cách sử dụng một phiên bản có thể bị trễ về nhiệt độ, giao thông xe hơi và độ ẩm (tất nhiên sẽ có nhiều tính năng hơn nhưng đây chỉ là một tính năng ví dụ cho suy nghĩ).

Điều tôi bối rối về: Nếu tôi có 2 thành phố, tôi đã ghi lại 3 tính năng trong 365 ngày. Tôi nên định hình đầu vào của mình như thế nào để mô hình có thể xuất dự báo trong 365 ngày cho hai thành phố này (tức là chuỗi nhiệt độ 2 lần trong 365 ngày)?

Theo trực giác hình dạng tenor sẽ là (?, 365, 3) trong 365 ngày và 3 tính năng. Nhưng tôi không chắc chắn những gì sẽ dính vào chiều thứ nhất và quan trọng nhất, tôi sẽ ngạc nhiên nếu nó phải dành cho số lượng thành phố. Nhưng đồng thời, tôi không biết làm thế nào để xác định vào mô hình mà nó phải hiểu đúng kích thước.

Bất kỳ con trỏ sẽ hữu ích. Tôi khá quen thuộc với phần còn lại của vấn đề (tức là cách bạn xây dựng một mạng trong Keras, v.v. vì tôi đã làm điều này cho các mạng thần kinh khác nhưng cụ thể hơn là cách mã hóa chuỗi cho đầu vào mong muốn tốt nhất.)

Ồ và cũng vậy , tôi đoán rằng tôi có thể đào tạo và dự đoán cho từng thành phố một cách độc lập, nhưng tôi chắc chắn mọi người sẽ đồng ý có những điều có thể học được không phải là đặc biệt đối với bất kỳ thành phố nào nhưng chỉ có thể được nhìn thấy nếu xem xét một vài trong số chúng, do đó tôi nghĩ điều quan trọng là phải mã hóa nó trong mô hình.


1
Đây là một hướng dẫn hay về chủ đề này: tenorflow.org/beta/tutorials/text/time_series
CubeBot88

Câu trả lời:


13

Hình dạng đầu vào cho một LSTM phải là (num_samples, num_time_steps, num_features). Trong trường hợp ví dụ của bạn, kết hợp cả hai thành phố làm đầu vào, num_featuressẽ là 2x3 = 6.

Nếu bạn gộp tất cả 365 bước thời gian của bạn vào một mẫu, thì thứ nguyên đầu tiên sẽ là 1 - một mẫu duy nhất! Bạn cũng có thể kiểm tra độ tỉnh táo bằng cách sử dụng tổng số điểm dữ liệu. Bạn có 2 thành phố, mỗi thành phố có 365 bước thời gian và 3 tính năng: 2x365x3 = 2190. Điều này rõ ràng giống như 1x365x6 (như tôi đã nói ở trên) - vì vậy nó sẽ là một khả năng (Keras sẽ chạy) - nhưng rõ ràng nó sẽ không học cách khái quát hóa tất cả, chỉ đưa ra một mẫu.

Có một cái nhìn vào câu hỏi có liên quan , mà gần đây tôi đã trả lời. Ở đó tôi nói một chút về việc sử dụng cửa sổ cuộn (kiểm tra các ý kiến ​​của câu trả lời để biết thêm thông tin). Điều đó sẽ mua cho bạn nhiều mẫu hơn nếu bạn cần chúng.

Nếu bạn muốn đào tạo một mô hình duy nhất với dữ liệu cho cả hai thành phố làm đầu vào, thì việc đưa ra dự đoán cho cả hai thành phố ở mỗi bước thời gian cũng đơn giản như xác định một Denselớp cuối cùng , tạo ra 2 đơn vị. Tất nhiên, dữ liệu kiểm tra / kiểm tra của bạn phải chứa một bộ dữ liệu (city1, city2).

Một cách có lẽ tinh vi hơn để tiếp cận điều này sẽ là tạo các bộ dữ liệu trên cơ sở một thành phố, sau đó huấn luyện một số mô hình con trên từng thành phố riêng lẻ (ví dụ 5 lớp), sau đó Merge/ Concatenatechúng và đặt một số lớp nữa lên trên cùng. Điều này có nghĩa là bạn đang kết hợp các tính năng đã học của từng thành phố, lần lượt được kết hợp với mức độ trừu tượng cao hơn. Đây là hình ảnh đầu tiên tôi nhận được từ một công cụ tìm kiếm , phác họa ý tưởng này.


Cảm ơn bạn rất nhiều vì đã dành thời gian để trả lời rõ ràng như vậy! Nó có rất nhiều ý nghĩa bây giờ. Nhưng, thực sự, điều tôi lo sợ là việc thực hiện giải pháp đầu tiên mà bạn giải thích sẽ ngăn không cho sự khái quát hóa nhiều. Cách tiếp cận cửa sổ trượt thực sự sẽ cho phép nhiều khái quát trên khắp các thành phố?
Bastien

Không có gì! Lưới sâu luôn được hưởng lợi từ nhiều dữ liệu hơn. Các đề xuất của tôi ở trên sẽ chứa rất nhiều tham số - chỉ với 365 điểm, bạn có nguy cơ bị quá tải đến các thành phố đó (tức là không khái quát hóa)! Bạn có thể thử tăng dữ liệu - làm thế nào , tùy thuộc vào dữ liệu của bạn. Nếu bạn có đủ dữ liệu, bạn có thể khái quát tốt - tôi có thể tưởng tượng kết quả loại Word2Vec (phổ biến trong phân tích văn bản / NLP), trong đó mối quan hệ giữa các biến trở nên dễ hiểu. Kiểm tra này để biết thông tin , và điều này để có thêm trực giác / vui vẻ . Kết quả của bạn có thể vẽ một bản đồ thời tiết!
n1k31t4

vâng có ý nghĩa, vì vậy làm việc một số cửa sổ cuộn sẽ đánh lừa "nhiều dữ liệu" hơn nếu tôi hiểu những gì bạn nói?
Bastien

Giả sử bạn dự đoán vào ngày mai dựa trên 100 ngày qua, trạng thái của hệ thống sẽ không có khả năng thay đổi như ngày hôm qua (nếu làm cửa sổ cuộn), so với một năm trước (không sử dụng cửa sổ cuộn). Mặc dù về mặt kỹ thuật, nó tạo ra nhiều mẫu hơn, nhưng bạn không tạo ra các điểm dữ liệu mới - thay vào đó là dự đoán cho phép mô hình tập trung vào các khối nhỏ hơn một lần. Mức độ chi tiết cao hơn này sẽ cho phép bạn đưa ra các báo cáo thống kê tốt hơn (mượt mà hơn) về kết quả, so với việc khớp tất cả các dữ liệu và đưa ra một dự đoán. Bạn giảm sự không chắc chắn trong kết quả.
n1k31t4

đã đồng ý! Và liệu cửa sổ cuộn sẽ không ngăn được tế bào bộ nhớ học phụ thuộc cơn thịnh nộ dài?
Bastien
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.