. В этой статье будут описаны основные понятия, необходимые для освоения технологий интеллектуального анализа данных. Кроме того, мы рассмотрим некоторые тонкости, чтобы, столкнувшись с ними на практике, вы не были обескуражены (см. врезку «Почему интеллектуальный анализ данных так непопулярен»).

Время от времени специалистам по SQL Server приходится делать перспективные оценки будущей стоимости, например прогнозы доходов или продаж. Организации иногда применяют технологию интеллектуального анализа данных (data-mining) в построении моделей прогнозирования, чтобы предоставить такие оценки. Разобравшись в основных понятиях и некоторых деталях, вы начнете с успехом использовать возможности прогнозирования в SQL Server Analysis Services (SSAS).

Методы прогнозирования

Существуют различные подходы к прогнозированию. Например, сайт Forecasting Methods (forecastingmethods.org) выделяет различные категории методов прогнозирования, включая казуальные (иначе называемые экономико-математическими), экспертное моделирование (субъективные), временные ряды, искусственный интеллект, рынок прогнозов, вероятностное прогнозирование, моделирование прогнозирования, а также метод прогнозирования на основе референсных классов. Веб-сайт Forecasting Principles (www.forecastingprinciples.com) дает представление о методах в виде методологического дерева, прежде всего разделяя субъективные методы (то есть методы, используемые при недостатке имеющихся данных для количественного анализа) и статические (то есть методы, используемые, когда доступны соответствующие числовые данные). В этой статье я остановлюсь на прогнозировании временных рядов, типе статического подхода, в котором накопленных данных достаточно для прогнозирования показателей.

Прогнозирование временных рядов предполагает, что данные, полученные в прошлом, помогают объяснить значения в будущем. Важно понимать, что в ряде случаев мы имеем дело с деталями, не отраженными в накопленных данных. Например, появится новый конкурент, который может неблагоприятно повлиять на будущие доходы или быстрые изменения в составе рабочей силы, которые могут повлиять на показатели уровня безработицы. В подобных ситуациях прогнозирование временных рядов не может быть единственным подходом. Зачастую различные подходы к прогнозированию объединяют, чтобы обеспечить наиболее точные прогнозы.

Понимание основ прогнозирования временных рядов

Временные ряды – это совокупность значений, полученных в период времени, обычно через равные интервалы. Общие примеры включают количество продаж в неделю, квартальные расходы и уровни безработицы по месяцам. Данные временных рядов представлены в графическом формате, с временным интервалом вдоль оси координат x графика и значениями вдоль оси y, как показано на экране 1.

 

Линейный тренд на графике временных интервалов
Экран 1. Линейный тренд на графике временных интервалов

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

  • Базовый уровень (Base level). Базовый уровень, как правило, определяется как среднее значение временного ряда. В некоторых моделях прогнозирования базовый уровень обычно определяется как начальное значение данных ряда.
  • Тренд (Trend). Тренд, как правило, показывает, как временные ряды изменяются от одного периода к другому. На примере, представленном на экране 1, число безработных имеет тенденцию роста с начала 2008 года до января 2010 года, после чего линия тренда направляется вниз. Информацию о совокупности выборочных данных, использованных для построения диаграмм в данной статье, можно найти во врезке «Расчет уровня безработицы».
  • Сезонные колебания. Некоторые значения имеют тенденцию роста или снижения в зависимости от определенных периодов времени, это может быть день недели или месяц в году. Можно рассмотреть пример с продажами в розничных магазинах, пик которых часто приходится на рождественский сезон. В случае с безработицей мы видим сезонный тренд с наивысшими показателями в январе и июле и низкими показателями в мае и октябре, как показано на экране 2.
  • Шум (Noise). Некоторые модели прогнозирования включают четвертую характеристику, шум, или ошибку, которая относится к случайным колебаниям и неравномерным движениям в данных. Шум мы здесь рассматривать не будем.

 

Сезонный тренд на графике временных интервалов
Экран 2. Сезонный тренд на графике временных интервалов

