Практические руководства, пробираясь через Dataland
Сложение моделей машинного обучения для многомерных временных рядов
Прогнозирование загрязнения воздуха PM 2.5 с использованием ансамбля стека
Анализ временных рядов слишком часто рассматривается как эзотерическая область науки о данных. Нет. Другие подобласти науки о данных имеют свои особенности (например, НЛП, рекомендательные системы, теория графов и т. Д.), То же самое и с временными рядами. Временные ряды уникальны, а не различимы.
Если ваша цель - прогнозирование, вам, вероятно, не нужны классические эконометрические модели - ARIMA, ARDL, VAR - и их допущения, включая стационарность, в зависимости от ваших требований, методологии и данных. На самом деле, некоторые выдающиеся эконометристы давно утверждали, что стационарное формирование многомерных данных временных рядов лишает их полезных динамических тенденций и взаимосвязей, и, таким образом, вы, возможно, отбрасываете ценную информацию, делая это.
Возникает вопрос, должны ли переменные в VAR (векторной авторегрессии) быть стационарными. Sims (1980) и Sims, Stock and Watson (1990) рекомендуют не проводить разность, даже если переменные содержат единичный корень. Они утверждали, что целью VAR-анализа является определение взаимосвязей между переменными, а не определение оценок параметров. Главный аргумент против различения заключается в том, что оно «отбрасывает» информацию о совместных перемещениях данных (например, о возможности коинтегрирующих отношений). Точно так же утверждается, что данные не нужно исключать из тренда. - Уолтер Эндерс, Прикладные эконометрические временные ряды, 3-е издание.
Позвольте мне продемонстрировать, насколько хорошо подходят модели машинного обучения для прогнозирования временных рядов, и я сделаю их более интересными, сложив ансамбль моделей машинного обучения. Вам необходимо настроить процедуру перекрестной проверки с учетом временного порядка временных рядов, но общая методология остается той же. Опять же, это если ваша цель - прогноз и вы нулевой интерес к проверке гипотез и статистическим выводам.
Аналогия из поперечного анализа данных очевидна. Если вы хотите провести статистический вывод, вам, вероятно, понадобится модель линейной регрессии и (в значительной степени) соблюдение допущений Гаусса-Маркова. Но если вам не требуется проверка гипотез, вы можете использовать случайные леса, виртуальные машины защиты или нейронные сети и совершенно не обращать внимания на остаточные графики и p-значения.
Рассматриваемый набор данных связан с загрязнением и погодой с целью прогнозирования ежечасных концентраций твердых частиц размером 2,5 микрона (PM 2,5) в воздухе. Это непрерывная переменная. ТЧ 2,5 - это самая тонкая категория твердых частиц, загрязнение воздуха, и она представляет значительный риск для здоровья, поскольку частицы настолько мелкие, что могут обойти большую часть естественных защитных сил организма и проникнуть глубоко в легкие, когда вдохнул. Данные находятся в свободном доступе в репозитории UCI здесь. [1]
[1] Сон Си Чен (2016). Репозиторий машинного обучения UCI [https://archive.ics.uci.edu/ml]; Ирвин, Калифорния: Калифорнийский университет, Школа информационных и компьютерных наук.
Моделирование ансамбля стека
Я заполню ансамбль стеков некоторыми из лучших алгоритмов машинного обучения, но не буду включать никаких эконометрических моделей временных рядов. Первый этап стека будет включать следующие базовые модели:
- Регрессия лассо (лассо)
- Multi-Layer Perceptron (MLP), искусственная нейронная сеть.
- Линейная регрессия опорных векторов (SVR)
- Support Vector Machine (SVM) - только для ядер rbf, sigmoid или poly.
- Регрессор случайного леса (РФ)
- Регрессор XG Boost (XGB)
Второй (и последний) этап стека - это единственная метамодель, представленная всеми любимой линейной регрессией («OLS»). модель. Ниже представлена простая диаграмма, представляющая мою методологию.
Не существует «правильного» способа моделирования стека ансамбля. Это в основном вопрос практического опыта, заквашенного большой дозой попыток и испытаний. Довольно типичный подход - использовать несколько из каждого алгоритма машинного обучения, настроенного на разные гиперпараметры на первом этапе, а их прогнозы затем передаются в метамодель, которая обучены этим предсказаниям и целевой переменной.
Более сложные настройки могут включать дополнительные уровни моделей, предшествующие метамодели. Сообщение в блоге компании SAS, занимающейся аналитикой данных, объясняет общую идею стекирования здесь.
Если есть какие-то принципы построения ансамблевого моделирования, то на ум приходят три:
- Соберите набор алгоритмов, которые могут предоставить хорошие прогнозы конкретных интересующих данных, но с использованием разных методологий. Например, в этом ансамбле я использую сочетание линейных моделей, древовидных моделей, вспомогательных векторных моделей и нейронных сетей.
- Чрезмерная подгонка часто является проблемой, отсюда важность строгой перекрестной проверки при оценке модели стека.
- Будьте внимательны при разделении различных уровней обучающих, проверочных и тестовых данных, чтобы они не «перетекли» на следующий уровень.
Целевая переменная
Набор данных содержит ежечасные данные за пять лет, с 1 января 2010 г. по 31 декабря 2014 г., о показаниях твердых частиц PM 2,5 в Пекине, а также выбранные погодные переменные, такие как температура, направление ветра и количество осадков. В исходном CSV-файле 43 824 строки. Целевой переменной этого упражнения будет значение PM 2.5 на один период вперед (т. Е. На час вперед).
Линейный график целевой переменной предполагает сильную сезонность данных, но не очевидную многолетнюю тенденцию. Коробчатые диаграммы распределения значений PM 2,5 по годам также указывают на отсутствие тенденции, хотя данные ограничены нулем и, похоже, страдают от значительного числа «выбросов». ” при более высоких значениях. Я полагаю, что не может быть отрицательных уровней взвешенных в воздухе частиц.
Однако некоторые из этих «выбросов» могут вообще не быть выбросами, поскольку может существовать определенная закономерность в отношении определенных повышенных уровней загрязнения воздуха. Именно здесь становится важным знание предметной области и / или простое интеллектуальное любопытство. Давайте начнем с внимательного изучения данных.
В таблице слева перечислены первые пятнадцать часовых показаний PM 2.5 в наборе данных. Это может быть не сразу очевидно, но три самых высоких показателя относятся к первым часам Лунного Нового года (LNY) в 2010 и 2012 годах. Лунный календарь отличается от григорианский (солнечный) календарь, в котором LNY может приходиться на разные григорианские дни в году. Новый год традиционно открывают фейерверками. Петарды выделяют много дыма и мусора в воздухе и, как правило, способствуют загрязнению воздуха. Следовательно, в модели необходимо учитывать часы около полуночи LNY. Интересно, сможет ли AutoML определить это?
Пекин также подвержен случайным песчаным бурям ранней весной, а 22 марта 2010 года произошла крупная песчаная буря, которая попала в два списка в топ-15 выше. . Следовательно, модель также должна будет учитывать частоту возникновения крупных песчаных бурь. Песчаные бури можно прогнозировать заранее, хотя, возможно, не очень далеко вперед, и поэтому они, безусловно, могут служить объясняющей переменной для прогнозов PM 2.5 на час вперед.
В ходе пояснительного анализа я также обнаружил, что показания PM 2.5 в выходные дни в группе были выше, чем в будние дни. t-тест различий в средних значениях вернул t-статистику, равную 4,6551, что означает, что разница значима на уровне 99%.
Сложные сезонности
Кроме того, в данных есть сложные сезонности. Графики значений PM 2,5 по годам показывают заметные пики в начале и ближе к концу года, в основном в более холодные месяцы. Это связано с тем, что большая часть загрязнения Пекина создается за счет отопления помещений, и, очевидно, в холодную погоду будет больше тепла. Это также может объяснить, почему показания PM 2.5 обычно выше в выходные дни.
Сезонность становится более очевидной, когда мы смотрим на среднее значение PM 2,5 по месяцам вместе с их доверительными интервалами. Ежемесячные данные подтверждают указанную выше сезонность: более низкие уровни регистрируются в теплые месяцы, а более высокие - в холодные месяцы с особыми пиками в феврале и октябре. Кстати, лунный Новый год также обычно приходится на период с конца января до конца февраля.
При более глубоком изучении данных становится очевидным внутридневная сезонность. На самом деле, дневная сезонность в этом случае почти так же важна, как и месячная. Средние часовые показания PM 2.5 начинаются с самых высоких значений дня около полуночи, затем постепенно снижаются до дна во второй половине дня в 15:00, а затем быстро повышаются до ночь. Вероятно, это нагревательный эффект, так как в дневное время, когда солнце встает, в обогреве меньше.
Что предлагает весь этот анализ данных? Мне нужны фиктивные переменные для следующего:
- Семь часов с 21:00 до 3:00 каждого года LNY;
- Дни сильной песчаной бури;
- Выходные;
- Месяцы; а также
- Часы.
Мое определение «крупной песчаной бури» очень простое. Просто Google «Пекинская песчаная буря 201x» для каждого года в наборе данных, и независимо от даты списков, появляющихся на первой странице результатов поиска, будет регистрироваться как «крупная песчаная буря».
Но прежде чем приступить к необходимой инженерии данных, мне сначала нужно разобраться с насущной проблемой отсутствующих значений.
Отсутствующие целевые значения
Одна из основных проблем с данными заключается в том, что отсутствующие значения полностью находятся в целевой переменной. Почти 5% целевых наблюдений составляют NaN, а две трети отсутствующих данных относятся к первым двум годам, а именно 2010 и 2011 гг. Это проблема, потому что обучающие данные будут из более раннего периода, а искаженные значения целевой переменной в обучающем наборе могут привести к модели, которая плохо работает на более позднем периоде тестирования.
Сезонность, описанная выше, предполагает, что простой вменение общего среднего, медианы или режима для замены значений NaN не является хорошей идеей. Ни случайное присвоение из доступных данных, ни перенос последнего наблюдения. Некоторые из (ежечасных) отсутствующих данных также непрерывно передаются по дням, поэтому линейная интерполяция, которая перетекает с одного дня на другой, также внесет искажения (помните о внутридневной сезонности). Эти типичные методы вменения легко пропущенных данных в условиях сложной сезонности целевой переменной, безусловно, внесут искажения в данные.
Наконец, тот факт, что отсутствующие значения полностью находятся в целевой переменной, предполагает, что любая попытка вменять эти значения из других переменных (то есть последующих независимых переменных) означает, что вы устанавливаете производимые целевые значения, которые можно было бы легко предсказать. позже теми же независимыми переменными в любом используемом алгоритме.
Это упражнение не должно быть исчерпывающим описанием методов вменения целевой переменной, поэтому я выбрал не слишком сложное решение проблемы, учитывающее почасовую и ежемесячную сезонность. Был выполнен трехэтапный процесс:
- Удалите отсутствующие наблюдения за первый день (1 января 2010 г. ежечасные показания PM 2.5 были NaN s).
- Интерполируйте «внутренние» пропущенные значения в наблюдениях между 0:00 и 14:00 (включительно) в течение дня, а затем в наблюдениях между 15:00 и 23:00 (включительно). Эта двухэтапная процедура учитывает двухчастную внутридневную сезонность в данных, как обсуждалось выше.
- Рассчитайте оставшиеся пропущенные значения по медиане доступных значений, сгруппированных по месяцам и часам каждого соответствующего года. Я решил использовать среднее значение, а не среднее значение, учитывая значительные случаи экстремальных значений в показаниях PM 2.5, как отмечалось ранее.
Корреляционные матрицы
После вменения отсутствующих данных я затем исследовал корреляционную матрицу целевой переменной с другими непрерывными переменными в наборе данных. Многие из переменных, связанных с погодой, похоже, имеют довольно слабую корреляцию с целевой переменной.
В то же время существует высокая корреляция между несколькими погодными переменными, такими как «роса», «температура» и «давление». Это показания точки росы, температуры и давления. Если одну из этих трех переменных следует отбросить, «pres» кажется наиболее очевидным, учитывая его высокую парную корреляцию с двумя другими переменными («temp» и «dewp») и самую низкую корреляцию из трех с целевой переменной. Поэтому я исключил переменные pres, cr и cs из анализа.
Предыдущие исследования загрязнения PM 2,5 во всем мире определили, что сила ветра является основным объясняющим фактором. В основном, сильные и постоянно ветреные условия эффективны для рассеивания переносимых по воздуху загрязнений. Переменная «cws» в наборе данных - это кумулятивная переменная силы ветра, и мы видим сверху, что она имеет умеренную корреляцию +0,25 с целевой переменной.
В данном конкретном случае существует интересное взаимодействие между скоростью и направлением ветра. Северные ветры создают более сильную корреляцию между «cws» и PM 2,5, а также уменьшают корреляцию между температурой и PM 2,5. Вы можете наблюдать это явление в двух корреляционных матрицах, представленных ниже: первая, когда направление ветра смешанное / неопределенное, а вторая, когда дует северо-восточный ветер.
Полученные данные подсказывают, что я должен создать переменную взаимодействия между северным направлением ветра и «cws».
Автокорреляция и стационарность
Поскольку это ежечасный временной ряд и по загрязнению воздуха, логично, что автокорреляция в зависимой переменной будет высокой. Маловероятно, что частицы PM 2.5 в воздухе внезапно появятся или исчезнут через час. Вместо этого они постепенно накапливаются или рассеиваются. Таким образом, существует значительная автокорреляция в лагах целевой переменной, как мы видим на левом графике ниже.
Однако частичные автокорреляции быстро исчезают после двух задержек. Поклонники временных рядов сразу распознают в них признаки как минимум серии AR (2). Если бы я, например, запустил модель ARIMA, я бы включил в модель как минимум два лага целевой переменной. Хотя я не использую в анализе какие-либо эконометрические модели временных рядов, он предполагает, что запаздывания показаний PM 2.5 должны быть включены в модель как функции.
Кроме того, отсутствие тенденции в показаниях твердых частиц PM 2,5 предполагает, что целевая переменная является естественной стационарной. Фактически, все непрерывные переменные в наборе данных стационарны. Расширенные тесты Дики-Фуллера подтверждают, что нестационарная нулевая гипотеза была отклонена для всех переменных.
Результаты BIC инструмента auto arma от Statsmodels рекомендуют только два запаздывания целевой переменной, а результаты AIC предложить девятнадцать задержек. В этом случае я бы предпочел большую экономию. Интересно отметить, что оценка AIC достигла первоначального минимума при трех задержках, а затем снизилась еще больше с большими задержками. В конце концов, я решил использовать три запаздывания целевой переменной.
Пояснительные переменные
Это было много, но совершенно необходимо. Разработка функций часто более важна, чем запуск сложных алгоритмов или настройка гиперпараметров, что я тоже сделаю! В итоге я получил следующий список переменных:
Цель:
- Показания PM 2.5 на один период вперед
Возможности:
- Текущий и два лага «PM 2.5»
- «Temp» - температура (текущая)
- «Роса» - точка росы (текущая)
- «Cws» - суммарная скорость ветра (текущая)
- три манекена cbwd - направление ветра (течения)
- интерактивная переменная северного направления ветра и «cws» (текущий)
- Лунный новогодний манекен
- манекен крупной песчаной бури
- манекен выходного дня
- часовые манекены
- месяц манекены
Все пять последних фиктивных переменных устанавливаются на один период вперед или одновременно с целевой переменной. Это связано с тем, что дату LNY, крупные песчаные бури, выходные, часы и месяцы можно правильно спрогнозировать по крайней мере на один час вперед. Мы можем не знать направление ветра в ближайшие час или два, но мы можем определенно согласиться с тем, что 9 вечера последует за 8 вечера, или октябрь последует за сентябрем, или что следующий лунный Новый год будет приходиться на 1 февраля 2022 года.
Кстати, я знаю, что циклические временные переменные, созданные посредством тригонометрических преобразований переменных времени и календаря, часто могут быть полезной альтернативой фиктивным. Но циклические временные переменные нельзя использовать в древовидных моделях, поэтому я решил не использовать их здесь, потому что мне интересно использовать такие модели в ансамбле стека.
С другой стороны, вполне возможно передать различные функции различным алгоритмам в ансамбле стека. Я придумал такие стопки. Однако давайте сделаем это упражнение более простым.
Процесс стекирования и поиск по сетке
Наконец, мы подошли к моделированию. Сначала я разделил данные тремя способами: данные обучения с перекрестной проверкой gridsearch, данные обучения метамодели и данные теста удержания. Поскольку в данном случае я имею дело с временными рядами, необходимо тщательно учитывать прямой поток времени в разделениях.
Последние 10% (с точки зрения потока времени) данных используются в качестве набора тестов удержания, включающего 4380 наблюдений. Из оставшихся 90% данных первые две трети наблюдений выделяются обучающим данным gridsearch (первый пакет обучающих данных), а позже одна треть к обучающим данным метамодели (второй пакет).
Что касается процедуры масштабирования данных с использованием StandardScaler (), только обучающие данные gridsearch (первый пакет) подогнаны и преобразованы . Две другие подвыборки только трансформируются. Я воспроизвожу более раннюю диаграмму методологии моделирования ниже.
Каждая из базовых моделей настраивается с помощью GridsearchCV (с использованием TimeSeriesSplit == 3) для нахождения оптимального гипер- настройки параметров в данных обучения gridsearch (первый пакет). Затем каждая модель после gridsearch обучается на полных данных первого пакетного обучения. Чтобы избежать путаницы, я говорю «полный» в этом случае, потому что процедура GridsearchCV подбирает модель только для части обучающих данных gridsearch на каждой итерации.
У некоторых читателей может быть еще одно неправильное понимание моего утверждения выше и того, как работает функция Sklearn GridsearchCV. В фактической реализации нет необходимости вручную переобучать модель с настройкой gridsearch, если параметр refit в GridsearchCV оставлен в значение по умолчанию True. GridsearchCV затем автоматически обучит лучший оценщик на полных обучающих данных, используемых в gridsearch (ссылка). Поэтому, пожалуйста, примите мое утверждение как концептуальную точку зрения.
Обучающий набор метамодели (второй пакет данных) затем передается в каждую обученную базовую модель для получения прогнозов целевой переменной. Эти прогнозы впоследствии используются в качестве независимых переменных в метамодели. В этом упражнении метамодель использует только прогнозы базовых моделей в качестве функций. Другими словами, мета-модель OLS обучается путем регрессии целевых значений в мета-обучающем наборе на основе прогнозов базовых моделей. Обратите внимание, что некоторые модели стека включают исходные объясняющие переменные при обучении метамодели, и это нормально, но я не использую их здесь.
Последний шаг - заставить шесть базовых моделей (все еще обученных только на первом пакете данных) сгенерировать соответствующие прогнозы целевой переменной в наборе тестов удержания. Эти прогнозы затем передаются в мета-модель OLS (обученную, как указано выше), чтобы произвести прогнозы модели стека целевых значений в тестовом наборе.
Краткое описание процедуры выглядит следующим образом:
- Три способа подмножества данных: последние 10% данных используются в качестве контрольного набора, а оставшиеся 90% разделены на более ранний обучающий набор gridsearch (2/3) и более поздний обучающий набор для метамодели. (1/3);
- GridsearchCV шесть базовых моделей, чтобы найти соответствующие оптимальные гиперпараметры, а затем обучить настроенные модели на полных данных обучения gridsearch;
- Прогнозы базовых моделей на основе метаобучающего набора формируют независимые переменные для обучения метамодели целевой переменной; а также
- Базовые модели, наконец, делают свои прогнозы на наборе тестов удержания, которые снова вводятся в метамодель, а прогнозы метамодели целевой переменной в наборе тестов удержания, наконец, оцениваются (вместе с прогнозы базовых моделей для сравнения).
Все модели настраиваются / обучаются только один раз. Базовые модели обучаются только на обучающих данных gridsearch (первый пакет), а метамодель - на предсказаниях базовых моделей на мета обучающем наборе. В любом случае полный код доступен на моей странице GitHub со ссылкой внизу статьи для тех читателей, которым интересны подробности.
Настроенные базовые модели, следующие за GridsearchCV, перечислены ниже. По метамодели OLS не проводился поиск сетки, и в этом нет особой необходимости, поскольку единственный гиперпараметр - это просто постоянный член (и до некоторой степени, следует ли нормализовать данные независимых переменных), и я всегда сохраняю это для этого упражнения.
Перекрестная проверка прямой цепи
Прежде чем приступить к подсчету набора тестов удержания, я выполняю упражнение 5-кратной перекрестной проверки на ансамбле стека, используя настройки гиперпараметров после поиска по сетке для базовых моделей. Для перекрестной проверки я объединяю оба пакета (базовый + мета) обучающего набора, чтобы восстановить полные 90% обучающих данных в виде набора CV, и устанавливаю CV == 5 для итераций.
Перекрестная проверка выполняется с помощью метода прямой цепочки или расширяемого окна. Хорошее объяснение методологии CV этого временного ряда доступно в следующем обсуждении StackExchange. Я воспроизвожу диаграмму, опубликованную в обсуждении, чтобы проиллюстрировать подход ниже, хотя следует подчеркнуть, что Данные в диаграмме не относятся к набору тестов удержания.
К сожалению, функцию Sklearn TimeSeriesSplit нельзя использовать в процедуре перекрестной проверки. Это связано с тем, что прогнозы базовой модели формируют входные данные для метамодели в каждом кратном резюме. Нам нужно составить прогнозы каждой базовой модели во время соответствующего процесса перекрестной проверки в каждом сгибе, а затем передать эти прогнозы в метамодель для ее собственной перекрестной проверки. Поэтому требуется специальный код.
Чтобы исключить возможность какого-либо заражения данных между слоями стека перед последующей оценкой набора тестов удержания, описанная здесь процедура перекрестной проверки реализована на отдельном Jupyter Notebook, которые заинтересованные читатели могут проверить на моей странице GitHub.
Ниже представлены баллы MAE и RMSE, полученные в результате 5-кратной процедуры перекрестной проверки. Мы видим, что «модель стека», которая представляет собой метамодель OLS, имеет самый низкий средний и второй по величине средний балл MAE. Однако среди оценок RMSE «модель стека» имеет самый низкий средний балл, но второй самый низкий средний балл. XGBoost имеет самый низкий средний балл MAE, а Lasso - самый низкий средний балл RMSE.
Методология суммирования ансамбля, похоже, в основном работает, как можно было надеяться, а именно дает более точные результаты, чем любая из базовых моделей в ансамбле. Это не совсем так, но выглядит многообещающе, когда мы направляемся к испытательной установке.
Результаты теста удержания
Хорошей практикой является наличие базовой модели для сравнения, а типичной базовой линией временного ряда является «Модель постоянства». Это просто модель целевой переменной, прогнозируемой по ее запаздывающему значению. В этом случае это будет показание PM 2.5 на час вперед, предсказываемое его текущим показанием.
Как уже упоминалось, базовые модели обучаются только один раз в обучающем наборе gridsearch, а затем они делают свои прогнозы на основе значений целевой переменной в наборе проверки удержания. Эти прогнозы формируют характеристики метамодели OLS, обученной на мета-обучающем наборе, которая затем делает окончательные прогнозы стека на тестовом наборе.
Несколько выбранных графиков прогнозов модели стека в сравнении с фактическими целевыми значениями в наборе тестов представлены ниже. Я сокращаю охват карт до 400 (ежечасных) наблюдений, чтобы было легче следить за ними. Ниже мы видим первые 400 наблюдений.
Ниже показаны средние 400 наблюдений.
Мы видим, что модель стека показала самые низкие оценки MAE и RMSE в наборе тестов удержания. Более того, по сравнению с базовой моделью устойчивости, набор стеков показал улучшение на 5,5% в RMSE (18,66 против 19,76) и 5,3% в MAE (10,53 против 11,12). ) баллы.
Можно также заметить, что оценка RMSE стека по набору тестов находится в пределах диапазона, наблюдаемого в 5-кратной процедуре перекрестной проверки, описанной выше, но оценка MAE ниже диапазона. В целом, оценки ошибок в наборе тестов удержания, как правило, ниже, чем те, которые наблюдаются в процедуре перекрестной проверки во всех моделях, что означает, что набор тестов в целом легче предсказать (следовательно, меньше ошибок ). Это подчеркивает важность проведения многократной перекрестной проверки для более полной оценки производительности модели.
Заключение
Алгоритмы машинного обучения хорошо подходят для прогнозирования временных рядов. Я использовал стек машинного обучения для прогнозирования уровней загрязнения воздуха PM 2,5 на один период вперед. Ансамбль стека включал разнообразное сочетание линейных моделей, древовидных моделей, опорных векторных моделей и нейронных сетей в качестве базовых моделей. Последняя метамодель была неизменным фаворитом OLS.
Данные демонстрировали значительные выбросы и сложные сезонные колебания, а также отсутствовали целевые значения. Необычные алгоритмы и методологии никогда не заменят тщательного предварительного моделирования данных и анализа данных. После этого данные были разделены на три части в соответствии с их временным порядком, причем последние 10% данных были взяты в качестве набора для проверки удержания. Остальные 90% данных, в свою очередь, были разделены на более ранний обучающий набор gridsearch (2/3) для базовых моделей и более поздний мета обучающий набор (1 / 3) для метамодели.
Данные обучения (90% выше) также использовались для запуска 5-кратной процедуры перекрестной проверки прямой цепи для оценки производительности модели для всех используемых моделей. Перекрестная проверка показала, что модель стека в основном превосходит отдельные базовые модели по показателям MAE и RMSE.
Последующие результаты набора тестов удержания показали модель стека с лучшими показателями MAE и RMSE. Показатели стека также продемонстрировали улучшение на 5–6% по сравнению с базовой моделью устойчивости. В заключение, упражнение продемонстрировало эффективность подхода на основе ансамблевого стека машинного обучения для многомерного анализа временных рядов.
(Полный код Python и данные для этого упражнения доступны на моей странице GitHub. Если при рендеринге файлов записной книжки GitHub напрямую возникают проблемы, используйте nbviewer.)
Если вы видели ценность в чтении подобных статей, вы можете подписаться на Medium здесь, чтобы читать другие статьи, написанные мной и бесчисленным множеством других авторов. Спасибо.