Построение модели брауна в эксель

Обновлено: 07.07.2024

3. Построение адаптивной модели Брауна. Модель Брауна строится в несколько этапов.

1) По первым пяти точкам временного ряда методом наименьших квадратов оцениваем параметры а0 и а1 линейной модели


.

Получаем начальные значения параметров модели Брауна и , которые соответствуют моменту времени t=0 (определены с помощью функций EXCEL «ОТРЕЗОК» и «НАКЛОН» соответственно.


2) Находим прогноз на первый шаг (t=1):


.

3) Определяем величину отклонения расчетного значения от фактического:


.


4) Скорректируем параметры модели для параметра сглаживания =0,4 по формулам:


;


,

где - коэффициент дисконтирования данных, отражающий степень доверия к более поздним наблюдениям; - параметр сглаживания (=); - отклонение (остаточная компонента).


По условию =0,4, следовательно значение b равно:


.


;


,

5) По модели со скорректированными параметрами a0(t) и a1(t) находим прогноз на следующий момент времени:


.


.

6) Возвращаемся к пункту 3 и повторяем вычисления до конца временного ряда.

7) Вычислим среднюю относительную ошибку для данного параметра сглаживания:


8) Корректировка параметров модели для =0,7 и =0,3:


;


9) Средняя относительная ошибка для данного параметра:


Таким образом, судя по средней относительной ошибке при =0,4 и =0,7, в первом случае =4,1%, а во втором случае =5,0%. Следовательно, =0,4 – лучшее значение параметра сглаживания, т.к. средняя относительная ошибка меньше.

4. Оценим адекватность линейной модели. Рассчитанные по модели значения спроса , остатки и их график были получены в EXCEL одновременно с построением модели (см. «ВЫВОД ОСТАТКА» в прил. 4).

Случайность остаточной компоненты проверим по критерию поворотных точек. В нашем случае общее число поворотных точек в ряду остатков составляет p=4.

Критическое число поворотных точек для a=0,05 и n=9 определяется по формуле



Так как , остатки признаются случайными.


;


;


,

то нет достаточных оснований сделать тот или иной вывод о выполнении свойства независимости. Проверим независимость остатков по коэффициенту автокорреляции первого порядка, который равен (см. прил. 4):


.

Для расчета коэффициента автокорреляции использовалось выражение, составленное из встроенных функций EXCEL:

Критическое значение коэффициента автокорреляции для a=0,05 и n=9 составляет 0,666. Так как коэффициент автокорреляции не превышает по абсолютной величине критическое значение, то это указывает на отсутствие автокорреляции в ряде динамики. Следовательно, модель по этому критерию адекватна.


Проверим равенство нулю математического ожидания уровней ряда остатков. Среднее значение остатков равно нулю: (определено с помощью встроенной функции «СРЗНАЧ»; см. прил. 4). Поэтому гипотеза о равенстве математического ожидания значений остаточного ряда нулю выполняется.

Нормальный закон распределения остатков проверяем с помощью R/S-критерия, определяемого по формуле


,


где emax; emin - наибольший и наименьший остатки соответственно (определялись с помощью встроенных функций «МАКС» и «МИН»); - стандартное отклонение ряда остатков (определено с помощью встроенной функции «СТАНДОТКЛОН»; см. прил. 4).

Критические границы R/S-критерия для a=0,05 и n=9 имеют значения: (R/S)1=2,7 и (R/S)2=3,7. Так как R/S-критерий попадает в интервал между критическими границами, то ряд остатков признается соответствующим нормальному закону распределения вероятностей. Модель по этому критерию адекватна.

Таким образом, выполняются все пункты проверки адекватности модели: модель признается адекватной исследуемому процессу.

Оценим адекватность построенной модели Брауна: с параметром сглаживания (см. таблица 2):


К старту курса о машинном и глубоком обучении делимся переводом статьи, автор которой показывает на практике, как модель машинного обучения может использоваться через Excel. Зачем это нужно? Компании больше и больше вкладывают в исследования и разработку моделей прогнозов; по мнению автора оригинала статьи, разработчика и основателя компании PyXLL доступ к ML-моделям через Excel открывает новые горизонты. Вы сможете показать модель пользователям Excel, у которых нет опыта программирования или широких знаний в области статистики. При желании можно создавать инструменты разработки и тренировки моделей полностью в Excel, например строить графы в TensorFlow. Весь исходный код из статьи доступен на GitHub.

