স্নায়বিক নেটওয়ার্ক, অটো.রিমা এবং ইএসএস সহ আর সময়-সিরিজের পূর্বাভাস


10

সময় সিরিজের পূর্বাভাস দেওয়ার জন্য আমি নিউরাল নেটওয়ার্কগুলি ব্যবহার করার বিষয়ে কিছুটা শুনেছি।

আমি কীভাবে তুলনা করতে পারি, আমার টাইম-সিরিজ (দৈনিক খুচরা ডেটা) পূর্বাভাস দেওয়ার জন্য কোন পদ্ধতিটি আরও ভাল: অটো.রিমা (এক্স), এটস (এক্স) বা নেটনেটার (এক্স)।

আমি অটো.আরিয়ামার সাথে এআইসি বা বিআইসির মাধ্যমে ইটের সাথে তুলনা করতে পারি। তবে আমি কীভাবে তাদের নিউরাল নেটওয়ার্কগুলির সাথে তুলনা করতে পারি?

উদাহরণ স্বরূপ:

   > dput(x)
 c(1774, 1706, 1288, 1276, 2350, 1821, 1712, 1654, 1680, 1451, 
 1275, 2140, 1747, 1749, 1770, 1797, 1485, 1299, 2330, 1822, 1627, 
 1847, 1797, 1452, 1328, 2363, 1998, 1864, 2088, 2084, 594, 884, 
 1968, 1858, 1640, 1823, 1938, 1490, 1312, 2312, 1937, 1617, 1643, 
 1468, 1381, 1276, 2228, 1756, 1465, 1716, 1601, 1340, 1192, 2231, 
 1768, 1623, 1444, 1575, 1375, 1267, 2475, 1630, 1505, 1810, 1601, 
 1123, 1324, 2245, 1844, 1613, 1710, 1546, 1290, 1366, 2427, 1783, 
 1588, 1505, 1398, 1226, 1321, 2299, 1047, 1735, 1633, 1508, 1323, 
 1317, 2323, 1826, 1615, 1750, 1572, 1273, 1365, 2373, 2074, 1809, 
 1889, 1521, 1314, 1512, 2462, 1836, 1750, 1808, 1585, 1387, 1428, 
 2176, 1732, 1752, 1665, 1425, 1028, 1194, 2159, 1840, 1684, 1711, 
 1653, 1360, 1422, 2328, 1798, 1723, 1827, 1499, 1289, 1476, 2219, 
 1824, 1606, 1627, 1459, 1324, 1354, 2150, 1728, 1743, 1697, 1511, 
 1285, 1426, 2076, 1792, 1519, 1478, 1191, 1122, 1241, 2105, 1818, 
 1599, 1663, 1319, 1219, 1452, 2091, 1771, 1710, 2000, 1518, 1479, 
 1586, 1848, 2113, 1648, 1542, 1220, 1299, 1452, 2290, 1944, 1701, 
 1709, 1462, 1312, 1365, 2326, 1971, 1709, 1700, 1687, 1493, 1523, 
 2382, 1938, 1658, 1713, 1525, 1413, 1363, 2349, 1923, 1726, 1862, 
 1686, 1534, 1280, 2233, 1733, 1520, 1537, 1569, 1367, 1129, 2024, 
 1645, 1510, 1469, 1533, 1281, 1212, 2099, 1769, 1684, 1842, 1654, 
 1369, 1353, 2415, 1948, 1841, 1928, 1790, 1547, 1465, 2260, 1895, 
 1700, 1838, 1614, 1528, 1268, 2192, 1705, 1494, 1697, 1588, 1324, 
 1193, 2049, 1672, 1801, 1487, 1319, 1289, 1302, 2316, 1945, 1771, 
 2027, 2053, 1639, 1372, 2198, 1692, 1546, 1809, 1787, 1360, 1182, 
 2157, 1690, 1494, 1731, 1633, 1299, 1291, 2164, 1667, 1535, 1822, 
 1813, 1510, 1396, 2308, 2110, 2128, 2316, 2249, 1789, 1886, 2463, 
 2257, 2212, 2608, 2284, 2034, 1996, 2686, 2459, 2340, 2383, 2507, 
 2304, 2740, 1869, 654, 1068, 1720, 1904, 1666, 1877, 2100, 504, 
 1482, 1686, 1707, 1306, 1417, 2135, 1787, 1675, 1934, 1931, 1456)

অটো.রিমা ব্যবহার:

y=auto.arima(x)
plot(forecast(y,h=30))
points(1:length(x),fitted(y),type="l",col="green")

এখানে চিত্র বর্ণনা লিখুন

> summary(y)
Series: x 
ARIMA(5,1,5)                    

