Thuật toán nào có thể được sử dụng để dự đoán việc sử dụng hàng tiêu dùng cho dữ liệu từ các lần mua trước?


10

Suy nghĩ về một vấn đề được cho là đơn giản nhưng thú vị, tôi muốn viết một số mã để dự báo mức tiêu thụ mà tôi sẽ cần trong tương lai gần với toàn bộ lịch sử mua hàng trước đây của tôi. Tôi chắc rằng loại vấn đề này có một số định nghĩa chung chung và được nghiên cứu kỹ hơn (có người cho rằng vấn đề này liên quan đến một số khái niệm trong hệ thống ERP và tương tự).

Dữ liệu tôi có là toàn bộ lịch sử mua hàng trước đó. Giả sử tôi đang xem các nguồn cung cấp giấy, dữ liệu của tôi trông giống như (ngày, tờ):

2007-05-10   500
2007-11-11  1000
2007-12-18  1000
2008-03-25   500
2008-05-28  2000
2008-10-31  1500
2009-03-20  1500
2009-06-30  1000
2009-09-29   500
2009-12-16  1500
2010-05-31   500
2010-06-30   500
2010-09-30  1500
2011-05-31  1000

nó không được 'lấy mẫu' theo định kỳ, vì vậy tôi nghĩ rằng nó không đủ điều kiện làm dữ liệu Chuỗi thời gian .

Tôi không có dữ liệu về mức chứng khoán thực tế mỗi lần. Tôi muốn sử dụng dữ liệu đơn giản và hạn chế này để dự đoán số lượng giấy tôi sẽ cần (ví dụ) 3,6,12 tháng.

Cho đến nay tôi mới biết rằng thứ tôi đang tìm kiếm được gọi là Phép ngoại suy và không nhiều nữa :)

Thuật toán nào có thể được sử dụng trong tình huống như vậy?

Và thuật toán nào, nếu khác với thuật toán trước, cũng có thể tận dụng một số điểm dữ liệu khác cung cấp các mức cung cấp hiện tại (ví dụ: nếu tôi biết rằng vào ngày XI có tờ giấy Y còn lại)?

Xin vui lòng chỉnh sửa câu hỏi, tiêu đề và thẻ nếu bạn biết một thuật ngữ tốt hơn cho điều này.

EDIT: với giá trị của nó, tôi sẽ cố gắng viết mã này bằng python. Tôi biết có rất nhiều thư viện triển khai ít nhiều thuật toán ngoài kia. Trong câu hỏi này, tôi muốn khám phá các khái niệm và các kỹ thuật có thể được sử dụng, với việc triển khai thực tế được để lại như một bài tập cho người đọc.


1
Các nhà thống kê thân mến, tôi chỉ muốn cho bạn biết câu hỏi này đã không bị bỏ rơi. Tôi sẽ quay lại vấn đề cụ thể này ngay khi tôi tìm thấy thời gian và động lực (đọc: ông chủ bảo tôi làm điều này) và sẽ điều tra các câu trả lời quý giá của bạn và cuối cùng đánh dấu một câu là chấp nhận (đối với tôi sẽ có nghĩa là "thực sự được thực hiện").
Luke404

Câu trả lời:


12

Câu hỏi liên quan đến tỷ lệ tiêu thụ so với thời gian. Điều này đòi hỏi hồi quy tỷ lệ theo thời gian ( không phải hồi quy tổng số lần mua theo thời gian). Phép ngoại suy được thực hiện bằng cách xây dựng các giới hạn dự đoán cho các giao dịch mua trong tương lai.

Một số mô hình là có thể. Khi chuyển đến một văn phòng không giấy tờ (đã diễn ra trong khoảng 25 năm :-), chúng tôi có thể áp dụng mô hình theo cấp số nhân (giảm). Kết quả được mô tả bằng biểu đồ phân tán sau đây của mức tiêu thụ, trên đó được vẽ đường cong hàm mũ (được trang bị thông qua các bình phương tối thiểu thông thường cho logarit của mức tiêu thụ) và giới hạn dự đoán 95% của nó. Các giá trị ngoại suy sẽ được dự kiến ​​nằm gần đường thẳng và giữa các giới hạn dự đoán với độ tin cậy 95%.

