Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SQLServer08_DM_Nesterov

.pdf
Скачиваний:
167
Добавлен:
07.02.2016
Размер:
16.46 Mб
Скачать

FORCE_REGRESSOR – «вынуждает» алгоритм использовать указанные столбцы в качестве регрессоров, не обращая внимания на важность столбцов, вычисленную алгоритмом. Этот параметр используется для линейной регрессии и деревьев решений, прогнозирующих непрерывный атрибут.

MAXIMUM_INPUT_ATTRIBUTES – определяет количество входных атрибутов, которые алгоритм может обработать перед вызовом процедуры выбора компонентов (для отбора наиболее важных атрибутов). Параметр применим как для линейной регрессии, так и для деревьев решений. Значение по умолчанию равно 255. 0 отключает выбор характеристик.

MAXIMUM_OUTPUT_ATTRIBUTES – определяет количество вы-

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

MINIMUM_SUPPORT – для алгоритма деревьев решений определяет минимальное количество вариантов в узле, при котором возможно формирование разбиения в дереве. Значение по умолчанию равно 10. Для очень больших наборов данных это значение часто увеличивают, чтобы избежать переобучения.

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

1– энтропия;

2– алгоритм Байеса с априорной оценкой K2;

3– эквивалент Дирихле метода Байеса (BDE) с априорной оценкой (используется по умолчанию).

SPLIT_METHOD – для алгоритма деревьев решений определяет метод, используемый для разбиения узла:

1– Binary: указывает, что независимо от реального числа значений атрибута дерево следует разбить на две ветви;

91

2 – Complete: указывает, что в дереве можно создавать столько разбиений, сколько существует значений атрибута;

3 – Both: указывает, что службы Analysis Services могут определять, какое разбиение лучше использовать – бинарное или полное (используется по умолчанию).

4.3. АЛГОРИТМ ВРЕМЕННЫХ РЯДОВ

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

Таблица 4.1

Исходные данные

DateSeries

Model Region

Quantity

 

 

 

200904

M200 Europe

30

 

 

 

200905

M200 Europe

40

 

 

 

 

 

 

200904

M200 Pacific

20

 

 

 

 

 

 

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

CREATE MINING STRUCTURE TimeSeries1_structure ([DateSeries] DATE KEY TIME,

[Model Region] TEXT KEY, [Quantity] LONG CONTINUOUS)

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

92

с помощью инструкции 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. В нашем случае, это означает, что если информации о продаже в данном месяце данной модели велосипедов нет, то считаем, что продаж не было. После создания модели, параметры алгоритма можно просматривать и изменять, например, через графический интерфейс

BI Dev Studio (рис.4.2).

Рис.4.2. Просмотр параметров алгоритма Microsoft Time Series

93

Как уже отмечалось в разделе 2.4, алгоритм временных рядов Майкрософт (Microsoft Time Series) представляет собой совокупность двух алгоритмов:

1)«дерево авторегрессии с перекрестным прогнозированием» (ARTxp), который оптимизирован для прогнозирования следующего значения в ряду; он появился в SQL Server 2005;

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

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

a)

b)

Рис.4.3. Коэффициенты, с которыми учитываются результаты прогнозирования алгоритмов ARIMA и ARTxp

a)PREDICTION_SMOOTHING=0,5;

b)PREDICTION_SMOOTHING=0,2

94

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

PREDICTION_SMOOTHING равном 0,2.

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

мы SQL Server.

MISSING_VALUE_SUBSTITUTION – указывает порядок запол-

нения пропусков в данных. По умолчанию пропуски в данных не допускаются. Ниже перечислены возможные значения для этого параметра:

Previous – повторяет значение из предыдущего временного среза; Mean – использует значение скользящего среднего среди временных рядов, использованных в обучении; числовая константа – использует конкретное число для замены всех отсутствующих значений;

None – замещает отсутствующие значения значениями, расположенными «на кривой» обученной модели. Это значение по умолчанию.

AUTO_DETECT_PERIODICITY – числовое значение от 0 до 1,

используемое для автоматического обнаружения периодичности. Значение по умолчанию – 0,6. Если значение ближе к 0, то периодичность учитывается только для строго периодических данных. Использование значения близкого к 1, повышает вероятность обнаружения многих закономерностей, близких к периодическим, и автоматического создания подсказок периодичности.