Таким образом, определяя тренд, накладывая линию тренда на базовый уровень и выявляя сезонную составляющую, которая может иметь место при анализе данных, вы получаете модель прогнозирования, которую можно задействовать для составления прогноза значений:

Прогнозируемое значение = Базовый уровень + Тренд + Сезонная составляющая

Определение базового уровня и тренда

Единственный способ определить базовое значение и тренд – это воспользоваться методом регрессии. Под словом «регрессия» здесь понимается рассмотрение взаимосвязи между переменными. В данном случае существует взаимосвязь между независимой переменной времени и зависимой переменной числа безработных. Обратите внимание, что независимая переменная иногда называется прогнозирующим параметром.

Воспользуйтесь таким инструментом, как Microsoft Excel, чтобы применить метод регрессии. Например, вы можете выполнить автоматический подсчет в Excel и добавить линию тренда к графику временных рядов, используя меню Trendline на вкладке Chart Tools Layout или вкладке PivotChart Tools Layout в панели Excel 2010 или Excel 2007. На экране 1 я добавил прямую линию тренда, выбрав режим Linear trendline в меню Trendline. Затем я выбрал More Trendline Options в меню Trendline, а потом – параметры Display Equation on chart («Показывать уравнение на диаграмме») и Display R-squared value on chart («Показывать на диаграмме значение коэффициента детерминации»), см. экран 3.

 

Параметры тренда в Excel
Экран 3. Параметры тренда в Excel

Этот процесс подгонки линии тренда к накопленным данным называется линейной регрессией (linear regression). Как мы видим на экране 1, линия тренда рассчитывается в соответствии с уравнением, где определяется базовый уровень (8248,8) и тренд (104.67x):

y = 104,67x + 8248,8

Можно представить себе линию тренда как ряд связанных координат осей x-y, куда вы можете включить промежуток времени (то есть ось x) для получения значения (ось y). Excel определяет «лучшую» линию тренда, применяя метод наименьших квадратов (определяемый как R² на экране 1). Линия наименьших квадратов – это линия, которая минимизирует возведенное в квадрат расстояние по вертикали из каждой точки линии тренда к соответствующей точке линии. Среднеквадратические значения позволяют определить, что отклонения выше или ниже актуальной линии не уравновешивают друг друга. На экране 1 мы видим, что R² = 0,5039, то есть линейное соотношение объясняет 50,39 % изменений в статистике безработицы с течением времени.

Определение точной линии тренда в Excel часто включает в себя метод проб и ошибок, наряду с визуальным контролем. На экране 1 прямая линия тренда подходит не самым лучшим образом. Excel предлагает другие варианты линии тренда, которые вы видите на экране 3. На экране 4 я добавил линию скользящей средней за четыре периода, которая строится на основе среднего арифметического показателей текущего и последних установленных периодов временного ряда.

 

Линия скользящей средней
Экран 4. Линия скользящей средней

Кроме того, я добавил полиномиальную линию тренда, применив алгебраическое уравнение для построения линии. Заметьте, что полиномиальная линия тренда имеет значение R² — 0,9318, определяющее наилучшее соотношение в выражении связи между независимой и зависимой переменными. Однако более высокое значение R² не обязательно означает, что линия тренда обеспечит качество прогнозной оценки. Существуют другие методы расчета точных прогнозов, которые я вкратце опишу ниже. Некоторые варианты линии тренда в Excel (например, линейная, полиномиальная линии тренда) позволяют делать прогнозы вперед, а также в обратном направлении, с учетом количества периодов, с нанесением полученных значений на график. Кому-то может показаться странным выражение «прогноз в обратном направлении». Лучше всего представить это на примере. Предположим, что новый фактор — быстрое увеличение рабочих мест в государственном секторе (например, рабочие места в Homeland Defense в начале 2000-х годов, временные работники Бюро переписи населения США) — послужил причиной быстрого падения уровня безработицы. Вам нужно сделать прогноз темпов роста нового сектора рабочих мест в обратном направлении в течение нескольких месяцев, а затем пересчитать уровень безработицы, чтобы прийти к сглаженному показателю изменения.

