मशीन सीखने के साथ कई अवधियों का पूर्वानुमान


9

मैंने हाल ही में अपने टाइम सीरीज़ के ज्ञान को पुन: प्राप्त किया और महसूस किया कि मशीन लर्निंग ज्यादातर पूर्वानुमान से केवल एक कदम आगे है।

साथ एक कदम आगे पूर्वानुमान मैं मतलब पूर्वानुमान जो, उदाहरण के लिए, अगर हम प्रति घंटा डेटा है, डेटा 10 से पूर्वानुमान 11 और 11am करने के लिए पूर्वाह्न 12 बजे के आदि के लिए उपयोग

यहाँ छवि विवरण दर्ज करें

क्या मशीन सीखने के तरीके एच-स्टेप्स-फॉरवर्ड फोरकास्ट का उत्पादन कर सकते हैं? एच-स्टेप-फॉरवर्ड फोरकास्ट से मेरा मतलब है कि, उदाहरण के लिए, प्रति घंटा डेटा मानकर, हम 11,12,13,14,15,16,17 के लिए अनुमान प्राप्त करने के लिए 7-स्टेप-फॉरवर्ड पूर्वानुमान बनाने के लिए सुबह 10 बजे से डेटा का उपयोग करते हैं। ' ओ घड़ी

उदाहरण तस्वीर: यहाँ छवि विवरण दर्ज करें

मेरे मुख्य प्रश्न से संबंधित मुझे आश्चर्य है:

  • वे कौन से कारण हैं जो मैं किसी को एच-स्टेप-फॉरवर्ड फोरकास्ट बनाने के लिए मशीन लर्निंग का उपयोग नहीं करता?
  • यदि मशीन सीखने का उपयोग करने का कोई तरीका है, तो क्या यह ARIMA से अधिक या कम सटीक है?

जवाबों:


7