Nhân vật

Trục dọc hiển thị các trang mỗi ngày trên thang đo tuyến tính. Đường liền nét màu xanh đậm là phù hợp: nó thực sự theo cấp số nhân nhưng lại gần như là tuyến tính. Hiệu ứng của sự phù hợp theo cấp số nhân xuất hiện trong các dải dự đoán, trên thang đo tuyến tính này được đặt không đối xứng xung quanh sự phù hợp; trên thang đo log, chúng sẽ đối xứng.

Một mô hình chính xác hơn sẽ giải thích cho thực tế là thông tin tiêu thụ không chắc chắn hơn trong khoảng thời gian ngắn hơn (hoặc khi tổng số lần mua nhỏ hơn), có thể được trang bị bằng cách sử dụng bình phương tối thiểu có trọng số. Với sự thay đổi trong các dữ liệu này và sự bình đẳng về kích thước của tất cả các giao dịch mua, nó không đáng để nỗ lực thêm.

Cách tiếp cận này chứa dữ liệu hàng tồn kho trung gian , có thể được sử dụng để nội suy tỷ lệ tiêu thụ tại thời điểm trung gian. Trong trường hợp như vậy, bởi vì lượng tiêu thụ trung gian có thể thay đổi đáng kể, nên sử dụng phương pháp bình phương nhỏ nhất có trọng số.

Trọng lượng để sử dụng? Chúng tôi có thể xem xét mức tiêu thụ giấy, nhất thiết phải tích lũy trong số lượng giấy tích hợp, như một số lượng thay đổi độc lập theo từng ngày. Do đó, trong các khoảng thời gian ngắn, phương sai của số đếm sẽ tỷ lệ thuận với độ dài của khoảng thời gian. Phương sai của số lượng mỗi ngày sau đó sẽ tỷ lệ nghịch với độ dài của thời kỳ. Do đó, các trọng số phải tỷ lệ thuận với tỷ lệ giữa các khoảng thời gian giữa các hàng tồn kho. Do đó, ví dụ, việc tiêu thụ 1000 tờ trong khoảng thời gian 2007-05-10 và 2007-11-11 (khoảng 180 ngày) sẽ có trọng lượng gần gấp năm lần so với mức tiêu thụ 1000 tờ trong khoảng thời gian 2007-11-11 và 2007-12- 18, thời gian chỉ 37 ngày.

Trọng số tương tự có thể được cung cấp trong các khoảng dự đoán. Điều này sẽ dẫn đến khoảng thời gian tương đối rộng để dự đoán mức tiêu thụ trong một ngày so với dự đoán về mức tiêu thụ trong khoảng ba tháng.

Xin lưu ý rằng các đề xuất này tập trung vào các mô hình đơn giản và dự đoán đơn giản, phù hợp với ứng dụng dự định và sự thay đổi lớn rõ ràng trong dữ liệu. Nếu các dự đoán liên quan, giả sử, chi tiêu quốc phòng cho một quốc gia rộng lớn, chúng tôi sẽ muốn điều chỉnh nhiều biến giải thích hơn, tính đến tương quan thời gian và cung cấp thông tin chi tiết hơn nhiều trong mô hình.


dữ liệu đã được lấy mẫu theo định kỳ, liệu sử dụng số lượng trái ngược với tỷ lệ có phù hợp không?
MannyG

1
@MannyG Có, nhưng chỉ vì số lượng sẽ tỷ lệ thuận với tỷ lệ, chứ không phải vì nó sẽ phù hợp để sử dụng chính số đếm. Nhu cầu sử dụng tỷ lệ ở đây rất rõ ràng khi chúng tôi xem xét ý nghĩa thực sự của nó để dự đoán giá trị trong tương lai: bạn phải chỉ định khoảng thời gian của mức tiêu thụ dự đoán. Do đó, người ta dự đoán số lượng lần một lần để có được số lượng, ngụ ý số tiền đó phải là số lượng trên mỗi đơn vị thời gian: tỷ lệ tiêu thụ .
whuber

