Спонсор: Microsoft
Санкт-Петербургский государственный политехнический университет
Опубликован: 06.03.2012 | Доступ: свободный | Студентов: 1913 / 129 | Оценка: 4.00 / 4.00 | Длительность: 10:52:00
Специальности: Системный архитектор
Лекция 14:

DMX. Параметры алгоритмов интеллектуального анализа данных. Временные ряды, кластеризация

< Лекция 13 || Лекция 14 || Лекция 15 >
Аннотация: В лекции рассмотрены особенности определения на языке DMX моделей данных, основанных на алгоритмах временных рядов и кластеризации.

MicrosoftTimeSeries

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

Таблица 14.1. Исходные данные
DateSeries ModelRegion Quantity
200904 M200 Europe 30
200905 M200 Europe 40
200904 M200 Pacific 20
200904 R250 Europe 20

Пример кода, создающего структуру интеллектуального анализа, приведен ниже.

CREATE MINING STRUCTURE TimeSeries1_structure
([DateSeries] DATE KEY TIME,
 [Model Region] TEXT KEY,
 [Quantity] LONG CONTINUOUS)
    

При создании структуры надо обратить внимание на то, чтобы в ключ входил атрибут, содержащий отметку времени (в примере это [DateSeries]). Кроме того, для нормальной работы алгоритма необходимо, чтобы ряд был без пропусков. Поэтому в структуре резервирование данных для тестового набора (выполняемое с помощью инструкции WITH HOLDOUT) делать не надо. Теперь рассмотрим пример кода, создающего модель:

ALTER MINING STRUCTURE TimeSeries1_structure
ADD MINING MODEL TimeSeries1_TS
([DateSeries],
 [Model Region],
 [Quantity] PREDICT )
USING Microsoft_Time_Series (PERIODICITY_HINT = '{12}', MISSING_VALUE_SUBSTITUTION = 0)
    

Надо обратить внимание на два использованных параметра. Первый из них - PERIODICITY_HINT - указывает на наличие периодичности 12 (по числу месяцев в году). Второй параметр (MISSING_VALUE_SUBSTITUTION) указывает, что пропущенные значения элементов ряда надо заменять на 0. В нашем случае, это означает, что если информации о продаже в данном месяце данной модели велосипедов нет, то считаем, что продаж не было. После создания модели параметры алгоритма можно просматривать и изменять, например, через графический интерфейс BIDevStudio.

Просмотр параметров алгоритма MicrosoftTimeSeries

Рис. 14.1. Просмотр параметров алгоритма MicrosoftTimeSeries

Как мы уже разбирали в "Использование инструментов "AnalyzeKeyInfluencers" и "DetectCategories"" , алгоритм временных рядов Майкрософт (MicrosoftTimeSeries) предоставляет собой совокупность двух алгоритмов:

  1. "дерево авторегрессии с перекрестным прогнозированием" (ARTXP), который оптимизирован для прогнозирования следующего значения в ряду;появился в SQL Server 2005;
  2. "интегрированные скользящие средние авторегрессии" (ARIMA), являющийся отраслевым стандартом в данной области; добавлен в SQL Server 2008, чтобы повысить точность долгосрочного прогнозирования.

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

На рис. 14.2a показано, как модель объединяет результаты алгоритмов, если параметр PREDICTION_SMOOTHING имеет значение по умолчанию - 0,5. Вначале алгоритмы ARIMA и ARTXP получают равные весовые коэффициенты, но по мере увеличения числа шагов прогнозирования вес алгоритма ARIMA растет. На рис. 14.2b показано, как результаты будут объединяться при значении PREDICTION_SMOOTHING равном 0,2.

Коэффициенты, с которыми учитываются  результаты прогнозирования алгоритмов  ARIMA и ARTXP. a)PREDICTION_SMOOTHING=0,5; b) PREDICTION_SMOOTHING=0,2

увеличить изображение
Рис. 14.2. Коэффициенты, с которыми учитываются результаты прогнозирования алгоритмов ARIMA и ARTXP. a)PREDICTION_SMOOTHING=0,5; b) PREDICTION_SMOOTHING=0,2

Общее число параметров алгоритма достаточно велико, поэтому ниже перечислены только наиболее значимые из них. Более полную информацию можно получить из литературы [1] и справочной системы SQLServer.