Вы также можете вручную применить уравнение линии тренда для расчета значений на перспективу. На экране 5 я добавил полиномиальную линию тренда с прогнозом на 6 месяцев, сперва убрав данные за последние 6 месяцев (то есть с апреля по сентябрь 2012 года) из исходного временного ряда.

 

Полиномиальная линия тренда
Экран 5. Полиномиальная линия тренда

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

Относительно регрессии важно сделать два замечания.

  • Как уже упоминалось выше, линейная регрессия включает одну независимую и одну зависимую переменную. Для понимания того, как дополнительные независимые переменные могут объяснить изменения в зависимой переменной, попробуйте построить модель множественной регрессии. В контексте прогнозирования числа безработных в Соединенных Штатах вы можете увеличить R² (и точность прогноза), учитывая коэффициент роста экономики, населения США, а также рост числа нанятых работников. SSAS может вместить множество переменных (то есть регрессоров) в модель прогнозирования временных рядов.
  • Алгоритмы прогнозирования временных рядов, включая те, что используются в SSAS, позволяют вычислить автокорреляцию, которая является корреляцией между соседними значениями временного ряда. Модель прогнозирования, которая непосредственно включает автокорреляцию, называется авторегрессивной (AR) моделью. Например, модель линейной регрессии выстраивает уравнение тренда на основе периода (например, 104,67 * x), в то время как в AR модели уравнение строится, исходя из предыдущих значений (например, -0,417 * безработных (-1) + 0,549 * занятых (-1)). AR модель потенциально увеличивает точность прогноза, так как учитывает дополнительную информацию сверх тренда и сезонной компоненты.

Учитываем сезонную составляющую

Сезонная компонента в структуре временного ряда обычно проявляется в связи либо с днем недели, либо с днем месяца, или же с месяцем в году. Как отмечалось выше, число безработных в США обычно растет и сокращается в установленный календарный год. Это верно даже при росте экономики, как показано на экране 2. Иными словами, чтобы сделать точный прогноз, вы должны учесть сезонную составляющую. Один общий подход заключается в применении метода сглаживания сезонных колебаний. В работе Practical Time Series Forecasting: A Hands-On Guide, Second Edition (CreateSpace Independent Publishing Platform, 2012) автор Галит Шмуели рекомендует использовать один из трех методов:

  • вычисление скользящего среднего;
  • анализ временного ряда на менее детализированном уровне (например, рассмотрите изменения числа безработных поквартально, а не по месяцам);
  • анализ отдельных временных рядов (и расчет прогнозов) по сезону.

Базовый уровень и тренд определяются при расчете прогноза с учетом сглаженного временного ряда. Факультативно сезонная составляющая или корректировка могут вновь применяться к прогнозируемым значениям с учетом начальных значений сезонного фактора при работе с методом Хольта-Винтерса. Если вы хотите увидеть, как производятся расчеты с учетом фактора сезонности в Excel, введите в строке поиска в Интернете «метод Винтерса в Excel». Также развернутое объяснение метода Хольта-Винтерса можно найти в руководстве Wayne L. Winston Microsoft Office Excel 2007: Data Analysis and Business Modeling, Second Edition (Microsoft Press, 2007).

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

Точность измерений модели прогнозирования

Как уже говорилось, исходная модель (если применять метод наименьших квадратов) не обязательно обеспечивает точность прогнозов. Самый лучший способ проверки точности прогнозных оценок – это разделить временной ряд на два набора данных: один для построения (то есть тренировки) модели и другой – для валидации. Набор данных для валидации будет являться наиболее «свежей» частью в наборе исходных данных, и он идеально охватывает время, равное временной шкале прогноза на будущее. Для проверки (валидации) модели предсказанные значения сравниваются с фактическими значениями. Обратите внимание, что после того, как вы произвели валидацию, модель может быть перестроена с использованием всего временного ряда, так что для прогнозирования будущих значений показателей желательно задействовать новейшие фактические значения.

Когда измеряется точность модели прогнозирования, как правило, возникает два вопроса: как определить точность прогнозной оценки и сколько исторических данных использовать для тренировки модели.

