Chiến lược dự báo chuỗi thời gian cho 2000 sản phẩm khác nhau?


9

Trước hết, tôi nhận ra rằng câu hỏi của tôi rất rộng và có thể khó trả lời câu hỏi này vì nó.

Bạn có lời khuyên nào về cách tiếp cận một "vấn đề" mà bạn cần đưa ra dự báo / dự đoán cho hơn 2000 sản phẩm khác nhau không? Nói cách khác, mỗi sản phẩm đòi hỏi một dự báo / dự đoán khác nhau. Tôi có 2 năm dữ liệu lịch sử ở cấp tuần (tức là nhu cầu mỗi tuần cho mỗi sản phẩm).

Tôi cần phải làm điều này trong một khoảng thời gian ngắn: tôi có khoảng một tuần để làm điều này, do đó tôi đang tìm cách để tôi có thể nhanh chóng đưa ra các mô hình dự đoán tương đối tốt. Tạo một mô hình cho từng sản phẩm và kiểm tra chặt chẽ hiệu suất của nó, từng cái một, sẽ quá tốn thời gian.

Tôi đã nghĩ đến việc phân chia các sản phẩm dựa trên phương sai , để tôi có thể sử dụng các mô hình đơn giản cho các sản phẩm có phương sai thấp. Trong khi điều này có lẽ không lý tưởng, nó sẽ là một cách nhanh chóng để thu hẹp số lượng mô hình tôi cần tạo.

Nó sẽ được đánh giá rất cao nếu bạn có bất kỳ lời khuyên thiết thực nào cho tôi khi tiếp cận vấn đề này.


1
Là những sản phẩm tương tự? Bạn có thể hưởng lợi từ việc tìm kiếm sitr này để dự báo phân cấp
kjetil b halvorsen

Câu trả lời:


11

Theo dõi câu trả lời của @StephanKolassa:

  • Tôi đồng ý với Stephan rằng ETS () từ gói dự báo trong R có lẽ là lựa chọn tốt nhất và nhanh nhất của bạn. Nếu ETS không cho kết quả tốt, bạn cũng có thể muốn sử dụng gói Prophet của Facebook (Auto.arima rất dễ sử dụng, nhưng hai năm dữ liệu hàng tuần không đủ dữ liệu cho mô hình ARIMA theo kinh nghiệm của tôi). Cá nhân tôi đã tìm thấy Prophet dễ sử dụng hơn khi bạn có sẵn các chương trình khuyến mãi và dữ liệu sự kiện, nếu không ETS () có thể hoạt động tốt hơn. Thử thách thực sự của bạn là một thách thức mã hóa về cách lặp lại hiệu quả thuật toán dự báo của bạn trong một số lượng lớn chuỗi thời gian. Bạn có thể kiểm tra phản hồi này để biết thêm chi tiết về cách tự động tạo dự báo .

  • Trong dự báo nhu cầu, một số hình thức dự báo phân cấp thường được thực hiện, tức là bạn có 2000 sản phẩm và bạn cần một dự báo riêng cho từng sản phẩm riêng biệt, nhưng có những điểm tương đồng giữa các sản phẩm có thể giúp dự báo. Bạn muốn tìm một số cách để nhóm sản phẩm lại với nhau theo phân cấp sản phẩm và sau đó sử dụng dự báo phân cấp để cải thiện độ chính xác. Vì bạn đang tìm kiếm dự báo ở cấp độ sản phẩm riêng lẻ, hãy xem thử cách tiếp cận phân cấp từ trên xuống.

  • Một cái gì đó hơi xa hơn một chút, nhưng tôi muốn gọi nó ra: Amazon và Uber sử dụng các mạng thần kinh cho loại vấn đề này, trong đó thay vì có một dự báo riêng cho từng chuỗi sản phẩm / thời gian, họ sử dụng một mạng thần kinh tái phát khổng lồ để dự báo tất cả các chuỗi thời gian với số lượng lớn. Lưu ý rằng họ vẫn kết thúc với các dự báo riêng cho từng sản phẩm (trong trường hợp của Uber là lưu lượng / nhu cầu của mỗi thành phố trái ngược với sản phẩm), họ chỉ sử dụng một mô hình lớn (mô hình học sâu LSTM) để làm tất cả cùng một lúc. Ý tưởng này tương tự về mặt tinh thần với dự báo phân cấp theo nghĩa là mạng lưới thần kinh học được từ sự tương đồng giữa lịch sử của các sản phẩm khác nhau để đưa ra dự báo tốt hơn. Nhóm Uber đã cung cấp một số mã của họ ( thông qua kho lưu trữ Github của cuộc thi M4), tuy nhiên, đó là mã C ++ (không chính xác là ngôn ngữ yêu thích của đám đông thống kê). Cách tiếp cận của Amazon không phải là nguồn mở và bạn phải sử dụng dịch vụ Dự báo Amazon trả phí của họ để thực hiện các dự báo.