@whuber Xin lỗi nhưng tôi không thể hiểu rõ mô hình nào được mô tả trong câu trả lời của bạn và điểm nào kết thúc và bắt đầu mô hình khác. Tôi có một vấn đề tương tự và các phần trong câu trả lời của bạn có vẻ chính xác là những gì tôi cần, nhưng tôi phải nghiên cứu thêm về vấn đề này và tôi không thể nói bằng cách đọc câu trả lời của bạn nếu bạn đang nói về các mô hình khác biệt hoặc một mô hình nào đó được cải thiện dần dần. Có một tên chính thức cho mô hình với các trọng số mà bạn mô tả không? Mô hình đầu tiên của bạn (giảm theo cấp số nhân) có liên quan đến trọng số không? Cảm ơn trước.
Agis

@DRokuken Tôi mô tả một mô hình và một biến thể có trọng lượng dữ liệu. Nửa sau của câu trả lời này gợi ý cách xác định các trọng số. Tôi không biết bất kỳ tên chính thức nào ngoài "bình phương nhỏ nhất có trọng số".
whuber

@whuber tôi thấy. Ban đầu, bạn đang mô tả điều này và sau đó khi bạn thêm trọng lượng bạn đang mô tả điều này , phải không? Ngoài ra, bạn có bất kỳ nguồn lực nào để xem xét, liên quan đến giải pháp cụ thể và cho người mới bắt đầu dự báo không? Cảm ơn bạn đã làm rõ.
Agis

5

Đây chắc chắn là vấn đề máy học (tôi đã cập nhật thẻ trong bài viết của bạn). Rất có thể, đây là hồi quy tuyến tính . Tóm lại, hồi quy tuyến tính cố gắng phục hồi mối quan hệ giữa 1 biến phụ thuộc và 1 hoặc nhiều biến độc lập. Biến phụ thuộc ở đây là sử dụng hàng tiêu dùng . Đối với các biến độc lập, tôi đề xuất khoảng thời gian giữa các lần mua. Bạn cũng có thể thêm các biến độc lập hơn, ví dụ: số người đã sử dụng hàng tiêu dùng tại mỗi thời điểm hoặc bất kỳ thứ gì khác có thể ảnh hưởng đến số lượng mua hàng. Bạn có thể tìm thấy mô tả hay về hồi quy tuyến tính cùng với việc thực hiện trong Python tại đây .

Về lý thuyết, cũng có thể không chỉ khoảng thời gian giữa các lần mua, mà cả thời điểm cũng ảnh hưởng đến số tiền. Ví dụ, vì một số lý do vào tháng 1, mọi người có thể muốn có nhiều giấy hơn là vào tháng Tư. Trong trường hợp này, bạn không thể sử dụng số tháng làm biến độc lập do bản chất của hồi quy tuyến tính (số tháng chỉ là nhãn, nhưng sẽ được sử dụng làm số tiền). Vì vậy, bạn có 2 cách để khắc phục điều này.

Đầu tiên, bạn có thể thêm 12 biến số , một biến cho mỗi tháng và đặt mỗi biến thành 1 nếu nó đại diện cho tháng mua hàng và thành 0 nếu không. Sau đó sử dụng hồi quy tuyến tính tương tự.

Thứ hai, bạn có thể sử dụng thuật toán phức tạp hơn, chẳng hạn như M5 ' , kết hợp giữa hồi quy tuyến tính và cây quyết định (bạn có thể tìm thấy mô tả chi tiết về thuật toán này trong Khai thác dữ liệu: Công cụ và kỹ thuật máy học thực tế ).


Nó phụ thuộc vào số lượng dữ liệu về người dùng bạn có. Nếu khá đủ (giả sử,> 100 giao dịch trong hơn 1 năm), bạn có thể đào tạo một mô hình cho người dùng cụ thể này. Mặt khác, mô hình chung trên tất cả người dùng có thể cho bạn kết quả tốt hơn. Bạn có thể sử dụng xác nhận chéo để đo lường hiệu suất của cả hai phương pháp.

5

nó không được 'lấy mẫu' theo định kỳ, vì vậy tôi nghĩ rằng nó không đủ điều kiện làm dữ liệu Chuỗi thời gian.