Как определить точность прогнозной оценки? В некоторых сценариях значения, прогнозируемые выше фактических значений, могут быть нежелательны (например, в прогнозах относительно инвестиционной деятельности). В других ситуациях значения, прогнозируемые ниже фактических, могут иметь разрушительные последствия (например, прогнозирование минимальной из выигрышных цен пункта аукциона). Но в случаях, когда вы хотите рассчитать оценку для всех прогнозов (неважно, выше или ниже реальных значений оказываются прогнозные значения), вы можете начать с количественной ошибки в отдельном прогнозе, используя определение:

ошибка = прогнозируемое значение – фактическое значение

При таком определении ошибки есть два популярнейших метода для измерения точности: это средняя абсолютная ошибка, то есть mean absolute error (MAE) и средняя абсолютная ошибка в процентах, или mean absolute percentage error (MAPE). В методе MAE абсолютные значения ошибок прогнозирования суммируются, а затем делятся на общее число прогнозов. Методом MAPE рассчитывается среднее абсолютное отклонение от прогноза в процентах. Для просмотра примеров работы с этими и другими методами для измерения качества прогнозных оценок шаблон Excel (с образцом данных прогнозирования и коэффициентами точности) откройте веб-страницу Demand Metrics Diagnostics Template (demandplanning.net/DemandMetricsExcelTemp.htm).

Сколько исторических данных следует использовать для тренировки модели? Работая с временным рядом, история которого уходит далеко в прошлое, вы можете захотеть включить в модель все исторические данные. Однако подчас дополнительная история не повышает точность прогнозирования. Давние данные могут даже исказить прогноз, если условия в прошлом существенно отличаются от условий в настоящем (например, состав рабочей силы сейчас и в прошлом различен). Мне не попадалась какая-то особая формула или практический метод, которые подсказали бы, какое количество исторических данных необходимо включить, поэтому я предлагаю начать с временных рядов, которые в несколько раз больше, чем временные интервалы прогноза, а затем проверить точность. Далее, попробуйте округлить число истории вверх или вниз и проведите тест повторно.

Прогнозирование временных рядов в SSAS

Прогнозирование временных рядов впервые появилось в SSAS в 2005 году. Для вычисления прогнозных значений алгоритм временных рядов Microsoft (Microsoft Time Series) использовался единый алгоритм под названием autoregressive tree with cross prediction (ARTXP), или дерево с авторегрессией с перекрестным прогнозированием. ARTXP сочетает метод авторегрессии с интеллектуальным анализом данных decision tree (дерево решений), так что уравнение прогноза может измениться (имеется в виду разделение) на основе определенных критериев. Например, модель прогнозирования обеспечит лучшее соответствие (и большую точность прогноза), если сначала предпринять разделение по дате, а затем на основе значения независимой переменной, как показано на экране 6.

 

Пример дерева решения ARTXP в SSAS
Экран 6. Пример дерева решения ARTXP в SSAS

В SSAS 2008 в алгоритме Microsoft Time Series в дополнение к ARTXP начал использоваться алгоритм под названием autoregressive integrated moving average (ARIMA), интегрированное скользящее среднее с авторегрессией, для вычисления долгосрочных прогнозов. ARIMA считается отраслевым стандартом и может рассматриваться как сочетание процессов авторегрессии и моделей скользящего среднего. Кроме того, он анализирует исторические ошибки прогнозирования для улучшения модели.

По умолчанию алгоритм Microsoft Time Series сочетает результаты алгоритмов ARIMA и ARTXP для достижения оптимальных прогнозов. По желанию вы можете отменить данную функцию. Обратимся к документации SQL Server Books Online (BOL):

«Алгоритм тренирует две различные модели одних и тех же данных: одна модель использует алгоритм ARTXP, а другая – алгоритм ARIMA. Затем алгоритм объединяет результаты двух моделей, чтобы разработать наилучший прогноз, охватывающий переменное число временных срезов. Поскольку алгоритм ARTXP больше подходит для краткосрочных прогнозов, им желательно воспользоваться в начале ряда прогнозов. Однако если временные срезы, необходимые для прогнозирования, уходят в будущее, алгоритм ARIMA более значим».