Liên quan đến nhận xét thứ hai của bạn: Bạn cần phân biệt giữa dự báo doanh số và nhu cầu dự báo. Nhu cầu không bị giới hạn, nếu đột nhiên một mặt hàng phổ biến và khách hàng của bạn muốn 200 đơn vị, thì không có vấn đề gì khi bạn chỉ có 50 đơn vị trong tay, nhu cầu của bạn vẫn sẽ là 200 đơn vị.

Trong thực tế, rất khó để quan sát trực tiếp nhu cầu, vì vậy chúng tôi sử dụng bán hàng làm proxy cho nhu cầu. Điều này có một vấn đề bởi vì nó không giải thích cho các tình huống mà khách hàng muốn mua sản phẩm nhưng nó không có sẵn. Để giải quyết nó, cùng với dữ liệu bán hàng trong lịch sử, thông tin về mức tồn kho và lượng hàng tồn kho được đưa trực tiếp vào một mô hình hoặc được sử dụng để xử lý chuỗi thời gian trước khi tạo mô hình để dự báo .

Thông thường, một dự báo không bị ràng buộc được tạo ra trước tiên bởi một công cụ dự báo và sau đó được chuyển đến một hệ thống lập kế hoạch, sau đó thêm các ràng buộc mà bạn đề cập (nghĩa là nhu cầu là 500 đơn vị nhưng chỉ có 300 đơn vị) cùng với các ràng buộc khác (chứng khoán an toàn, chứng khoán thuyết trình, hạn chế về ngân sách, kế hoạch cho các chương trình khuyến mãi hoặc giới thiệu sản phẩm mới, v.v ...) - tuy nhiên, điều này nằm trong phạm vi chung của kế hoạch và quản lý hàng tồn kho, không dự báo theo từng se .


1
@Amonet "Tôi sẽ đưa ra dự báo về cấp độ gia đình sản phẩm và sau đó phân chia thành cấp độ sản phẩm, đúng không?" Đúng.
Skander H.

3
+1, tất cả các điểm cực kỳ tốt. Về dự báo phân cấp, tôi là một fan hâm mộ lớn của sự hòa giải tối ưu , mà tôi và những người khác đã nhiều lần tìm thấy để vượt trội từ trên xuống và từ dưới lên trên tất cả các cấp của hệ thống phân cấp. Thêm vào đó, đây là một thuật toán tối ưu hóa, vì vậy người ta có thể tính đến các ràng buộc. (Ví dụ, nếu một số series có khối lượng thấp, hòa giải không bị giới hạn có thể dẫn đến dự báo tiêu cực.) Tôi đồng ý, tuy nhiên, người ta nên nhằm mục đích dự báo nhu cầu kiểm duyệt ...
Stephan Kolassa

3
... Tôi luôn khuyên bạn nên bắt đầu với các phương pháp dự báo đơn giản trước tiên , điều này có thể khó đánh bại một cách đáng ngạc nhiên. Xem thêm tại đây.
Stephan Kolassa

2
@ usεr11852: hai năm chỉ là hai chu kỳ. Trong sự khác biệt theo mùa, chúng ta mất một chu kỳ. Vì vậy, ARIMA theo mùa mất một nửa dữ liệu của mình chỉ thông qua sự khác biệt. Tôi sẽ không sử dụng ARIMA theo mùa với dữ liệu ít hơn năm chu kỳ. ...
Stephan Kolassa

1
@ usεr11852: điều này nhắc nhở tôi về một số phân tích tôi đã làm trong đó loạt dưới cùng được điều chỉnh "quá nhiều", nói một cách tương đối, bởi vì các điều chỉnh được cân bằng nhiều hơn hoặc ít hơn về mặt tuyệt đối, không tính theo tỷ lệ phần trăm. Sau đó tôi sử dụng mgcv::pcls()để hòa giải, đưa ma trận tổng hợp bằng tay. Điều này có hai ưu điểm: (1) nó cho phép bạn đặt các ràng buộc hộp, ví dụ: để đảm bảo dự báo đối chiếu là không âm, (2) nó cho phép bạn cân nhắc các điều chỉnh, vì vậy tôi chỉ sử dụng nghịch đảo của trung bình lịch sử của từng chuỗi như một trọng lượng, trong đó giải quyết vấn đề điều chỉnh.
Stephan Kolassa