(इसका एक हिस्सा मेरी पिछली पोस्ट से लिया गया है ) सबसे पहले आपको मल्टीस्टेप टाइम सीरीज़ फोरकास्टिंग करने के लिए दो अलग-अलग तरीकों को अलग करने की ज़रूरत है: रीसर्चिव फोरकास्टिंग और डायरेक्ट फोरकास्टिंग:

  • पुनरावर्ती पूर्वानुमान (इसे पुनरावृत्त पूर्वानुमान भी कहा जाता है) में आप अपने मॉडल को केवल एक कदम आगे के पूर्वानुमान के लिए प्रशिक्षित करते हैं। प्रशिक्षण पूरा होने के बाद आप अपने अंतिम मॉडल को 1 कदम आगे, 2 कदम आगे, आदि का पूर्वानुमान लगाने के लिए लागू करते हैं ... जब तक कि आप वांछित तक नहीं पहुंच जातेnचरणों का पूर्वानुमान क्षितिज। ऐसा करने के लिए, आप अगले चरण को उत्पन्न करने के लिए मॉडल के प्रत्येक क्रमिक चरण से पूर्वानुमान को फीड करते हैं। इस दृष्टिकोण का उपयोग पारंपरिक पूर्वानुमान एल्गोरिदम जैसे ARIMA और एक्सपोनेंशियल स्मूथिंग एल्गोरिदम द्वारा किया जाता है, और इसका उपयोग मशीन लर्निंग आधारित पूर्वानुमान के लिए भी किया जा सकता है ( इस पोस्ट को एक उदाहरण के लिए देखें, और कुछ चर्चा के लिए यह पोस्ट )।
  • प्रत्यक्ष पूर्वानुमान तब होता है जब आप प्रत्येक चरण के लिए एक अलग मॉडल को प्रशिक्षित करते हैं (इसलिए आप पूर्वानुमान को "सीधे" करने की कोशिश कर रहे हैं nटी पहुँचने के बजाय आगे कदम nपुनरावर्ती कदम। बेन तायेद एट अल देखें प्रत्यक्ष पूर्वानुमान और अधिक जटिल संयुक्त दृष्टिकोणों की चर्चा के लिए।

अब आपके मुख्य प्रश्न का उत्तर देने के लिए:

क्या मशीन सीखने के तरीके एच-स्टेप्स-फॉरवर्ड फोरकास्ट का उत्पादन कर सकते हैं?

हाँ एमएल विधियाँ, और वे पुनरावर्ती और प्रत्यक्ष मल्टीस्टेप पूर्वानुमानों का उपयोग करके एच-स्टेप्स फॉरवर्ड पूर्वानुमान का उत्पादन कर सकते हैं। इतना ही नहीं, बल्कि प्रत्यक्ष मल्टी-स्टेप फोरकास्टिंग के लिए वे वास्तव में ARIMA या एक्सपोनेंशियल फुटिंग जैसे पारंपरिक मॉडलों की तुलना में कार्य के अधिक अनुकूल हैं। ध्यान दें कि प्रत्यक्ष मल्टी-स्टेप फोरकास्टिंग के लिए, आपको हाथ से आगे बढ़ने से पहले निर्दिष्ट करने की आवश्यकता है जिसके लिए आप अपने मॉडल के अनुसार पूर्वानुमान और प्रशिक्षण देना चाहते हैं, जबकि पुनरावर्ती पूर्वानुमान के लिए आप भविष्य के किसी भी चरण के लिए अपने मॉडल का उपयोग कर सकते हैं। ।

इसके अलावा शेवरॉन और हेंड्री का तर्क है कि कुछ मामलों में प्रत्यक्ष मल्टी-स्टेप फोरकास्टिंग पुनरावर्ती पूर्वानुमान की तुलना में अधिक सटीक है - इसका मतलब है कि एमएल पारंपरिक तरीकों की तुलना में अधिक सटीक होगा।

आपके अन्य सवालों के लिए:

  • वे कौन से कारण हैं जो मैं किसी को एच-स्टेप-फॉरवर्ड फोरकास्ट बनाने के लिए मशीन लर्निंग का उपयोग नहीं करता?

कई लोग ML का उपयोग मल्टी-स्टेप फोरकास्टिंग के लिए कर रहे हैं, विशेष रूप से न्यूरल नेटवक्र्स का उपयोग कर रहे हैं: Hyndman की nnetar विधि R पूर्वानुमान पैकेज में उपलब्ध है, Kourentzes का nnfor R पैकेज, Amazon का DeepAR मॉडल, और कई अन्य।

XGBoost को कुछ कागले समय श्रृंखला प्रतियोगिताओं में भी सफलतापूर्वक उपयोग किया गया है।

बोंटेम्पि एट अल देखें एक सामान्य चर्चा के लिए।

  • यदि मशीन सीखने का उपयोग करने का कोई तरीका है, तो क्या यह ARIMA से अधिक या कम सटीक है?

यह एक खुला प्रश्न है, और स्पष्ट रूप से उस डेटा और एप्लिकेशन पर निर्भर करता है जिसके लिए एक पूर्वानुमान है।


1

मैं पिछले कुछ महीनों में विसंगति का पता लगाने के लिए समय श्रृंखला के साथ खेल रहा हूं और मैं अपने अनुभव आपके साथ साझा कर सकता हूं।

मैं जिस समय श्रृंखला में काम कर रहा था, उसमें दो मौसमी (दैनिक और साप्ताहिक), दिन के समय कोई प्रवृत्ति और कई चोटियों की विशेषता थी।

मैंने कई प्रयोग किए और फिर मैंने LSTM न्यूरल नेट पर आधारित एक मॉडल को चुना क्योंकि मेरे मामले में यह अरिमा से बेहतर था, लेकिन निश्चित रूप से आंकड़ों में सब कुछ जैसा है, सामान्य समाधान नहीं है।

भविष्य में एक न्यूरल नेट के साथ एक से अधिक बार कदम की भविष्यवाणी करना बहुत सरल है, आपको एक के बजाय एन मानों को आउटपुट करने की आवश्यकता होगी और यह कि एन आउटपुट वास्तविक एन टिप्पणियों की तुलना में होगा।

अपने अनुभव से मैं आपको बता सकता हूं कि कम एन (1 का कहना है) का उपयोग करके, मॉडल वास्तव में "मौसमी" सीखने के बिना, नए की भविष्यवाणी करने के लिए अतीत में कुछ समय के कदम का सख्ती से उपयोग करेगा। दूसरी तरफ, एन बहुत अधिक मच बढ़ने से, मौसमी सीखी जाती है, लेकिन समग्र सटीकता कम हो जाती है।

अपने विश्लेषण के उद्देश्य से मैंने एन = 4 (भविष्य में 2 घंटे) को एक अच्छा समझौता पाया।


1

सामान्य प्रश्न में आपके प्रश्न का उत्तर देने के लिए, मशीन लर्निंग का उपयोग करना और एच-स्टेप्स-फॉरवर्ड फोरकास्ट की भविष्यवाणी करना संभव है । मुश्किल हिस्सा यह है कि आपको अपने डेटा को एक मैट्रिक्स में बदलना होगा जिसमें आपके पास है, प्रत्येक अवलोकन के लिए एक परिभाषित सीमा के लिए समय श्रृंखला के अवलोकन और पिछले मूल्यों का वास्तविक मूल्य है। आपको मैन्युअल रूप से परिभाषित करने की आवश्यकता होगी कि डेटा की कौन सी सीमा है जो आपकी समय श्रृंखला की भविष्यवाणी करने के लिए प्रासंगिक है, वास्तव में, जैसा कि आप एआरआईएमए मॉडल को मापेंगे। मैट्रिक्स की चौड़ाई / क्षितिज महत्वपूर्ण है आपके मैट्रिक्स द्वारा लिए गए अगले मान की सही भविष्यवाणी करने के लिए है। यदि आपका क्षितिज प्रतिबंधित है, तो आपको मौसमी प्रभाव याद आ सकते हैं।

एक बार जब आप ऐसा कर लेते हैं, तो एच-स्टेप्स-फॉरवर्ड की भविष्यवाणी करने के लिए, आपको अपने अंतिम अवलोकन के आधार पर पहले अगले मूल्य की भविष्यवाणी करने की आवश्यकता होगी। फिर आपको भविष्यवाणी को "वास्तविक मूल्य" के रूप में संग्रहित करना होगा, जिसका उपयोग एआरएमआईए मॉडल की तरह, एक समय के स्थानांतरण के माध्यम से दूसरे अगले मूल्य की भविष्यवाणी करने के लिए किया जाएगा । आपको अपने एच-स्टेप्स-फॉरवर्ड प्राप्त करने के लिए प्रक्रिया एच बार को पुनरावृत्त करना होगा। प्रत्येक पुनरावृत्ति पिछली भविष्यवाणी पर निर्भर करेगा।

R कोड का उपयोग करने वाला एक उदाहरण निम्नलिखित होगा।

library(forecast)
library(randomForest)

# create a daily pattern with random variations
myts <- ts(rep(c(5,6,7,8,11,13,14,15,16,15,14,17,13,12,15,13,12,12,11,10,9,8,7,6), 10)*runif(120,0.8,1.2), freq = 24)
myts_forecast <- forecast(myts, h = 24) # predict the time-series using ets + stl techniques
pred1 <- c(myts, myts_forecast1$mean) # store the prediction

# transform these observations into a matrix with the last 24 past values
idx <- c(1:24)
designmat <- data.frame(lapply(idx, function(x) myts[x:(215+x)])) # create a design matrix
colnames(designmat) <- c(paste0("x_",as.character(c(1:23))),"y")

# create a random forest model and predict iteratively each value
rfModel <- randomForest(y ~., designmat)
for (i in 1:24){
  designvec <- data.frame(c(designmat[nrow(designmat), 2:24], 0))
  colnames(designvec) <- colnames(designmat)
  designvec$y <- predict(rfModel, designvec)
  designmat <- rbind(designmat, designvec)
}
pred2 <- designmat$y

#plot to compare predictions
plot(pred1, type = "l")
lines(y = pred2[216:240], x = c(240:264), col = 2)

अब जाहिर है, यह निर्धारित करने के लिए कोई सामान्य नियम नहीं हैं कि समय-श्रृंखला मॉडल या मशीन सीखने का मॉडल अधिक कुशल है या नहीं। मशीन लर्निंग मॉडल के लिए कम्प्यूटेशनल समय अधिक हो सकता है, लेकिन दूसरी ओर, आप उनका उपयोग करके अपनी समय-श्रृंखला की भविष्यवाणी करने के लिए किसी भी प्रकार की अतिरिक्त सुविधाओं को शामिल कर सकते हैं (उदाहरण के लिए केवल संख्यात्मक या तार्किक विशेषताएं नहीं)। सामान्य सलाह होगी कि दोनों का परीक्षण करें, और सबसे कुशल मॉडल चुनें।


यद्यपि आप यह उल्लेख करना चाहते हैं कि जिसे आप टाइम शिफ्टिंग कहते हैं, वह वास्तव में एक मानक अरिमा क्या है। इसीलिए अरिमा-भविष्यवाणियाँ बहुत रैखिक होती हैं।
5

हाँ बिल्कुल। मैं इस कदम को स्पष्ट करने के लिए अपने उत्तर को संपादित करूंगा।
AshOfFire

1
समय-श्रृंखला के मॉडल में आप अतिरिक्त सुविधाएँ भी शामिल कर सकते हैं।
टिम

ARIMAX के साथ सही, लेकिन उन्हें संख्यात्मक होने की आवश्यकता है, और जोड़े गए गुणांक को आसानी से व्याख्या नहीं किया जा सकता क्योंकि ARMA में प्रयुक्त गुणांक।
एशोफायर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.