Làm cách nào tôi có thể dự đoán lưu lượng dựa trên dữ liệu chuỗi thời gian trước đó?


18

Nếu tôi có một cửa hàng bán lẻ và có cách để đo xem có bao nhiêu người vào cửa hàng của tôi mỗi phút và đánh dấu thời gian dữ liệu đó, làm thế nào tôi có thể dự đoán lưu lượng truy cập chân trong tương lai?

Tôi đã xem xét các thuật toán học máy, nhưng tôi không chắc nên sử dụng thuật toán nào. Trong dữ liệu thử nghiệm của tôi, xu hướng hàng năm chính xác hơn so với những thứ khác mà tôi đã thử, như KNN (với những gì tôi nghĩ là các tham số hợp lý và chức năng khoảng cách).

Có vẻ như điều này có thể giống với mô hình tài chính, nơi bạn xử lý dữ liệu chuỗi thời gian. Có ý kiến ​​gì không?


Có lẽ whitepaper này có thể hữu ích. knime.org/files/knime_bigdata_energy_timeseries_whitepaper.pdf Đó là về chuỗi thời gian mô hình hóa bao gồm tính thời vụ. - Rosaria
Rosaria

Câu trả lời:


17

Vấn đề với các mô hình như KNN là chúng không tính đến tính thời vụ (các biến thể phụ thuộc vào thời gian). Để tính đến những điều đó, bạn nên sử dụng phân tích Chuỗi thời gian.

Đối với dữ liệu đếm, chẳng hạn như của bạn, bạn có thể sử dụng các mô hình trung bình di chuyển tự động hồi quy tuyến tính tổng quát (GLARMA). May mắn thay, có một gói R thực hiện chúng ( glarma ).

Các họa tiết là một tài nguyên tốt cho lý thuyết đằng sau công cụ.


2
Một gói rất hữu ích khác để dự báo và phân tích chuỗi thời gian được dự báo bởi Giáo sư Rob J. Hyndman.
Def_Os

Bạn có biết nếu điều này đã được thực hiện trong bất kỳ ngôn ngữ khác? Tôi không chính xác là một chuyên gia với R. Tôi chắc chắn sẽ đọc bài báo ít nhất.
dùng1132959

Tôi không quen thuộc với một. Nếu bạn muốn sử dụng python, bạn có thể sử dụng gói rpy2 để gọi hàm glarma trong khi thực hiện hầu hết các phần còn lại của chương trình trong python. Hầu hết các ngôn ngữ khác cũng có một kết nối như vậy.
Christopher Louden

10

Tôi nghĩ câu trả lời của Christopher ở trên là hoàn toàn hợp lý. Là một cách tiếp cận khác (hoặc có lẽ chỉ là ngoài lời khuyên mà anh ấy đã đưa ra), tôi có thể bắt đầu bằng cách chỉ hình dung dữ liệu một chút để thử cảm nhận sơ bộ về những gì đang diễn ra.

Nếu bạn chưa thực hiện điều này, bạn có thể thử thêm tháng và ngày trong tuần dưới dạng các tính năng - nếu bạn kết thúc với KNN, điều này sẽ giúp mô hình nhận được tính thời vụ.

Là một cách khác để thực hiện điều này, bạn có thể cân nhắc bắt đầu với một mô hình thực sự, thực sự cơ bản (như OLS) .. những điều này thường đi một chặng đường dài trong việc tạo ra các dự đoán hợp lý.

Cuối cùng, chúng tôi càng biết nhiều về dữ liệu của bạn, chúng tôi sẽ càng dễ dàng giúp chúng tôi tạo đề xuất - Bạn đang quan sát khung thời gian nào? Các tính năng bạn đang sử dụng là gì? Vân vân.

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


Vâng, trực quan là một bước đầu tiên thiết yếu trong bất kỳ phân tích.
Christopher Louden

Tôi đã thêm tháng, ngày trong tháng, ngày trong tuần và năm như các tính năng. Tôi thậm chí đã thử một giá trị "Gần đây" giảm tuyến tính. Tôi không nghĩ rằng tôi đã thử OLS. Tôi đang quan sát một khung thời gian có thể dao động ở bất cứ đâu từ vài tuần đến nhiều năm. Theo như hình dung nó đi, tôi đã cố gắng để làm điều đó. Vấn đề là, chúng tôi muốn phần mềm có thể dự đoán tự động, không có sự can thiệp của con người, cho các khách hàng khác nhau.
dùng1132959

3

Bạn có thể thử Mạng thần kinh. Bạn có thể tìm thấy 2 lời giải thích tuyệt vời về cách áp dụng NN theo chuỗi thời gian tại đâyđây .

Lưu ý rằng đó là cách tốt nhất để:

  • Giải thích / hủy bỏ dữ liệu đầu vào (để NN không học được tính thời vụ).
  • Rescale / Bình thường hóa dữ liệu đầu vào.

Bởi vì những gì bạn đang tìm kiếm là một vấn đề hồi quy, các hàm kích hoạt nên linearvà không sigmoidhoặc tanhbạn nhằm mục đích giảm thiểu sum-of-squares error(như sự phản đối tối đa hóa negative log-likelihoodvấn đề phân loại).


Tôi đã xem xét Mạng thần kinh như một tùy chọn, nhưng không biết tôi sẽ sử dụng loại tham số nào. Tôi sẽ phải cho những người đó một shot.
dùng1132959

Sigmoid và Tanh đều ổn, phi tuyến muốn tìm hiểu các tương tác phức tạp hơn và các trọng số sẽ ánh xạ các phạm vi này đến bất kỳ phạm vi nào mà mạng thấy cần thiết
Jan van der Vegt

3