При работе с прогнозированием временных рядов в SSAS вы должны постоянно иметь в виду следующее:

  • Хотя в SSAS есть закладка Mining Accuracy Chart, она не работает с интеллектуальным анализом данных для моделей временных рядов. В результате вам следует вручную измерять точность с помощью одного из методов, упомянутых здесь (например, MAE, MAPE), используя для расчетов такой инструмент, как Excel.
  • Редакция SSAS Enterprise Edition позволяет разделить один временной ряд на множество «исторических моделей», так что вам не нужно будет вручную разделять данные на наборы данных для тренировки модели и валидации, проверяя точность прогноза. С точки зрения конечного пользователя, есть только одна модель временных рядов, но вы можете сравнить фактические результаты с прогнозируемыми в рамках модели, как показано на экране 7. Если вы не работаете с редакцией Enterprise Edition или не хотите использовать эту функцию, прежде всего вручную разделите данные.

 

Сравнение актуальных результатов с результатами прогноза
Экран 7. Сравнение актуальных результатов с результатами прогноза

Следующий шаг

В этой статье я познакомил вас с основами прогнозирования временных рядов. Мы также рассмотрели некоторые детали базовых алгоритмов, чтобы они не стали препятствием в обработке временных рядов. В качестве следующего шага я предлагаю вам освоить инструменты прогнозирования временных рядов с SSAS. Образцом может послужить проект, в котором используются данные по безработице, приведенные в данной статье. Затем вы можете ознакомиться с электронным учебным пособием TechNet «Intermediate Data Mining Tutorial (Analysis Services – Data Mining)» (Промежуточные итоги интеллектуального анализа данных (Analysis Services – интеллектуальный анализ данных)) по адресу technet.microsoft.com/en-us/library/cc879271.aspx.

Почему интеллектуальный анализ данных так непопулярен

В последнее десятилетие начали широко применяться технологии бизнес-аналитики business intelligence (BI), такие, как OLAP. В то же время Microsoft занялась продвижением другой BI–технологии, интеллектуального анализа данных, в таких популярных инструментах, как Microsoft SQL Server и Microsoft Excel. Однако технология интеллектуального анализа данных пока не стала ведущей. Почему? Хотя большинство людей может быстро ухватить суть ключевых понятий интеллектуального анализа данных, основные детали алгоритмов неразрывно связаны с математическими понятиями и формулами. Существует большое «расхождение» между высоким уровнем абстрактного понимания и детальным исполнением. В результате интеллектуальный анализ данных рассматривается ИТ-специалистами и промышленными клиентами как «черный ящик», что не способствует широкому внедрению технологии. Данная статья – моя попытка уменьшить «расхождение» в прогнозировании временных рядов.

Расчет уровня безработицы

В основной статье данные для графиков взяты с учетом информации о работающем населении, опубликованной U.S. Bureau of Labor Statistics (http://www.bls.gov/). BLS публикует сведения об уровне безработицы на основании ежемесячного опроса, проводимого Бюро переписи населения США (BLS), экстраполирующего общее число работающих и безработных. В частности, BLS применяет формулу:

Уровень безработицы = безработные/(безработные + работающие)

Примечательно, что, когда речь заходит об уровне безработицы, средства массовой информации обычно приводят выровненный коэффициент сезонности. Сезонная корректировка осуществляется с помощью общей модели, которая называется авторегрессионным проинтегрированным скользящим средним – autoregressive integrated moving average (ARIMA). По сути, это тот же алгоритм, что используется во многих пакетах глубинного анализа данных для прогнозирования временных рядов, включая SQL Server Analysis Services (SSAS). Чтобы получить более подробную информацию о модели ARIMA, используемой BLS, зайдите на веб-страницу X-12-ARIMA Seasonal Adjustment Program (www.census.gov/srd/www/x12a/). Обратите внимание, что в типовом проекте для данной статьи я использовал скорректированные значения сезонных и несезонных колебаний.