Вхід

Інтелектуальний пакет PREDICTOR. Посібник користувача

Інтелектуальний пакет PREDICTOR
(версія для обчислювального кластера та Grid-мережі)
Посібник користувача

Призначення пакету

Призначення бібліотеки Predictor - статистичне прогнозування в бізнес-розрахунках, наприклад, з метою аналізу обсягів передбачуваних продажів, вибору асортименту товарів та послуг за спрогнозованими цінами, задоволення потреб у чисельності персоналу.

Основні напрямки використання пакету - Finance (фінанси); Planning (планування); Pricing (ціноутворення); Marketing (маркетинг); Production (виробництво); Operations Stock (фонди, склади); Demand (попит на товари і послуги); Personal (потреба в кадрах).

Бібліотека призначена для роботи на обчислювальному кластері з використанням MPI або в грід-мережі. Бібліотеки Predictor дозволяють користувачеві використовувати готові програми з пакету для швидкого прогнозування або створення свого додатку, який буде використовувати функції бібліотеки Predictor.

У Predictor реалізовані 26 методів прогнозування, серед яких назвемо прості і лінійні ковзаючі середні; згладжування просте, адаптивне, лінійне за Холтом, лінійне за Брауном, квадратичне за Брауном, адитивне сезонне за Вінтерзом, сезонне за Холтом-Вінтерзом, сезонне за Брауном-Харріссоном; регресія: авторегресія, S-криві, крива Ґомпертця, логістична крива, популярні і визначені користувачем тренди; методологія Бокса-Дженкінса, ARARMA, ARIMA-моделі з сезонністю в AR і MA, узагальнена адаптивна фільтрація GAF; множинна регресія; нейронні мережі.

Підтримується динамічне прогнозування по мірі надходження даних, управління сценаріями і повторне їх використання. Поряд з документацією, в поставку пакету входить багато тестових прикладів.

Ключовий момент - максимальна рекомендаційна здатність пакету Predictor стосовно надійності прогнозів.

За визначенням неможливо апріорі оцінити точність прогнозів, тому в спеціальному режимі Тест, припускаючи невідомими останні значення вхідної послідовності даних, робиться спроба їх спрогнозувати обраним методом, а потім отримані прогнози порівнюються з реальними значеннями.

Якщо вони сильно відрізняються, недоцільно будувати прогноз цим методом з вказаними параметрами. В іншому випадку прогнозування триває в режимі Прогноз з використанням всіх значень вихідних даних, тому результати відрізняються від режиму Тест і виходять більш точними.

Робота з пакетом

Автоматичний режим побудови прогнозу

Перш ніж почати будувати прогноз, необхідно створити паспорт задачі для програми Predictor.

Паспорт задачі описується в текстовому файлі і має наступну структуру.

Вміст файлу Task.ini:

[PREDICTOR]

[Files]                                        - секція файли

FileInput=y_in.txt;                     - файл з вхідними даними

FileOutput=y_out.txt;               - файл з результатом побудови прогнозу

FileRes=y_res.txt;                      - файл з результатом підбору методів прогнозування

[MakeForecast]                          - секція параметри прогнозування

SeasonNum=1;                           - кількість сезонів

HorizontNum=3;                         - глибина (горизонт) прогнозу

NumBestRes=4;                          - кількість методів з кращим результатом прогнозу

Method1=mtdSimpleAR;             - якщо параметр відсутній – ведеться пошук кращого методу, інакше будується прогноз тільки вказаним методом (назви методів описані нижче)

//Metod name: mtdNaive1, mtdNaive2, mtdSingleMA, mtdLinearMA, mtdAdaptiveES, mtdESMA, mtdHolt, mtdHoltWinters, mtdAdditiveWinters, mtdBrown1, mtdBrown2, mtdSimpleAR, mtdSimpleARIMA, mtdSeasonalARIMA, mtdGAF, mtdClassicalDecomposition, mtdAdditiveDecomposition, mtdCensus2,mtdHarrison_HS, mtdSeasonIndices, mtdLogisticT, mtdGompertzT, mtdRegression

Після заповнення файлу задачі запустити прогнозування можна таким способом:

Просто ім'я програми predictor (у цьому випадку передбачається, що паспорт задачі зберігається в директорії, звідки йде запуск програми і називається task.ini) або predictor zadanie.ini (паспорт задачі у файлі zadanie.ini).

Стосовно до СКІТ3, запуск прогнозу виглядає наступним чином:

sbatch -p scit3 -J predictor -n 4 /opt/slurm/bin/run.ompi predictor zadanie.ini

Побудова прогнозу в грід

Паспорт задачі для грід-мережі з налаштованим середовищем виконання PREDICTOR виглядає так:

&(executable="run_predictor")

(arguments="zadanie.ini")

(inputfiles=

       ("zadanie.ini" "zadanie.ini")

       ("y_in.txt" "y_in.txt")

)

(outputfiles=

       ("y_out.txt" "y_out.txt")

       ("y_res.txt" "y_res.txt")

)

(jobname=prognoz)

(stdout=stdout.txt)

(stderr=stderr.txt)

(cpuTime="240")

(count=4)

(runTimeEnvironment="PREDICTOR")

