Вхід

Интеллектуальный пакет 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!

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