Dưới đây là một ý tưởng về cách dự báo mua hàng: coi dữ liệu là một chuỗi nhu cầu không liên tục . Đó là, bạn có một chuỗi thời gian được lấy mẫu đều đặn, nhưng các giá trị dương rõ ràng là cách đều nhau. Rob Hyndman có một bài viết hay về việc sử dụng phương pháp của Croston để dự báo chuỗi nhu cầu không liên tục. Mặc dù tôi cũng lập trình rất nhiều bằng Python, nhưng bạn sẽ tiết kiệm được nhiều thời gian khám phá bằng cách sử dụng phương pháp của Croston, cũng như các phương pháp dự báo chuỗi thời gian khác, có sẵn trong dự báo gói R tuyệt vời của Rob .


1
+1 Để đưa ra một ý tưởng mới. Tuy nhiên, việc xem qua phần giới thiệu và kết luận của bài báo Shenstone & Hyndman cho thấy phương pháp của Croston thường không tốt lắm: bài viết tập trung vào việc cố gắng biện minh và hiểu một quy trình phổ biến hóa ra bị hạn chế; điều tốt nhất mà các tác giả có thể nói là mặc dù điều này, "dự báo ... vẫn có thể hữu ích." Ngoài ra, có vẻ như mô hình này không thể chứa dữ liệu bổ sung về "mức cung hiện tại" theo yêu cầu của OP.
whuber

3

Tôi khá chắc chắn rằng bạn đang cố gắng thực hiện một số phân tích hồi quy để khớp một dòng với các điểm dữ liệu của bạn. Có rất nhiều công cụ hiện có để giúp bạn - MS Excel có thể truy cập nhiều nhất. Nếu bạn muốn đưa ra giải pháp của riêng mình , tốt nhất hãy kiểm tra số liệu thống kê của bạn ( có lẽ ở đâyở đây , có lẽ). Khi bạn điều chỉnh một dòng cho dữ liệu của mình, bạn có thể ngoại suy vào tương lai.

EDIT: Đây là một ảnh chụp màn hình của ví dụ excel tôi đã đề cập trong các ý kiến ​​dưới đây. Những ngày in đậm là những ngày ngẫu nhiên trong tương lai mà tôi tự gõ. Các giá trị in đậm trong cột B là các giá trị ngoại suy được tính theo hương vị hồi quy theo cấp số nhân của Excel. nhập mô tả hình ảnh ở đây

EDIT2: OK, vì vậy để trả lời câu hỏi "Tôi có thể sử dụng những kỹ thuật nào?"

  • hồi quy theo cấp số nhân (đã đề cập ở trên)
  • Phương pháp của Holt
  • Phương pháp mùa đông
  • ARIMA

Vui lòng xem trang này để biết một chút giới thiệu về mỗi trang: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htmlm


Điều này khiến tôi phải tự hỏi: điểm dữ liệu của mình gì? không phải là các giao dịch mua duy nhất - điều đó sẽ không tính đến thời gian giữa chúng và do đó tổng mức tiêu thụ của một tài nguyên nhất định. Có lẽ tôi nên nội suy chúng để lấy một số trung bình theo các khoảng thời gian đều đặn (ví dụ: số lượng mỗi tuần) và sau đó sử dụng dữ liệu đó làm dữ liệu chuỗi thời gian để ngoại suy dữ liệu trong tương lai?

Hãy nghĩ về sự khác biệt về thời gian là sự khác biệt về giá trị 'x' của bạn trên một âm mưu. Hầu hết các loại phân tích hồi quy sẽ tính đến sự khác biệt khác nhau. Hãy thử dữ liệu mẫu của bạn bằng hàm GROWTH trong Excel, sử dụng hồi quy theo cấp số nhân. Nếu bạn thay đổi ngày, giá trị dự kiến ​​của bạn sẽ thay đổi tương ứng.

3

Bắt đầu như một bình luận, phát triển quá lâu ...

nó không được 'lấy mẫu' theo định kỳ, vì vậy tôi nghĩ rằng nó không đủ điều kiện làm dữ liệu Chuỗi thời gian