Coefficients:
         ar1      ar2     ar3      ar4      ar5      ma1     ma2      ma3     ma4      ma5
      0.2560  -1.0056  0.0716  -0.5516  -0.4822  -0.9584  1.2627  -1.0745  0.8545  -0.2819
s.e.  0.1014   0.0778  0.1296   0.0859   0.0844   0.1184  0.1322   0.1289  0.1388   0.0903

sigma^2 estimated as 58026:  log likelihood=-2191.97
AIC=4405.95   AICc=4406.81   BIC=4447.3

Training set error measures:
                   ME     RMSE      MAE       MPE     MAPE      MASE
Training set 1.457729 240.5059 173.9242 -2.312207 11.62531 0.6157512

Ets ব্যবহার করে:

fit <- ets(x)
plot(forecast(fit,h=30))
points(1:length(x),fitted(fit),type="l",col="red")

এখানে চিত্র বর্ণনা লিখুন

 > summary(fit)
 ETS(M,N,N) 

 Call:
  ets(y = x) 

   Smoothing parameters:
     alpha = 0.0449 

   Initial states:
     l = 1689.128 

   sigma:  0.2094

      AIC     AICc      BIC 
 5570.373 5570.411 5577.897 

 Training set error measures:
                    ME     RMSE      MAE      MPE     MAPE      MASE
 Training set 7.842061 359.3611 276.4327 -4.81967 17.98136 0.9786665

এক্ষেত্রে অটো.আরারিমা আরও ভাল ফিট করে।

আসুন নিউরাল নেটওয়ার্ক গাওয়ার চেষ্টা করুন:

 library(caret)
 fit <- nnetar(x)
 plot(forecast(fit,h=60))
 points(1:length(x),fitted(fit),type="l",col="green")

এখানে চিত্র বর্ণনা লিখুন

গ্রাফ থেকে, আমি দেখতে পাচ্ছি, যে নিউরাল নেটওয়ার্ক মডেলটি বেশ ভাল ফিট করে, তবে আমি কীভাবে এটি অটো.রিমা / ইটের সাথে তুলনা করতে পারি? আমি কীভাবে এআইসিকে গণনা করতে পারি?

আরেকটি প্রশ্ন হ'ল, যদি সম্ভব হয় তবে নিউরাল নেটওয়ার্কের জন্য আত্মবিশ্বাসের ব্যবধান কীভাবে যুক্ত করা যায়, যেমন এটি Auto.arima / ets এর জন্য স্বয়ংক্রিয়ভাবে যুক্ত হয়।?

উত্তর:


14

ইন-স্যাম্পেল ফিটগুলি নমুনা পূর্বাভাসের সঠিকতার জন্য নির্ভরযোগ্য গাইড নয় । পূর্বাভাসের সঠিকতা পরিমাপে সোনার মান হোল্ডআউট নমুনা ব্যবহার করা। প্রশিক্ষণের নমুনা থেকে শেষ 30 দিন সরিয়ে ফেলুন, আপনার মডেলগুলিকে বাকী ডেটাতে ফিট করুন, হোল্ডআউট নমুনাটি পূর্বাভাস দেওয়ার জন্য লাগানো মডেলগুলি ব্যবহার করুন এবং মেন অ্যাবসুলিউট ডিভিয়েশনস (এমএডি) বা ভারী গড়ন নিখরচত শতাংশের ত্রুটিগুলি ব্যবহার করে হোল্ডআউটে যথার্থতার তুলনা করুন (wMAPEs)।

এখানে আর ব্যবহার করে একটি উদাহরণ দেওয়া হচ্ছে আমি এম 3 প্রতিযোগিতার 2000 তম সিরিজটি ব্যবহার করছি যা ইতিমধ্যে প্রশিক্ষণ সিরিজ M3[[2000]]$xএবং পরীক্ষার ডেটাতে বিভক্ত M3[[2000]]$xx। এটি মাসিক তথ্য। শেষ দুটি লাইন দুটি মডেল থেকে পূর্বাভাসের ডাব্লুএমএইপি আউটপুট দেয় এবং আমরা এখানে দেখি যে আরিমা মডেল (ডাব্লুএমএইপি 18.6%) স্বয়ংক্রিয়ভাবে লাগানো ইটিএস মডেলকে (32.4%) ছাড়িয়ে গেছে:

library(forecast)
library(Mcomp)

M3[[2000]]

ets.model <- ets(M3[[2000]]$x)
    arima.model <- auto.arima(M3[[2000]]$x)

ets.forecast <- forecast(ets.model,M3[[2000]]$h)$mean
arima.forecast <- forecast(arima.model,M3[[2000]]$h)$mean

