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

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

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

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

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

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

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

    Запрос к модели с помощью системных хранимых процедур

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

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

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

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

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

Для создания осмысленных запросов к содержимому модели интеллектуального анализа данных необходимо понимать структуру содержимого модели и знать, какие сведения содержатся в узле каждого типа. Дополнительные сведения см. в разделе Содержимое моделей интеллектуального анализа данных для моделей кластеризации последовательностей (службы 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

Missing

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 будет содержаться одно и то же значение, «Универсальная подставка для велосипеда».

В начало

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

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

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

Журнал изменений

Обновленное содержимое

Добавлены ссылки, упрощающие просмотр образцов запросов.

Исправлена ошибка в возвращаемых данных для примера 2.

См. также

Справочник

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