Надстройка Excel PyXLL встраивает Python в Excel и позволяет расширять возможности Excel через Python. С помощью этой надстройки мы можем добавлять новые функции, макросы, меню и в целом перенести преимущества экосистемы Python и машинное обучение прямо в Excel. К концу статьи мы построим модель классификации животных.

Python для Machine Learning

Python хорошо подходит для машинного обучения, у него большой массив поддерживаемых пакетов, упрощающих программирование и сокращающих время разработки. ML и DL очень хорошо поддерживаются несколькими пакетами, поэтому Python — идеальный выбор. Посмотрим на распространённые пакеты для ML на Python.

Scikit-Learn

Пакет scikit-learn — это лаконичный и последовательный интерфейс к общим алгоритмам ML, упрощая введение ML в производственные системы. Библиотека сочетает высокую производительность, де-факто она отраслевой стандарт машинного обучения на Python. В статье мы будем работать именно с ней.

TensorFlow

TensorFlow от Google. Эта библиотека с открытым исходным кодом для расчёта графов потоков данных оптимизирована для целей ML. Она была разработана, чтобы удовлетворять высоким требованиям обучения нейронных сетей в среде Google и является преемницей DistBelief — основанной на нейронных сетях системы глубокого обучения, применяется в пограничных областях исследований Google.

Впрочем, TensorFlow не строго научна и достаточно обобщена, чтобы применяться в различных прикладных задачах. Ключевая особенность TensorFlow — многослойная система узлов, которая быстро тренирует сети искусственного интеллекта на больших наборах данных. В Google это даёт возможность распознавать голос и находить объекты на изображениях.

Keras

Keras — написанная на Python Open Source библиотека для нейронных сетей. Она способна работать поверх TensorFlow, Microsoft Cognitive Toolkit или Theano и имеет архитектуру, которая позволяет быстро проводить эксперименты с глубоким обучением и сосредоточена на модульности, расширяемости и удобстве пользователя. Из документации следует, что работать с Keras можно, когда вам нужна библиотека глубокого обучения, которая:

Обладая перечисленными выше преимуществами, позволяет просто и быстро прототипировать решения.

Поддерживает свёрточные и рекуррентные нейронные сети, а также их комбинирование.

Без проблем работает на CPU и GPU.

PyTorch

PyTorch — это научный вычислительный пакет на Python, он работает в двух направлениях:

Как замена NumPy с возможностью задействовать графические процессоры.

Как платформа исследования Deep Learning с максимумом гибкости и скорости.

Деревья решений

Деревья решений — техника машинного обучения для решения задач регрессии и классификации. Дерево делит набор данных на множество наборов по признакам так, что одно дерево владеет одним подмножеством данных. Конечные узлы дерева — листья — содержат прогнозы и используются в новых запросах к натренированной модели. Пример ниже поможет понять, как это работает. Предположим, мы имеем набор данных со множеством признаков животных: млекопитающих, птиц, рептилий, насекомых, моллюсков и амфибий. Интуитивно разделить этот набор можно так:


Распределение данных по деревьям на основе признака упрощает классификацию новых данных, точность которой зависит от того, насколько точно деревья отражают действительность. В незаконченное дерево на рисунке выше я заложил мои знания и интуитивные представления о животных. Модель выясняет, как распределить признаки по новым данным — это и называется машинным обучением.

Алгоритм быстро анализирует большой объём данных, чего вручную сделать невозможно. В работе деревьев решений множество аспектов, от математики до логики их построения. Мы не будем касаться этих деталей, но построим модель и я покажу, как работать с ней в Excel.

Тренировка модели

Натренируем модель классифицировать животных при помощи деревьев решений. Воспользуемся для этого набором данных UCI Zoo Data Set из 101 животного, в наборе 17 логических признаков и один признак, который мы будем прогнозировать.