MISSING_VALUE_SUBSTITUTION указывает порядок заполнения пропусков в данных. По умолчанию пропуски в данных не допускаются. Ниже перечислены возможные значения для этого параметра:
Previous повторяет значение из предыдущего временного среза;
Mean использует значение скользящего среднего среди временных рядов, использованных в обучении;
числовая константа использует конкретное число для замены всех отсутствующих значений;
None замещает отсутствующие значения значениями, расположенными на кривой обученной модели.Это значение по умолчанию.
AUTO_DETECT_PERIODICITY числовое значение от 0 до 1, используемое для автоматического обнаружения периодичности. Значение по умолчанию - 0,6.Если значение ближе к 0, то периодичность учитывается только для строго периодических данных. Использование значения близкого к 1, повышает вероятность обнаружения многих закономерностей, близких к периодическим, и автоматического создания подсказок периодичности.
PERIODICITY_HINT предоставляет подсказку для алгоритма, касающуюся периодичности данных. Например, если продажи варьируются в зависимости от года, а в ряду в качестве единицы измерения используются месяцы, то периодичность равна 12. Этот параметр имеет формат {n [, n]}, где n - любое положительное число.

Число n внутри квадратных скобок [] является необязательным и может повторяться сколь угодно часто. Например, чтобы задать несколько подсказок периодичности для данных, пополняемых ежемесячно, можно ввести {12, 3, 1}, чтобы обнаруживать закономерности, проявляющиеся ежегодно, ежемесячно и ежеквартально. Однако подсказки периодичности сильно влияют на качество работы модели. Если заданная подсказка отличается от реальной периодичности, это может отрицательно сказаться на результатах.Значение по умолчанию равно {1}.

Фигурные скобки указывать обязательно. Кроме того, этот параметр имеет строковый тип данных. Поэтому, если нужно ввести этот параметр в составе инструкции расширений интеллектуального анализа данных, необходимо поместить в кавычки числовое значение в фигурных скобках.
FORECAST_METHOD указывает, какой алгоритм используется для анализа и прогнозирования. Возможные значения -ARTXP, ARIMA и MIXED. Значение по умолчанию - MIXED.
PREDICTION_SMOOTHING указывает, как модель должна использовать сочетание двух алгоритмов для оптимизации прогнозов (имеет смысл, если FORECAST_METHOD установлен в MIXED). Может принимать значения от 0 до 1.
0 при прогнозировании используется только алгоритм ARTXP. Процесс прогнозирования оптимизируется для небольшого числа прогнозов.
1 при прогнозировании используется только алгоритм ARIMA. Процесс прогнозирования оптимизируется для большого числа прогнозов.
0.5(по умолчанию) указывает, что при прогнозировании используются оба алгоритма, а их результаты объединяются.
Этот параметр доступен только в выпуске SQL ServerEnterprise.
HISTORIC_MODEL_COUNT указывает количество моделей с предысторией, которые будут построены. Эти дополнительные модели обучаются по "обрезанному" временному ряду и могут использоваться для анализа точности прогнозирования (более подробно об этом см.[1] и справочную систему SQLServer) Значение по умолчанию - 1. Этот параметр доступен только в выпуске SQL Server Enterprise.
HISTORICAL_MODEL_GAP указывает интервал времени между двумя последовательными моделями с предысторией. Значение по умолчанию - 10. Это значение выражено в единицах времени, которые определяются моделью.Этот параметр доступен только в выпуске SQL Server Enterprise.
MAXIMUM_SERIES_VALUEиMINIMUM_SERIES_VALUE максимальное и минимальное значения, используемые для прогнозов. Например, можно указать, что прогнозируемый объем продаж никогда не должен быть отрицательным числом.Эти параметры доступны только в выпуске SQL ServerEnterprise.

MicrosoftClustering

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

CREATE MINING STRUCTURE Customer_structure
([CustomerKey] LONGKEY,
 [MaritalStatus] TEXTDISCRETE,
 [TotalChildren] LONGDISCRETE,
[Age] LONG CONTINUOUS)
    

К созданной структуре добавим модель, основанную на алгоритме кластеризации. Атрибуты [MaritalStatus], [TotalChildren], [Age] будут рассматриваться как выходные. И явно укажем число кластеров, которое хотим получить:

ALTER MINING STRUCTURE Customer_structure
ADD MINING MODEL Customer_CL
([CustomerKey],
 [MaritalStatus],
 [TotalChildren],
 [Age])