sum(abs(ets.forecast-M3[[2000]]$xx))/sum(M3[[2000]]$xx)
sum(abs(arima.forecast-M3[[2000]]$xx))/sum(M3[[2000]]$xx)

তদতিরিক্ত, দেখে মনে হচ্ছে 280-300 সূচকের নিকটে অস্বাভাবিক উচ্চ বিক্রয় রয়েছে। এটি কি ক্রিসমাস বিক্রয় হতে পারে? আপনি যদি এগুলির মতো ক্যালেন্ডার ইভেন্টগুলি সম্পর্কে জানেন তবে আপনার পূর্বাভাস মডেলটিকে ব্যাখ্যামূলক ভেরিয়েবল হিসাবে খাওয়ানো ভাল হবে, যা পরেরবার ক্রিসমাস ঘুরে বেড়াতে আপনাকে আরও ভাল পূর্বাভাস দেয়। আপনি এটি সহজেই আরিমা (এক্স) এবং এনএনএসে করতে পারেন, ইটিএসে খুব সহজে নয়।

শেষ অবধি, আমি পূর্বাভাসের উপর এই পাঠ্যপুস্তকের সুপারিশ করছি: http://otexts.com/fpp/


উত্তরের জন্য ধন্যবাদ. আপনার পরামর্শগুলি খুব ভাল, তবে দুর্ভাগ্যক্রমে সেগুলি আমার পক্ষে উপযুক্ত নয়। আমার বিভিন্ন সময়সীমার সাথে প্রচুর টাইম-সিরিজ রয়েছে এবং তাদের জন্য আমার পূর্বাভাস করা দরকার, তাই আমি একটি সহজ এবং সেরা মডেলটি খুঁজছি। আমি ভেবেছিলাম, যদি আমি এআইসি দ্বারা পদ্ধতিগুলির তুলনা করতে পারি তবে আমি সেরাটি বেছে নেব।
জুরগিটা

আমি প্রতিটি সময় নিজেই
সিরিয়ের

অটো.রিমা পূর্বাভাস মডেলটিতে কী ব্যাখ্যাযোগ্য পরিবর্তনশীল (ক্রিসমাসের দিন) যুক্ত করা সম্ভব? নাকি আরিমা নিয়ে কাজ করার সময়ই তা সম্ভব?
জুরগিটা

1
আপনি নিজের সিরিজটির উপর একটি লুপ লিখতে পারেন এবং দেখুন যে পদ্ধতিটি প্রতিটি সিরিজের জন্য সেরা ডাব্লুএমএইপি দেয়। যদি একটি পদ্ধতি অন্যকে পরিষ্কারভাবে সাফল্য দেয় তবে সমস্ত সিরিজের জন্য একটিটি ব্যবহার করুন। অন্যথায়, প্রতি সিরিজ বিভিন্ন পদ্ধতি ব্যবহার সম্পর্কে চিন্তা করুন। AIC আপনাকে একাধিক সিরিজ সাহায্য করবে না ! বা আরও ভাল, দৈনিক খুচরা সময় সিরিজের বিপুল সংখ্যক ভবিষ্যতের পূর্বাভাস দেওয়ার জন্য উত্সর্গীকৃত সফ্টওয়্যার সন্ধান করুন যা দাম পরিবর্তন ইত্যাদিকেও অ্যাকাউন্টে গ্রহণ করে। এটি আমি জীবিকার জন্য যা করি, আমি আনন্দের সাথে আপনাকে আমাদের বিক্রয়কারীদের সাথে যোগাযোগ করব ;-) তবে আমি আপনাকে এখানে সহায়তা করতে পেরে খুশি হব!
স্টিফান কোলাসা

জন্য auto.arima(), xregপরামিতি ব্যবহার করুন । দেখুন ?auto.arima
স্টিফান কোলাসা

4

উপরে স্টিফানের পরামর্শটি ভাল। আমি যুক্ত করব যে AIC ব্যবহার করা অবশ্যই মডেলগুলির মধ্যে চয়ন করার একটি বৈধ উপায় - তবে তাদের মধ্যে নয়। উদাহরণস্বরূপ, আপনি কোন আরিমা মডেল (গুলি), কোন সূচকযুক্ত স্মুথিং মডেল (গুলি) ইত্যাদি চয়ন করতে তথ্য মানদণ্ড ব্যবহার করতে পারেন এবং তারপরে নমুনা পূর্বাভাসের বাইরে আপনার শীর্ষ প্রার্থীদের তুলনা করুন (এমএএসই, এমএপিই, ইত্যাদি) )।

http://robjhyndman.com/hyndsight/aic/


1