Для загрузки данных воспользуемся pandas, а для построения дерева — scikit-learn. Загрузим данные во фрейм Pandas, разделим на признаки и целевой класс, то есть класс животного. Затем разделим данные на тренировочный и тестовый наборы. Scikit-Learn использует тренировочный набор для обучения деревьев, а тестовый резервируется для проверки точности модели.

Начинается самое интересное: при помощи классификатора дерева решений в scikit-learn обучим модель на тренировочных данных. Чтобы модель не переобучилась и могла работать, настроим несколько параметров. Максимальная глубина дерева будет равна 5. Поэкспериментируйте со значениями, чтобы увидеть влияние глубины на результаты.

Эти две строки строят и обучают модель. Чтобы проверить её точность, подадим на вход данные, которых она не видела.

Воспользуемся моделью и выполним прогноз на новых данных:

Вызовем модель из Excel

Теперь загрузим модель в Excel, который хорошо подходит для интерактивных данных. Он работает почти везде, вы сможете показать модель незнакомым с разработкой людям, это даёт массу преимуществ в бизнесе, особенно когда модель применяется как часть пакетной системы или системы реального времени. Возможность вызывать модель интерактивно может оказаться по-настоящему полезной, когда нужно понять поведение системы.

К счастью, наша модель написана на Python и перенести её в Excel просто. В PyXLL есть всё необходимое, чтобы писать на Python в Excel. Нужно только добавить несколько декораторов @xl_func из модуля pyxll и настроить надстройку PyXLL для загрузки модуля с моделью. Если вы не знакомы с PyXLL, посмотрите введение в PyXLL в руководстве пользователя.

Построим дерево решений

Начнём с функции. Пользователь вызовет её, чтобы получить объект дерева, а затем этот объект для прогнозирования пройдёт через последовательность функций. Снова построим дерево, но пример будет сложнее: сохраним натренированную при помощи pickle и затем вместо того, чтобы каждый раз её создавать, загрузим её в Excel и настроим параметры, это будет интересно!

Код выше совпадает с кодом, который мы видели ранее, за исключением декоратора @xl_func, который сообщает дополнению PyXLL о том, какая функция Python должна стать пользовательской функцией Excel.

Строка float, int, int: object — это сигнатура функции. Она необязательна, но без этой сигнатуры пользователь сможет передавать в функцию свои типы, например, строки и это может привести к сбою. Возвращаемый тип object означает, что классификатор идёт через Excel как объект Python, функция возвращает дескриптор, который возможно передать другим функциям Python.

Код нужно добавить в список модулей конфигурационного файла pyxll.cfg , также необходима надстройка PyXLL, если вы не установили её.

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

Прогнозируем класс животного

Теперь всё, что нужно для работы с моделью — ещё одна функция для передачи входных данных и получения прогноза. Используем тот же код, что и раньше, но обернём его декоратором @xl_func .

Модель возвращает целое число — спрогнозированный класс. Словарь _zoo_classifications содержит эти числа и понятные человеку названия классов.

Эта функция берёт объект дерева из ml_get_zoo_tree и список пар ключ-значение, переданных в неё как словарь. В словаре сопоставлены имена признаков, с которыми мы работали при конструировании дерева, и входные признаки. Их сопоставление таково, что при вызове tree.predict признаки упорядочены правильно.

Это простой пример, натренированный на минимуме данных, но принцип применим к любой сложной модели. При помощи Python вы можете исследовать, разрабатывать и строить модель, чтобы получить ценные инсайты и быстрые прогнозы на реальных данных.

Небольшое дополнение

Чёрно-белые листы с цифрами нравятся всем, но иногда мне нравится добавлять небольшие детали ради привлекательности таблицы. PyXLL позволяет получить доступ к объектной модели Excel с помощью функции xl_app . Объектная модель Excel точно совпадает с той, что применяется в VBA. Функция ниже создаёт на листе объект изображения и загружает его.

Вызов ml_zoo_predict обновляет изображение в Excel при каждом изменении прогноза. Функция обновляет Excel, поэтому вызывать её нужно после вычислений, именно этим занимается async_call из pyxll, а ниже вы видите новую версию ml_zoo_predict :

Читайте также: