Запросы к модели кластеризации последовательностей (службы Analysis Services — интеллектуальный анализ данных)

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

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

Этот раздел посвящен созданию запросов для моделей, основанных на алгоритме кластеризации последовательностей Майкрософт. Общие сведения о создании запросов см. в разделе Запрос моделей интеллектуального анализа данных (службы Analysis Services — интеллектуальный анализ данных).

Запросы содержимого

Использование набора строк схемы интеллектуального анализа данных для определения параметров модели

Получение списка последовательностей для состояния

Использование системных хранимых процедур

Прогнозирующие запросы

Прогноз следующего состояния или состояний

Поиск сведений о модели кластеризации последовательностей

Для создания осмысленных запросов к содержимому модели интеллектуального анализа данных необходимо понимать структуру содержимого модели и знать, какие сведения содержатся в узле каждого типа. Дополнительные сведения см. в разделе Содержимое моделей интеллектуального анализа данных для моделей кластеризации последовательностей (службы Analysis Services — интеллектуальный анализ данных).

Образец запроса 1. Использование набора строк схемы интеллектуального анализа данных для определения параметров модели

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

Следующий запрос возвращает параметры, которые использовались для построения и обучения модели, [Sequence Clustering]. Эта модель создается в ходе занятия 5 учебника Учебник по основам интеллектуального анализа данных.

SELECT MINING_PARAMETERS 
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Sequence Clustering'

Образец результатов:

MINING_PARAMETERS

CLUSTER_COUNT=15,MINIMUM_SUPPORT=10,MAXIMUM_STATES=100,MAXIMUM_SEQUENCE_STATES=64

Следует заметить, что эта модель создавалась с использованием для параметра CLUSTER_COUNT значения по умолчанию, 10. При задании ненулевого числа кластеров для параметра CLUSTER_COUNT алгоритм рассматривает это число как подсказку приблизительного числа кластеров, которое нужно найти. Однако в процессе анализа алгоритм может обнаружить меньшее или большее количество кластеров. В данном случае алгоритм обнаружил, что обучающие данные лучше всего разделить на 15 кластеров. Таким образом, список значений параметров завершенной модели содержит число кластеров, найденное алгоритмом, а не значение, которое было передано при создании модели.

Как это отличается от случая, когда алгоритму позволяют определить наилучшее количество кластеров? В качестве эксперимента можно создать другую модель кластеризации на основе тех же данных, но задать для параметра CLUSTER_COUNT значение 0. Если это сделать, алгоритм обнаружит 32 кластера. Значит, используя для параметра CLUSTER_COUNT значение по умолчанию, 10, можно ограничить количество результатов.

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

Вернуться в начало

Образец запроса 2. Получение списка последовательностей для состояния

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

Например, следующий запрос возвращает полный список первых состояний модели до группирования последовательностей в кластеры. Этот список можно получить, вернув список последовательностей (NODE_TYPE = 13), родителем которых является корневой узел модели (PARENT_UNIQUE_NAME = 0). Применение ключевого слова FLATTENED позволяет облегчить чтение результатов.

ПримечаниеПримечание

Имена столбцов (PARENT_UNIQUE_NAME, Support и Probability) необходимо заключать в скобки, чтобы они отличались от одноименных зарезервированных ключевых слов.

SELECT FLATTENED NODE_UNIQUE_NAME,
(SELECT ATTRIBUTE_VALUE AS [Product 1],
[Support] AS [Sequence Support], 
[Probability] AS [Sequence Probability]
FROM NODE_DISTRIBUTION) AS t
FROM [Sequence Clustering].CONTENT
WHERE NODE_TYPE = 13
AND [PARENT_UNIQUE_NAME] = 0

Частичные результаты:

NODE_UNIQUE_NAME

Product 1

Мощность несущего множества последовательности

Вероятность последовательности

1081327

Отсутствует

0

#######

1081327

Универсальная подставка для велосипеда

17

0.00111

1081327

Мойка велосипедная

64

0.00418

1081327

(строки с 4 по 36 пропущены)

  

  

1081327

Женские шорты Mountain

506

0.03307

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

Например, в результатах предыдущего запроса продукт «Женские шорты Mountain» имеет в модели номер последовательности 37. Эту информацию можно использовать для просмотра всех продуктов, которые когда-либо были куплены после продукта «Женские шорты Mountain».

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

SELECT NODE_UNIQUE_NAME
FROM [Sequence Clustering].CONTENT
WHERE NODE_DESCRIPTION = 'Transition row for sequence state 37'
AND [PARENT_UNIQUE_NAME] = '1081327'

Образец результатов:

NODE_UNIQUE_NAME

1081365

Узел, представленный этим идентификатором, содержит список всех последовательностей, следующих за продуктом «Женские шорты Mountain», а также мощности их несущих множеств и вероятности.

SELECT FLATTENED
(SELECT ATTRIBUTE_VALUE AS Product2,
[Support] AS [P2 Support],
[Probability] AS [P2 Probability]
FROM NODE_DISTRIBUTION) AS t
FROM [Sequence Clustering].CONTENT
WHERE NODE_UNIQUE_NAME = '1081365'

Образец результатов:

t.Product2

t.P2 Support

t.P2 Probability

Отсутствует

230.7419

0.456012

Classic Vest

8.16129

0.016129

Cycling Cap

60.83871

0.120235

Half-Finger Gloves

30.41935

0.060117

Long-Sleeve Logo Jersey

86.80645

0.171554

Racing Socks

28.93548

0.057185

Short-Sleeve Classic Jersey

60.09677

0.118768

Следует заметить, что мощность несущего множества для различных последовательностей, связанных с продуктом «Women's Mountain Shorts», в данной модели равна 506. Сумма мощностей множества значений для перехода также равна 506. Однако эти числа — не целые, что кажется довольно странным, поскольку мощность множества интуитивно представляется просто как количество вариантов, содержащих каждый переход. Однако метод создания кластеров учитывает частичное членство. Поэтому вероятность каждого перехода в кластере должна взвешиваться с помощью вероятности принадлежности к данному конкретному кластеру.

Допустим, кластеров четыре. Конкретная последовательность с вероятностью 40% принадлежит к кластеру 1, с вероятностью 30% — к кластеру 2, с вероятностью 20% — к кластеру 3 и с вероятностью 10% — к кластеру 4. После того как алгоритм определил кластер, которому, скорее всего, принадлежит данный переход, он взвешивает вероятности внутри кластера по априорной вероятности кластера.

В начало

Образец запроса 3. Использование системных хранимых процедур

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

В большинстве случаев информация, которая содержится в средстве просмотра кластеризации последовательностей (Майкрософт), создается посредством запросов к модели с помощью системных хранимых процедур служб Analysis Services. Эту информацию можно получить, создавая запросы расширений интеллектуального анализа данных к содержимому модели. Однако системные хранимые процедуры служб Analysis Services предоставляют более короткий и удобный путь для исследования и тестирования моделей.

ПримечаниеПримечание

Системные хранимые процедуры служат для внутренней обработки на сервере и на клиентах, предоставляемых компанией Майкрософт для взаимодействия с сервером служб Analysis Services. Поэтому компания Майкрософт оставляет за собой право в любое время изменить эти службы. Хотя их описание приводится в данном документе с информационными целями, их использование в рабочей среде не поддерживается. Для обеспечения стабильности и совместимости рабочей среды нужно всегда создавать собственные запросы с помощью расширений интеллектуального анализа данных.

В данном разделе приводятся некоторые образцы использования системных хранимых процедур для создания запросов к модели кластеризации последовательностей.

Профили кластеров и образцы вариантов

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

  • GetClusterProfile возвращает характеристики кластера и всю информацию, которую можно найти в таблице NODE_DISTRIBUTION для данного кластера.

  • GetNodeGraph возвращает узлы и ребра, которые можно использовать для создания математического представления кластеров в качестве диаграммы, подобной той, которая представлена на первой вкладке представления «Кластеризация последовательностей». Узлы представляют собой кластеры, а ребра — веса или интенсивность.

Далее приводится пример использования системной хранимой процедуры, GetClusterProfiles, для возврата всех кластеров модели с их профилями. Хранимая процедура исполняет ряд инструкций DMX, возвращающих полный набор профилей из модели. Однако для использования этой хранимой процедуры нужно знать адрес модели.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterProfiles('Sequence Clustering', 2147483647, 0)

Следующий пример демонстрирует получение профиля конкретного кластера, Cluster 12, с помощью системной хранимой процедуры GetNodeGraph, с передачей ей идентификатора кластера, который обычно совпадает с номером, содержащимся в имени кластера.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','12',0)

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

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','',0)

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

SELECT * FROM [Sequence Clustering].SAMPLE_CASES WHERE IsInNode('12')

Дополнительные сведения см. в разделе SELECT FROM <модель>.SAMPLE_CASES (расширения интеллектуального анализа данных).

Характеристики кластера и сравнение кластеров

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

В следующих примерах используется системная хранимая процедура, GetClusterCharacteristics, для возвращения всех характеристик кластера Cluster 12, оценка вероятности которых превышает заданное пороговое значение 0,0005.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','12',0.0005)

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

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','',0.0005)

В следующем примере системная хранимая процедура GetClusterDiscrimination вызывается для сравнения характеристик кластеров Cluster 1 и Cluster 12.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('Sequence Clustering','1','12',0.0005,true)

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

Переходы и состояния

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

Однако для получения вероятностей и состояний для последовательностей или индивидуальных переходов можно воспользоваться DMX-запросами, описанными в примере 2 данного раздела, Запросы содержимого.

В начало

Создание прогнозов с помощью модели

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

Образец запроса 4. Прогноз следующего состояния или состояний

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

Следующий образец запроса представляет собой одноэлементный прогнозирующий запрос, возвращающий пять наиболее вероятных прогнозов вместе с их вероятностями. Поскольку модель включает в себя вложенную таблицу, при прогнозах нужно использовать вложенную таблицу [v Assoc Seq Line Items] как ссылку на столбец. Кроме того, при передаче входных значений нужно сформировать соединение таблицы вариантов и столбцов вложенной таблицы, как показано во вложенной инструкции SELECT.

SELECT FLATTENED PredictSequence([v Assoc Seq Line Items], 7)
FROM [Sequence Clustering]
NATURAL PREDICTION JOIN
(SELECT  (SELECT 1 as [Line Number],
   'All-Purpose Bike Stand' as [Model]) AS [v Assoc Seq Line Items]) 
AS t

Образец результатов:

Expression.$Sequence

Expression.Line Number

Expression.Model

1

  

Cycling Cap

2

  

Cycling Cap

3

  

Sport-100

4

  

Long-Sleeve logo Jersey

5

  

Half-Finger Gloves

6

  

All-Purpose Bike Stand

7

  

All-Purpose Bike Stand

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

Столбец $sequence — это столбец, возвращаемый по умолчанию функцией PredictSequence для упорядочивания результатов прогноза. Столбец [Line Number] нужен для сопоставления ключей последовательностей в модели, но ключи не выводятся.

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

Значения в строках 6 и 7 представляют собой местозаполнители. При достижении конца цепочки возможных переходов результаты прогнозирования не прекращаются, но значение, переданное в качестве входного, прибавляется к результатам. Например, если увеличить число прогнозов до 20, в строках с 6 по 20 будет содержаться одно и то же значение, «Универсальная подставка для велосипеда».

В начало

Список функций

Все алгоритмы Майкрософт поддерживают общий набор функций. Однако алгоритм кластеризации последовательностей (Майкрософт) поддерживает дополнительные функции, список которых приведен в следующей таблице.

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

См. также

Справочник

Основные понятия