Пакет прогнозов R HoltWinters - предотвращение переобучения данных

Я использую пакет прогнозов HoltWinters на языке R для создания прогнозов на основе данных об объеме звонков за месяц.

Большую часть времени он работает хорошо, но имеет тенденцию переоснащать данные, особенно если есть особые периоды, например, ступенчатое изменение потребности в вызовах.

В недавнем примере, в котором есть ступенчатое изменение посередине, альфа задается равной 0,94, бета - равной 0, а гамма - равной 0, что генерирует странный прогноз.

Month   Data
1   7082
2   6407
3   5479
4   5480
5   5896
6   6038
7   5686
8   6126
9   6280
10  6893
11  6028
12  5496
13  3569
14  3383
15  3718
16  3351
17  3340
18  3559
19  3722
20  3201
21  3494
22  2810
23  2611
24  2471
25  7756
26  6922
27  7593
28  6716
29  7278
30  7071

Это сценарий R, который я использовал

scandata <-read_csv("525-gash.csv");
pages <-scandata[,2];
myts <-ts(pages , start=c(2015, 1), frequency = 12)
myforecast <- HoltWinters (myts, seasonal ="additive", 
          optim.start = c(alpha = 0.2, beta = 0.1, gamma = 0.1));
myholt = predict(myforecast, 12 , prediction.interval = FALSE);
plot(myforecast,myholt);

Для сравнения, если я установил для параметров экспоненциального сглаживания стандартные принятые значения - альфа равняется 0,2, бета - 0,1 и гамма - 0,1, я получаю гораздо лучший прогноз.

Я все еще хотел бы использовать часть прогноза с автоматической подгонкой, но хотел бы установить диапазон вокруг альфа, бета и гаммы.

Я пытался установить ограничения на автоматическую настройку, чтобы альфа составляла от 0,1 до 0,5, гамма от 0,1 до 0,3 и гамма от 0,1 до 0,3.

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/HoltWinters.html

Похоже, это должно быть возможно, если установить

optim.control = list() 

функция, но мне не удалось найти способ успешно установить ограничения на альфа, бета и гамма, чтобы заставить ее работать.

Кто-нибудь знает как это сделать?


person Jonty5817    schedule 27.07.2017    source источник


Ответы (1)


Для многопараметрической оптимизации HoltWinters использует алгоритм L-BFGS-B. Можно установить lower и upper пределы для всех параметров, настроив исходную HoltWinters функцию.

Функция редактирования:

fix(HoltWinters)

изменив строку 66 с:

введите здесь описание изображения

to

введите здесь описание изображения

Закройте окно и сохраните изменения (это повлияет только на этот сеанс). Запустите код, как и раньше:

myforecast <- HoltWinters (myts, seasonal ="additive", 
      optim.start = c(alpha = 0.2, beta = 0.1, gamma = 0.1))
person Lstat    schedule 09.08.2017
comment
Выглядит многообещающе. Я пробовал это, но получаю это сообщение об ошибке. Ошибка в hw (p [1L], p [2L], p [3L]): объект 'C_HoltWinters' не найден - person Jonty5817; 10.08.2017
comment
Я должен был добавить, что использую Rstudio - person Jonty5817; 10.08.2017
comment
Аналогичная ошибка возникла при попытке сохранить функцию под другим именем. Вы пробовали R Gui? - person Lstat; 10.08.2017
comment
Только что нашел программу RGui. Это работает, но есть ли способ сделать это как пакетный процесс без необходимости каждый раз запускать fix ()? - person Jonty5817; 10.08.2017
comment
Я могу думать только о том, чтобы переписать функцию и сохранить ее под другим именем. Я пытался это сделать, но возникли ошибки, и я не знаю, как их решить сейчас. Вот почему я разместил это решение только для одного сеанса. - person Lstat; 10.08.2017
comment
Похоже, он ищет ac-файл C_HoltWinters и запутался, см. ссылка - person Jonty5817; 10.08.2017