USING Microsoft_Clustering (CLUSTER_COUNT=6)
WITHDRILLTHROUGH
    

Требования к данным для модели кластеризации будут следующими [15]:

  • каждая модель должна содержать один ключевой числовой или текстовый столбец, применение составных ключей не допускается;
  • каждая модель должна содержать, по меньшей мере, один входной столбец, включающий значения, которые используются для формирования кластеров;
  • необязательный прогнозируемый столбец: этому алгоритму не требуется прогнозируемый столбец для формирования модели, но предусмотрена возможность добавления прогнозируемого столбца с данными почти любого типа. Например, если требуется предсказать доход заказчика путем кластеризации по таким демографическим показателям, как регион или возраст, то можно задать доход как PredictOnly и ввести все остальные столбцы, например с данными о регионе или возрасте, в качестве входных данных.

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

//заполнение структуры с обработкой структур и модели
INSERTINTOMININGSTRUCTURE [Customer_structure]
 ([CustomerKey], [Age], [MaritalStatus], [TotalChildren])
OPENQUERY ([Adventure Works DW],
 'SELECT [CustomerKey], [Age], [MaritalStatus], [TotalChildren]
 FROMdbo.vTargetMail')

GO
// запрос, возвращающий для клиента номер кластера и оценку вероятности
SELECT t.*, Cluster(), ClusterProbability()
FROM  Customer_CL
NATURALPREDICTIONJOIN
OPENQUERY ([Adventure Works DW],
 'SELECT [CustomerKey], [Age], [MaritalStatus], [TotalChildren]
FROM dbo.vTargetMail') as t
    

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

CLUSTERING_METHOD число, указывающее метод кластеризации, используемый алгоритмом:
1 масштабируемая максимизация ожидания (значение по умолчанию);
2 немасштабируемая максимизация ожидания;
3 масштабируемые К-средние;
4 немасштабируемыеК-средние.
CLUSTER_COUNT примерное количество создаваемых кластеров. Если указанное количество кластеров не может быть построено, то алгоритм строит столько кластеров, сколько возможно. 0 означает, что алгоритм будет использовать эвристический подход для определения числа строящихся кластеров.Значение по умолчанию равно 10.
CLUSTER_SEED значение, используемое при случайном формировании кластеров в начальной стадии построения модели. Создав несколько моделей, отличающихся только этим параметром, можно оценить степень зависимости результата от выбора начальных значений. Если получившиеся кластеры отличаются незначительно, модель можно считать относительно устойчивой. Значение по умолчанию - 0.
MINIMUM_SUPPORT минимальный размер кластера. Если число вариантов в кластере меньше этого значения, кластер считается пустым и отбрасывается.Значение по умолчанию равно 1.
MODELLING_CARDINALITY число образцов моделей, создаваемое в процессе кластеризации. Снижение числа моделей-кандидатов может ускорить работу алгоритма, но при этом существует риск потери хорошо подходящих моделей.Значение по умолчанию равно 10.
STOPPING_TOLERANCE значение, используемое для определения момента завершения построения модели. Это оценка максимального числа вариантов, которые могут изменить свое членство в кластерах (после этого модель будет считаться сошедшейся). Значение по умолчанию равно 10. Для маленьких наборов данных ил очень явных кластеров можно установить значение в 1.
SAMPLE_SIZE количество объектов, которые этот алгоритм использует при каждом проходе, если для параметра CLUSTERING_METHOD задан один из методов масштабируемой кластеризации. Значение 0 параметра SAMPLE_SIZE приводит к тому, что весь набор данных разбивается на кластеры за один проход. Значение по умолчанию равно 50000.
MAXIMUM_INPUT_ATTRIBUTES максимальное количество входных атрибутов, которые алгоритм может обработать перед вызовом выбора характеристик (для определения наиболее значимых и игнорирования прочих). Значение 0 указывает, что количество атрибутов не ограничено.Значение по умолчанию равно 255.
MAXIMUM_STATES максимальное количество состояний атрибутов, поддерживаемое алгоритмом. Если количество состояний атрибута превышает максимально допустимое, алгоритм использует наиболее часто встречающиеся состояния, не учитывая все остальные.Значение по умолчанию равно 100.
< Лекция 13 || Лекция 14 || Лекция 15 >