Như @Christopher Lauden đã đề cập ở trên, phân tích chuỗi thời gian là thích hợp nhất cho loại điều này. Tuy nhiên, nếu bạn muốn thực hiện một "phương pháp học máy" truyền thống hơn, thì điều mà tôi đã làm trong quá khứ là chặn dữ liệu của bạn thành các cửa sổ thời gian chồng chéo như các tính năng, sau đó sử dụng nó để dự đoán những ngày tiếp theo (hoặc tuần ) giao thông.

Ma trận tính năng của bạn sẽ giống như:

t1 | t2 | ... | tN
t2 | t3 | ... | tN+1
t3 | t4 | ... | tN+2
...
tW | tW+1 | ... |tN+W

nơi tIlà giao thông trên ngày I. Tính năng bạn sẽ dự đoán là lưu lượng truy cập vào ngày sau cột cuối cùng. Về bản chất, sử dụng cửa sổ giao thông để dự đoán lưu lượng truy cập vào ngày hôm sau.

Bất kỳ loại mô hình ML sẽ làm việc cho điều này.

Biên tập

Để trả lời câu hỏi, "bạn có thể giải thích cách bạn sử dụng ma trận tính năng này không":

Ma trận tính năng có các giá trị biểu thị lưu lượng truy cập trong quá khứ trong một khoảng thời gian (ví dụ: lưu lượng truy cập hàng giờ trong 1 tuần) và chúng tôi sử dụng điều này để dự đoán lưu lượng truy cập trong một khoảng thời gian được chỉ định trong tương lai. Chúng tôi lấy dữ liệu lịch sử của mình và xây dựng một ma trận tính năng của lưu lượng truy cập lịch sử và gắn nhãn này với lưu lượng truy cập vào một khoảng thời gian nào đó trong tương lai (ví dụ: 2 ngày sau cửa sổ trong tính năng). Sử dụng một số mô hình học máy hồi quy, chúng ta có thể lấy dữ liệu lưu lượng truy cập lịch sử và thử và xây dựng một mô hình có thể dự đoán lưu lượng di chuyển trong bộ dữ liệu lịch sử của chúng ta. Giả định là giao thông trong tương lai sẽ giống với giao thông trong quá khứ.


Bạn có thể giải thích về cách bạn sẽ sử dụng ma trận tính năng này? Bạn đang cố gắng học dựa trên sự thay đổi lưu lượng qua các ngày?
dùng1132959

Tôi chỉnh sửa câu trả lời để hy vọng cho rõ ràng hơn.
gallamine

2

Chà, trước tiên, tôi thậm chí sẽ không sử dụng những thứ như Machine learning mà không có kiến ​​thức chuyên sâu. Những điều đơn giản tôi sẽ làm nếu tôi có chuỗi thời gian này là:

  1. Viết các truy vấn sql để hiểu thời điểm nào bạn có lưu lượng truy cập bận rộn nhất, trung bình và thấp.
  2. Sau đó cố gắng trực quan hóa toàn bộ chuỗi thời gian và bạn có thể sử dụng các thuật toán khớp mẫu cơ bản để chọn các mẫu.

Hai điều này sẽ giúp bạn hiểu những gì bộ dữ liệu của bạn đang nói với bạn. Sau đó, với điều đó trong tay, có lẽ bạn sẽ ở trạng thái tốt hơn để sử dụng các thuật toán học máy.

Ngoài ra, tôi hiện đang làm việc để xây dựng một cái gì đó theo chuỗi thời gian và sử dụng phân tích chuỗi thời gian sẽ giúp bạn nhiều hơn so với học máy. Ví dụ: có các thuật toán nhận dạng mẫu mà bạn có thể sử dụng sử dụng dữ liệu hàng ngày để hiển thị các mẫu và các thuật toán sử dụng tối đa 3 đến 6 tháng dữ liệu để bắt mẫu.


0

Tôi sẽ khuyên bạn không nên sử dụng mạng thần kinh hoặc tương đương như, tôi cho rằng, bạn đã có một ưu tiên tốt như vậy dựa trên kinh nghiệm của bạn với cửa hàng (nghĩa là có thể có xu hướng hàng ngày / theo mùa và mức độ mượt mà) và Tôi tưởng tượng một lượng dữ liệu tương đối nhỏ. Một lựa chọn tốt hơn IMO sẽ là sử dụng phương thức kernel, chẳng hạn như Quy trình Gaussian hoặc SVM.


0

Đưa chủ đề này trở lại cuộc sống, vì điều này có thể hữu ích cho những người khác hạ cánh ở đây với câu hỏi tương tự.

Gần đây, Facebook đã phát hành và mở nguồn một trong những công cụ dự báo nội bộ của họ có tên là Tiên tri https://facebookincubator.github.io/prophet/

Nó có sẵn dưới dạng cả hai gói R & Python và được chứng minh là một giải pháp thú vị cho người có nền tảng Machine Learning nhỏ. Tuy nhiên, một số kiến ​​thức ML bổ sung cho phép điều chỉnh và tối ưu hóa các mô hình được sản xuất.

Tôi khuyên bạn nên thử Prophet như một bước đầu tiên. Chiến thắng nhanh chóng cho giải pháp này là sự dễ dàng và tốc độ của việc xây dựng và thử nghiệm mô hình: bạn hoàn toàn có thể có được một hình chiếu gốc trong vài phút. Nó hoạt động rất tốt theo chuỗi thời gian, nắm bắt tính thời vụ của dữ liệu trong tay một cách "tự nhiên".

Dưới mui xe, nó tương tự như một mô hình phụ gia tổng quát (GAM) - chi tiết hơn trên giấy chuyên dụng: https://facebookincubator.github.io/prophet/static/prophet_apers_20170113.pdf

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.