Đây là một kết luận sai lầm - đó chắc chắn là chuỗi thời gian. Một chuỗi thời gian có thể được lấy mẫu bất thường, nó chỉ có xu hướng yêu cầu khác với các phương pháp thông thường khi có.

Vấn đề này dường như liên quan đến các vấn đề ngẫu nhiên như mức đập (nước thường được sử dụng với tốc độ khá ổn định theo thời gian, đôi khi tăng hoặc giảm nhanh hoặc giảm nhanh, trong khi ở thời điểm khác, nó khá ổn định), trong khi mức đập có xu hướng chỉ tăng nhanh chóng (về cơ bản trong các bước nhảy), khi lượng mưa xảy ra. Các mô hình sử dụng và bổ sung giấy có thể hơi giống nhau (mặc dù số lượng đặt hàng có thể có xu hướng ổn định hơn và với số lượng tròn hơn nhiều so với lượng mưa và xảy ra bất cứ khi nào mức độ thấp).

Nó cũng liên quan đến vốn của công ty bảo hiểm (nhưng loại đảo ngược) - ngoài vốn ban đầu, tiền từ phí bảo hiểm (chi phí hoạt động ròng) và đầu tư khá ổn định (đôi khi nhiều hơn hoặc ít hơn), trong khi thanh toán chính sách bảo hiểm có xu hướng được thực hiện tương đối lớn lượng.

Cả hai điều đó đã được mô hình hóa, và có thể cung cấp một chút cái nhìn sâu sắc cho vấn đề này.


-1

bạn nên xem WEKA. Nó là một công cụ và API Java với một bộ thuật toán học máy. Đặc biệt bạn nên tìm kiếm các thuật toán phân loại.

Chúc may mắn


Làm thế nào một thuật toán phân loại sẽ cho tôi một dự đoán định lượng?

@ Luke404: Weka có 3 loại thuật toán (phân loại, phân cụm và khai thác liên kết) và họ đã quyết định đưa hồi quy vào phần phân loại. Nhưng nói chung bạn đúng, phân loại và dự đoán định lượng là một số điều khác nhau.

-1

Tôi sẽ sử dụng bình phương tối thiểu tuyến tính để phù hợp với một mô hình cho mức tiêu thụ tích lũy (tức là chạy tổng số trang theo ngày). Một giả định ban đầu sẽ là sử dụng đa thức bậc một. Tuy nhiên, phần dư chỉ ra rằng mức độ đầu tiên đang thiếu dữ liệu trong ví dụ, vì vậy bước hợp lý tiếp theo sẽ là tăng nó lên mức độ thứ hai (tức là bậc hai). Điều này loại bỏ độ cong trong phần dư và hệ số âm hơi cho số bình phương có nghĩa là tốc độ tiêu thụ đang giảm theo thời gian, điều này có vẻ trực quan khi hầu hết mọi người có thể có xu hướng sử dụng ít giấy hơn theo thời gian. Đối với dữ liệu này, tôi không nghĩ rằng bạn cần phải vượt quá mức độ thứ hai, vì bạn có thể bắt đầu quá mức và ngoại suy kết quả có thể không có ý nghĩa.

Bạn có thể thấy sự phù hợp (bao gồm phép ngoại suy) và phần dư trong các ô bên dưới.

Phù hợp dư

Nếu bạn có thể, có thể tốt để thực hiện bootstrapping để có ước tính tốt hơn về các lỗi dự đoán.


Bởi vì phần dư trong tiêu dùng tích lũy sẽ có mối tương quan mạnh mẽ , phương pháp này không có vẻ hợp lý về mặt thống kê. Sử dụng một phương pháp bậc hai chỉ phù hợp với các bài báo về vấn đề cơ bản này; nó không thể chữa được
whuber

-2

Tôi nghĩ rằng bạn có thể nhận được dữ liệu của bạn bằng cách sử dụng nghiên cứu hoạt động .

Tại sao bạn không thử tìm một số phương trình lấy biến số lượng giấy được sử dụng trong một khoảng thời gian, người sử dụng giấy, v.v.?

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.