8

Chúng tôi sẽ chỉ có thể cung cấp cho bạn lời khuyên rất chung chung.

  • Có bất kỳ trình điều khiển mạnh mẽ, như chương trình khuyến mãi hoặc sự kiện lịch, hoặc tính thời vụ, xu hướng hoặc vòng đời? Nếu vậy, bao gồm chúng trong mô hình của bạn. Chẳng hạn, bạn có thể hồi quy doanh số trên các chương trình khuyến mãi, sau đó có khả năng mô hình dư (sử dụng làm mịn theo cấp số nhân hoặc ARIMA).
  • Có những gói phần mềm làm rất tốt công việc phù hợp với nhiều mô hình chuỗi thời gian cho một chuỗi. Sau đó, bạn có thể chỉ cần lặp lại chuỗi 2000 của mình, việc này không mất nhiều thời gian chạy hơn một tách cà phê. Tôi đặc biệt khuyên dùng ets()hàm trong forecastgói trong R. (Ít hơn là auto.arima()hàm cho dữ liệu hàng tuần.
  • Ít nhất là đọc lướt một cuốn sách giáo khoa dự báo, ví dụ, cái này . Nó sử dụng forecastgói tôi giới thiệu ở trên.
  • Mục tiêu cuối cùng của bạn là gì? Bạn có muốn một dự báo không thiên vị? Sau đó đánh giá dự báo điểm bằng MSE. Phần thưởng của bạn có phụ thuộc vào MAPE không? Sau đó, danh sách các vấn đề của MAPE có thể hữu ích. Bạn có cần dự báo để thiết lập số lượng an toàn? Sau đó, bạn cần dự báo định lượng, không có nghĩa là dự đoán. (Các chức năng trong forecastgói có thể cung cấp cho bạn những thứ đó.)

Nếu bạn có câu hỏi cụ thể hơn, hãy đăng chúng tại CV.


4
@ UkaszGrad: nếu bạn đã làm việc theo cách của mình thông qua FPP2, cuốn sách của chúng tôi sẽ không cho bạn biết nhiều điều mới. Nguyên tắc Dự báo Kinh doanh của Ord và cộng sự (tái bản lần 2) đi sâu hơn ( tôi đã xem xét ở đây nếu bạn có quyền truy cập). ...
Stephan Kolassa

3
... Bạn có thể thu lợi từ việc xem IIF , có thể đọc ấn phẩm Tầm nhìn xa của nó hoặc tham dự một trong các hội nghị của nó, hoặc ISF , sẽ diễn ra vào tháng 6 năm nay tại Thessaloniki, hoặc Hội nghị Học viên Tầm nhìn xa, vào tháng 11 năm nay tại cơ sở của SAS tại Cary, NC, tùy thuộc vào nơi bạn ở. ISF có phần thiên về học thuật hơn, nhưng gần đây, tôi nói khoảng 33% người tham dự đến từ ngành công nghiệp và thường có một người theo dõi học viên.
Stephan Kolassa

2
(Tiết lộ đầy đủ: Tôi có liên quan đến tất cả những điều này, vì vậy hãy đưa ra khuyến nghị của tôi với một hạt muối lớn. Nếu bạn tham dự một trong các hội nghị, hãy tìm tôi và nói xin chào!)
Stephan Kolassa

1
@SkanderH: sử dụng forecast()lệnh trên mô hình được trang bị của bạn (nghĩa là đầu ra của ets()hoặc auto.arima()) và chỉ định leveltham số. Xem ?forecast.ets?forecast.Arima(lưu ý viết hoa).
Stephan Kolassa

1
@StephanKolassa Tôi đã chấp nhận câu trả lời khác, vì đó là phần tiếp theo cho câu trả lời của bạn và do đó mọi người cũng có xu hướng đọc lời khuyên hữu ích của bạn hơn.
Amonet

1

Phân đoạn dựa trên phương sai của loạt gốc không có ý nghĩa gì với tôi vì mô hình tốt nhất nên bất biến theo tỷ lệ. Hãy xem xét một chuỗi .. mô hình nó và sau đó nhân từng giá trị trong chuỗi thời gian với 1000.

Về mặt phương trình sản xuất hàng loạt có thể có cả cấu trúc xác định (xung / mức dịch chuyển / xu hướng thời gian cục bộ) HOẶC hoặc tính thời vụ tự động hồi quy và cấu trúc arima, bạn phải chạy tập lệnh dựa trên máy tính. Cảnh giác với các giải pháp arima tự động đơn giản giả định không có cấu trúc xác định HOẶC các giả định cố định về cùng.

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.