প্রো রব এই ভিডিওটি দেখুন https://www.youtube.com/watch?v=1Lh1HlBUf8k

ভিডিওতে, অধ্যাপক রব সঠিকতা ফাংশন এবং নমুনার নির্ভুলতার মধ্যে এবং নমুনার নির্ভুলতার বাইরে পার্থক্য সম্পর্কে শিখিয়েছিলেন।

অর্থাত্: আপনার ডেটাতে 80-90% বলার সাথে সাথে একটি মডেল ফিট করুন, পূর্বাভাস। তারপরে 10% এর সাথে পূর্বাভাস করা ডেটা ব্যবহার করে নির্ভুলতা পরীক্ষা করুন (যেহেতু আমাদের আপনার 10% ডেটার প্রকৃত মান রয়েছে, তাই আমরা মডেলটির নমুনা নির্ভুলতার বাইরে পরীক্ষা করতে পারি)

পাশাপাশি অটেক্সটে অনলাইন পাঠ্যপুস্তকটি পড়ুন

উল্লিখিত অন্যান্যগুলির মতো, যখন আমরা মডেল বনাম মডেলগুলি তুলনা করি, আমরা পরীক্ষার সেটটির সাথে তুলনা করার জন্য নির্ভুলতা () ব্যবহার করি। তারপরে আপনি এমএই, এমএসই, আরএমএসই ... ইত্যাদির বিভিন্ন ত্রুটি পরিমাপ করতে পারেন যা মডেল বনাম মডেলগুলির তুলনা করতে ব্যবহৃত হয়


0

নাম দেওয়ার পরিবর্তে এনএন মডেলটি ফিট_এনএন ব্যবহার করুন। একইভাবে, ফিট_রিমা এবং ফিট_ইটস। যাতে আপনি সমস্ত মডেল তুলনা করতে পারেন।

library(caret)
#ets
fit_ets <- ets(x)
#ANN
fit_nn <- nnetar(x)
plot(forecast(fit,h=60))
points(1:length(x),fitted(fit_nn),type="l",col="green")
library(forecast)
accuracy(fit_nn)
accuracy(fit_ets)

এখন, আপনি এমই, এমএই বা আপনি যা চান তা ব্যবহার করে দুটি মডেল তুলনা করতে পারেন।


আপনার বক্তব্য পেতে আমাকে কয়েকবার এটি পড়তে হয়েছিল। ভেরিয়েবলের নামকরণ ভাল কোডিং অনুশীলন হলেও এটি উত্তরের কেন্দ্রীয় নয়। আপনার উত্তরের মূল অংশটি চূড়ান্ত লাইনে (এমএই ইত্যাদি ব্যবহার করে)। আপনি যদি এটি হাইলাইট করতে (বা আরও ভাল, প্রসারিত) করতে পারেন তবে এটি এতে উন্নতি করবে।
এমকেটি - মনিকা পুনরায়

আপনি যখন ফাংশন নির্ভুলতা (মডেল) ব্যবহার করেন তখন এটি এমই, এমএই, আরএমএসই, এমপিই ইত্যাদির মতো নির্দিষ্ট পরিসংখ্যান দেয়। আপনি দুটি বা ততোধিক মডেলের তুলনা করতে তাদের যে কোনও বা সমস্ত ব্যবহার করতে পারেন। উদাহরণস্বরূপ বলুন, কমপক্ষে আরএমএসই (রুট মিন স্কোয়ার ত্রুটি) সহ মডেলকে সবার মধ্যে সেরা মডেল হিসাবে বিবেচনা করা হয়।
কোমল বাটুল

এটি জানতে সহায়ক। তবে আমার বক্তব্যটি হ'ল কোডটি কোডিং সম্পর্কিত কোনও সাইট নয়, যদিও কোড অবশ্যই প্রশ্ন ও উত্তরগুলি আলোকিত করতে পারে। এবং সুতরাং আপনার উত্তরটি আরও ভাল হবে যদি আপনি মূল বিষয়টিকে হাইলাইট করেন ।
এমকেটি - মনিকা পুনরায়

প্রশ্নটি ছিল কীভাবে এএনএনকে আরিমার মতো পরিসংখ্যানের মডেলগুলির সাথে তুলনা করা যেতে পারে (যেহেতু এই মডেলগুলি তাদের এআইসি মান ব্যবহার করে তুলনা করা হয়) এবং উত্তরটি এমএই বা আরএমএসইয়ের মতো অন্যান্য পরিসংখ্যানগত মানগুলি ব্যবহার করে যা যথার্থতা () ফাংশন দ্বারা প্রাপ্ত হতে পারে। এতে কোনও বিভ্রান্তির উপায় নেই।
কোমল বাটুল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.