В середовищі виконання PREDICTOR програма працює в режимі розпаралелювання.

Для побудови прогнозу, з використанням грід-вузлів, на яких немає середовища виконання PREDICTOR, необхідно використовувати задачу:

&(executable="./predictor")

(arguments="zadanie.ini")

(inputfiles=

       ("zadanie.ini" "zadanie.ini")

       ("y_in.txt" "y_in.txt")

       ("predictor" "gsiftp://nordug.bitp.kiev.ua/predictor/predictor")

)

(outputfiles=

       ("y_out.txt" "y_out.txt")

       ("y_res.txt" "y_res.txt")

)

(jobname=prognoz)

(stdout=stdout.txt)

(stderr=stderr.txt)

В представленій задачі прибраний атрибут runTimeEnvironment та доданий шлях до програми ("predictor" "gsiftp://nordug.bitp.kiev.ua/predictor/predictor").

В цьому випадку програма виконується без режиму розпаралелювання.

Використання функцій бібліотеки

Функції бібліотеки можна використовувати при розробці своїх програм, які будуть виконуватися на обчислювальному кластері або в грід-мережі.

Функції написані на мові С++ для комп'ютерів MIMD-архітектури та систем паралельного програмування MPI.

Для того, щоб будувати прогноз на СКІТ-3 з використанням функцій і класів з бібліотеки libpredictor необхідно:

1) написати main-програму для середовища паралельного програмування MPI із зверненням на необхідні функції і класи бібліотеки libpredictor. Для компілятора необхідно вказати додаткові параметри:

-I/opt/predictor/include -L/opt/predictor/lib -lpredictor;

2) запустити main-програму на виконання на СКИТ-3 на необхідній кількості процесорів.

Приклад програми:

#include "predictor.h" //Підключення заголовочного файлу

int main(int argc, char* argv[])

{

CPredictor pr1; //Створення екземпляру об'єкту типу CPredictor

res=ReadTask(pr1); //Читання параметрів задачі

pr1.loadY(); //Завантажити ряд даних

pr1.prepData(); //Перевірити та підготувати дані для обробки

pr1.fOutOpen(); //Відкрити файли для результату

MPI_Init(&argc, &argv); //Початок паралельної частини

pr1.automakeTest();  //Пошук кращих методів

if(g_nNode==0)

{

      pr1.saveRes(); //Збереження списку обраних методів та їх параметрів

      pr1.automakePredict(); //Автоматична побудова прогнозу кращими методами

}

else

{

       pr1.make(); //Побудова прогнозу одним методом

       pr1.saveY();//Збереження результату

}

MPI_Finalize(); //Закінчення паралельної частини

pr1.fOutClose(); //Закриття результуючих файлів

return(0);

}

Опис основних функцій інтерфейсного класу CPredictor:

class CPredictor:

Змінні-члени класу:

FileInput,      Ім'я файлу з вхідними даними

FileOutput,    Ім'я файлу для результату прогнозування

FileTestY,          Ім'я файлу для проміжного результату (якщо необхідно)

FileRes;       Ім'я файлу для списку кращих методів та їх інтегральної оцінки

SeasonNum,      Кількість сезонів у вхідному ряду даних

HorizontNum;   Глибина побудови прогнозу

NumBestRes;         Кількість визначення кращих методів

Функції-члени класу:

loadY();            Завантажити новий ряд даних

prepData();              Перевірити-підготувати дані для обробки

automakeTest();          Виконати пошук кращих методів для ряду даних

automakePredict();  Виконати прогнозування кращими методами

saveY();            Зберегти результат прогнозу

saveRes();          Зберегти список кращих методів та їх інтегральні оцінки

Детально основні функції бібліотеки описані в документації.

Приклад файлів даних

Вхідні дані

0

1

4

9

16

25

36

49

64

81

Результат

Resultat

NAME                   IE    

Brown2_ES      75.994693    

AdaptiveES     65.663391  

SimpleMA        63.745591    

ESMA              63.363777

Прогноз

mtdBrown2

0.000000

1.000000

-16.811633

2.008173

13.578748

24.136541

35.683960

48.881854

63.955133

80.982779

99.993348

120.997423

143.999001

168.999613

195.999851

224.999942

255.999978

...

mtdAdaptiveES

0.000000

0.000000

0.000386

0.001929

0.005400

0.011571

0.021212

0.035092

0.053983

0.078654

0.109873

0.148411

121.000000

144.000000

169.000000

Лог файл

Predictor.log

res=0,

Naive1

residuals are NOT:

1) autocorrelated insignificantly

2) stochastic

3) normally distributed

4) equal to zero in mean

Make Forecast better methods!

NumMetod#=1, of 4,

mtdBrown2

MakeForecast res=0, residuals are NOT:

1) autocorrelated insignificantly

2) stochastic

3) normally distributed

4) equal to zero in mean

NumMetod#=4, of 4,

mtdESMA

MakeForecast res=0, residuals are NOT:

1) autocorrelated insignificantly

2) stochastic

3) normally distributed

4) equal to zero in mean

Make Forecast End!

вычисления на суперкомпьютере, сверхбыстрые вычисления, рендеринг, фитнес клубы, спортивные клубы