PERIODICITY_HINT – предоставляет подсказку для алгоритма, касающуюся периодичности данных. Например, если продажи варьируются в зависимости от года, а во временном ряду в качестве ша-

95

га изменения отметки времени используется один месяц, то периодичность равна 12. Этот параметр имеет формат {n1 [, n2]}, где ni

– целое положительное число. Например, задать несколько подсказок периодичности для данных, пополняемых ежемесячно, можно введя {12, 3, 1}, чтобы обнаруживать закономерности, проявляющиеся ежегодно, ежеквартально и ежемесячно. Однако подсказки периодичности сильно влияют на качество работы модели. Если заданная подсказка отличается от реальной периодичности, это может отрицательно сказаться на результатах. Значение по умолчанию равно {1}. Фигурные скобки указывать обязательно. Кроме того, этот параметр имеет строковый тип данных. Поэтому, если нужно ввести этот параметр в составе инструкции расширений интеллектуального анализа данных, необходимо поместить в кавычки числовое значение в фигурных скобках (как был сделано в примере в начале этого раздела).

FORECAST_METHOD – указывает, какой алгоритм используется для анализа и прогнозирования. Возможные значения – ARTXP, ARIMA и MIXED. Значение по умолчанию – MIXED.

PREDICTION_SMOOTHING – указывает, как модель должна использовать сочетание двух алгоритмов для оптимизации прогнозов (имеет смысл, если FORECAST_METHOD установлен в MIXED). Может принимать значения от 0 до 1. 0 – при прогнозировании используется только алгоритм ARTxp. Процесс прогнозирования оптимизируется для небольшого числа прогнозов. 1 – при прогнозировании используется только алгоритм ARIMA. Процесс прогнозирования оптимизируется для большого числа прогнозов. 0,5 (по умолчанию) – указывает, что при прогнозировании используются оба алгоритма, а их результаты объединяются. Этот параметр доступен только в редакции SQL Server 2008 Enterprise (или функционально аналогичной редакции Developer).

HISTORIC_MODEL_COUNT – указывает количество моделей с предысторией, которые будут построены. Эти дополнительные модели обучаются по «обрезанному» временному ряду и могут использо-

96

ваться для анализа точности прогнозирования (более подробно этот процесс описан в литературе [1] и справочной системе SQL Server). Значение по умолчанию – 1. Этот параметр доступен только в редак-

циях SQL Server 2008 Enterprise/Developer.

HISTORICAL_MODEL_GAP – указывает интервал времени между двумя последовательными моделями с предысторией. Значение по умолчанию 10. Это значение выражено в единицах времени, которые определяются моделью. Этот параметр доступен только в редак-

циях SQL Server 2008 Enterprise/Developer.

MAXIMUM_SERIES_VALUE и MINIMUM_SERIES_VALUE

максимальное и минимальное значения, используемые для прогнозов. Например, можно указать, что прогнозируемый объем продаж никогда не должен быть отрицательным числом. Эти параметры доступны только в редакциях SQL Server 2008 Enterprise/Developer.

4.4 АЛГОРИТМ КЛАСТЕРИЗАЦИИ

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

CREATE MINING STRUCTURE Customer_structure ([CustomerKey] LONG KEY,

[MaritalStatus] TEXT DISCRETE,

[TotalChildren] LONG DISCRETE, [Age] LONG CONTINUOUS)

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

ALTER MINING STRUCTURE Customer_structure ADD MINING MODEL Customer_CL

97

([CustomerKey],

[MaritalStatus],

[TotalChildren],

[Age])

USING Microsoft_Clustering (CLUSTER_COUNT=6) WITH DRILLTHROUGH

Требования к данным для модели кластеризации будут следую-

щими [15]:

-каждая модель должна содержать один ключевой числовой или текстовый столбец, применение составных ключей не допускается;

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

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

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

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

ClusterProbability().

//заполнение структуры и ее обработка

INSERT INTO MINING STRUCTURE [Customer_structure] ([CustomerKey], [Age], [MaritalStatus], [TotalChildren])

OPENQUERY ([Adventure Works DW],

'SELECT [CustomerKey], [Age], [MaritalStatus], [TotalChildren] FROM dbo.vTargetMail')

98

//конец обработки структуры

GO

//запрос, возвращающий номер кластера и вероятность

SELECT t.*, Cluster(), ClusterProbability() FROM Customer_CL

NATURAL PREDICTION JOIN 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.

99

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.

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]